Como usar o Lambda com o Amazon SNS - AWS Lambda

Como usar o Lambda com o Amazon SNS

Você pode usar uma função Lambda para processar notificações do Amazon Simple Notification Service (Amazon SNS). O Amazon SNS oferece suporte a funções Lambda como destino para mensagens enviadas a um tópico. É possível inscrever a 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 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.

Para executar entregas do Amazon SNS entre contas para o Lambda, você deve autorizar o Amazon SNS para invocar a sua função Lambda. Por sua vez, o Amazon SNS deve permitir que a conta da AWS com a função Lambda possa subscrever o tópico de 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 de gerenciamento da AWS, você deve usar a AWS Command Line Interface (AWS CLI) para a configuração.

Para obter mais informações, consulte Fanout para funções Lambda no Guia do desenvolvedor do Amazon Simple Notification Service.

Tipos de entrada para eventos do Amazon SNS

Para exemplos de tipo de entrada para eventos do Amazon SNS em Java, .NET e Go, consulte o seguinte no repositório do GitHub da AWS: