Como faço para inscrever um endpoint HTTP ou HTTPS privado em um tópico do Amazon SNS?
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:
- Crie um grupo de segurança da Amazon Virtual Private Cloud (Amazon VPC) (LambdaSG) na mesma Amazon VPC do endpoint privado.
- Crie uma função do AWS Lambda dentro da mesma Amazon VPC e sub-rede do endpoint privado e adicione-a ao grupo de segurança LambdaSG.
- 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.
- Configure a função do Lambda para que ela passe as notificações recebidas do Amazon SNS para o endpoint privado.
- Inscreva a função do Lambda em seu tópico do Amazon SNS.
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?

Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 6 meses
- AWS OFICIALAtualizada há um ano