Como faço para inscrever um endpoint HTTP ou HTTPS privado em um tópico do Amazon SNS?

4 minuto de leitura
0

Quero inscrever um endpoint HTTP ou HTTPS privado em um tópico do Amazon Simple Notification Service (Amazon SNS). Como faço para configurar isso?

Breve descrição

Para inscrever um endpoint HTTP ou HTTPS privado em um tópico do Amazon SNS, faça o seguinte:

Resolução

Crie um grupo de segurança da Amazon VPC (LambdaSG) na mesma Amazon VPC do endpoint privado

1.    Abra o console da Amazon VPC.

2.    No painel de navegação esquerdo, em Segurança, escolha Grupos de segurança. Em seguida, escolha Criar grupo de segurança.

3.    Em Nome do grupo de segurança, insira LambdaSG.

4.    Em VPC, escolha a Amazon VPC em que o endpoint está.

5.    Escolha Criar grupo de segurança.

Crie uma função do Lambda dentro da mesma Amazon VPC e sub-rede do endpoint privado e adicione-a ao grupo de segurança LambdaSG

1.    Abra o console do Lambda.

2.    Escolha Criar função.

3.    Escolha Criar do zero.

4.    Em Nome da função, insira um nome que descreva a finalidade da sua função. Por exemplo, Private-endpoint-Amazon-SNS-topic-subscription.

5.    Em Runtime, escolha Python 3.8.

6.    Escolha Configurações avançadas.

7.    Em VPC - opcional, escolha a Amazon VPC em que o endpoint privado está. As listas suspensas de Sub-redes e Grupos de segurança serão exibidas.

8.    Em Sub-redes, escolha a sub-rede em que o endpoint privado está.

9.    Em grupos de segurança, escolha LambdaSG.

10.    Escolha Criar função.

Edite as regras do grupo de segurança do endpoint privado para permitir a conexão de entrada do grupo de segurança da função do Lambda

1.    Abra o console da Amazon VPC.

2.    No painel de navegação esquerdo, em Segurança, escolha Grupos de segurança.

3.    Escolha o nome do grupo de segurança do endpoint privado.

4.    Escolha Editar regras de entrada.

5.    Em Tipo, escolha HTTP ou HTTPS, dependendo do seu caso de uso. Os campos Protocolo e Intervalo de portas são preenchidos automaticamente.

6.    Em Fonte, escolha Personalizado. Em seguida, escolha o grupo de segurança LambdaSG.

7.    Escolha Salvar regras.

Configure a função do Lambda para que ela passe as notificações recebidas do Amazon SNS para o endpoint privado

1.    Crie um pacote de implantação do Lambda que inclua a biblioteca de solicitações Python da função do Lambda. Siga as instruções em Criar o pacote de implantação no Tutorial: Criação de uma função do Lambda no Python 3.8. Na etapa 3, substitua o código fornecido no tutorial pelo seguinte exemplo de trecho de código.

Trecho de código Python que usa a biblioteca de solicitações para publicar as notificações recebidas do Amazon SNS no endpoint privado

Importante: substitua o valor do URL pelo URL do seu endpoint privado.

import json
import requests

def lambda_handler(event, context):
    url = "<PRIVATE_HTTP/S_ENDPOINT_URL>"

    sns_message_payload = event["Records"][0]["Sns"]

    sns_message_headers = {
        "x-amz-sns-message-id": sns_message_payload['MessageId'],
        "x-amz-sns-message-type": sns_message_payload["Type"],
        "x-amz-sns-subscription-arn" : event["Records"][0]["EventSubscriptionArn"],
        "x-amz-sns-topic-arn" : sns_message_payload["TopicArn"]
    }

    try:
        r = requests.post(url = url, data = json.dumps(sns_message_payload), headers = sns_message_headers)
    except Exceptions as e:
        print(e)

    print(r.content)

    return {
        'statusCode': 200,
        'body': json.dumps(r.content)
    }

2.    Use o pacote de implantação para atualizar a função do Lambda criada anteriormente.

Inscreva a função do Lambda em seu tópico do Amazon SNS

Siga as instruções em Como fazer para inscrever uma função do Lambda em um tópico do Amazon SNS na mesma conta?


AWS OFICIAL
AWS OFICIALAtualizada há 2 anos