AWS Lambda
Guia do desenvolvedor

Uso do AWS Lambda com o Amazon SNS

É possível usar uma função Lambda para processar notificações do Amazon Simple Notification Service. O Amazon SNS oferece suporte às funções Lambda como destino para mensagens enviadas para um tópico. É possível inscrever sua função em tópicos na mesma conta ou em outras contas da AWS.

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

exemplo Evento de mensagem do Amazon SNS

{ "Records": [ { "EventVersion": "1.0", "EventSubscriptionArn": "arn:aws:sns:us-east-2: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-2.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-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-east-2:123456789012:test-lambda:21be56ed-a058-49f5-8c98-aedd2564c486", "TopicArn":"arn:aws:sns:us-east-2:123456789012:sns-lambda", "Subject": "TestInvoke" } } ] }

Para invocação assíncrona, o Lambda enfileira a mensagem e processa novas tentativas. Se o Amazon SNS não conseguir 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.

Para executar entregas do Amazon SNS entre contas para o Lambda, você precisa autorizar sua função do Lambda para ser invocada no Amazon SNS. Por sua vez, o Amazon SNS precisa permitir que a conta do Lambda assine o tópico do Amazon SNS. Por exemplo, se o tópico do Amazon SNS estiver em uma conta A e a função do Lambda estiver em uma conta B, as duas contas deverão conceder permissões para a outra para acesso a seus respectivos recursos. Como nem todas as opções para configurar permissões entre contas estão disponíveis no console da AWS, você pode usar a CLI da AWS para configurar todo o processo.

Para obter mais informações, consulte Invocar funções do Lambda usando notificações do Amazon SNS no Guia do desenvolvedor do Amazon Simple Notification Service.