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

3 minuto de leitura
0

Quero inscrever um endpoint HTTP ou HTTPS privado em um tópico do Amazon Simple Notification Service (Amazon SNS).

Resolução

Para inscrever um endpoint HTTP ou HTTPS privado em um tópico do Amazon SNS, siga as etapas a seguir.

Criar 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 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 nuvem privada virtual (VPC) da Amazon na qual o endpoint privado está.
  5. Escolha Criar grupo de segurança.

Criar uma função do Lambda dentro da mesma Amazon VPC e sub-rede do endpoint privado e configurá-la no 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.12.
  6. Escolha Configurações adicionais. Em seguida, selecione Ativar VPC.
  7. Em VPC, escolha a sub-rede em que o endpoint privado está.
  8. Escolha Criar função.

Editar 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 em Segurança, escolha Grupos de segurança.
  3. Em Grupos de segurança, escolha o grupo de segurança do endpoint privado.
  4. Escolha Editar regras de entrada.
  5. Em Tipo, escolha ** HTTP** ou HTTPS. Os campos Protocolo e Intervalo de portas são preenchidos automaticamente.
  6. Em Origem, escolha Personalizado. Em seguida, escolha o grupo de segurança LambdaSG.
  7. Selecione Salvar regras.

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

  1. Abra o console do Lambda.
  2. No painel de navegação, escolha Funções.
  3. Em Nome da função, escolha a função que você criou anteriormente.
  4. Em Origem de código, substitua o código padrão pelo código a seguir:
    from __future__ import print_function
    import json
    import urllib3
    
    http = urllib3.PoolManager()
    
    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 = http.request('POST', url, headers=sns_message_headers, body=json.dumps(sns_message_payload))
            print(r.data)
        except Exception as e:
            print(e)
    Importante: substitua o valor do URL pelo URL do seu endpoint privado.
  5. Escolha Implantar.

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

Para obter mais informações, consulte Tutorial: usar o Lambda com o Amazon SNS.

AWS OFICIAL
AWS OFICIALAtualizada há 5 meses