Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Invocar funções do Lambda com notificações do Amazon SNS

Modo de foco
Invocar funções do Lambda com notificações do Amazon SNS - AWS Lambda

Você pode usar uma função do Lambda para processar notificações do Amazon Simple Notification Service (Amazon SNS). O Amazon SNS oferece suporte às funções do Lambda como destino para mensagens enviadas para um tópico. É possível inscrever a sua função em tópicos na mesma conta ou em outras contas da AWS. Para obter uma descrição detalhada, consulte Tutorial: usar o AWS Lambda com o Amazon Simple Notification Service.

O Lambda oferece suporte a acionadores do SNS somente para tópicos do SNS padrão. Não há suporte a tópicos FIFO.

O Lambda processa mensagens do SNS de forma assíncrona, enfileirando as mensagens e lidando com novas tentativas. Se o Amazon SNS não puder acessar o Lambda ou se a mensagem for rejeitada, o Amazon SNS tentará novamente em intervalos crescentes ao longo de várias horas. Para obter detalhes, consulte Confiabilidade nas Perguntas frequentes do Amazon SNS.

Atenção

Os mapeamentos da origem do evento do Lambda processam cada evento ao menos uma vez, podendo haver o processamento duplicado de registros. Para evitar possíveis problemas relacionados a eventos duplicados, é altamente recomendável tornar o código da função idempotente. Para saber mais, consulte Como tornar minha função do Lambda idempotente no Centro de Conhecimentos da AWS.

Adicionar um acionador de tópico do Amazon SNS para uma função do Lambda usando o console

Para adicionar um tópico do SNS como acionador de uma função do Lambda, a maneira mais fácil é usar o console do Lambda. Quando você adiciona o acionador por meio do console, o Lambda configura automaticamente as permissões e assinaturas necessárias para começar a receber eventos do tópico do SNS.

Para adicionar um tópico do SNS como acionador para uma função do Lambda (console)
  1. Abra a página Funções do console do Lambda.

  2. Escolha o nome da função à qual você deseja adicionar o acionador.

  3. Escolha Configuração e, em seguida, escolha Acionadores.

  4. Escolha Add trigger.

  5. Em Configuração do acionador, no menu suspenso, escolha SNS.

  6. Em Tópico do SNS, escolha o tópico do SNS para assinar.

Adicionar manualmente um acionador de tópico do Amazon SNS para uma função do Lambda

Para configurar manualmente um acionador do SNS para uma função do Lambda, é necessário concluir as seguintes etapas:

  • Definir uma política baseada em recurso para a sua função para permitir que o SNS a invoque.

  • Inscrever a função do Lambda no tópico do Amazon SNS.

    nota

    Se seu tópico do SNS e sua função do Lambda estiverem em contas da AWS diferentes, também será necessário conceder permissões extras para permitir assinaturas entre contas do tópico do SNS. Para obter mais informações, consulte Concede permissões entre contas para assinatura do Amazon SNS.

Você pode usar o AWS Command Line Interface (AWS CLI) para concluir essas duas etapas. Primeiro, para definir uma política baseada em recursos para uma função do Lambda que permita invocações do SNS, use o comando da AWS CLI a seguir. Certifique-se de substituir o valor de --function-name pelo nome da função do Lambda e o valor de --source-arn pelo ARN do tópico do SNS.

aws lambda add-permission --function-name example-function \ --source-arn arn:aws:sns:us-east-1:123456789012:sns-topic-for-lambda \ --statement-id function-with-sns --action "lambda:InvokeFunction" \ --principal sns.amazonaws.com

Para inscrever sua função no tópico do SNS, use o comando da AWS CLI a seguir. Substitua o valor de --topic-arn pelo ARN do tópico do SNS e o valor de --notification-endpoint pelo ARN da função do Lambda.

aws sns subscribe --protocol lambda \ --region us-east-1 \ --topic-arn arn:aws:sns:us-east-1:123456789012:sns-topic-for-lambda \ --notification-endpoint arn:aws:lambda:us-east-1:123456789012:function:example-function

Exemplo de formato de evento do SNS

O Amazon SNS invoca a função de forma assíncrona com um evento que contém uma mensagem e metadados.

exemplo Evento da mensagem do Amazon SNS
{ "Records": [ { "EventVersion": "1.0", "EventSubscriptionArn": "arn:aws:sns:us-east-1:123456789012:sns-lambda:21be56ed-a058-49f5-8c98-aedd2564c486", "EventSource": "aws:sns", "Sns": { "SignatureVersion": "1", "Timestamp": "2019-01-02T12:45:07.000Z", "Signature": "tcc6faL2yUC6dgZdmrwh1Y4cGa/ebXEkAi6RibDsvpi+tE/1+82j...65r==", "SigningCertURL": "https://sns.us-east-1.amazonaws.com/SimpleNotificationService-ac565b8b1a6c5d002d285f9598aa1d9b.pem", "MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e", "Message": "Hello from SNS!", "MessageAttributes": { "Test": { "Type": "String", "Value": "TestString" }, "TestBinary": { "Type": "Binary", "Value": "TestBinary" } }, "Type": "Notification", "UnsubscribeUrl": "https://sns.us-east-1.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-1:123456789012:test-lambda:21be56ed-a058-49f5-8c98-aedd2564c486", "TopicArn":"arn:aws:sns:us-east-1:123456789012:sns-lambda", "Subject": "TestInvoke" } } ] }
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.