Richiamo di funzioni Lambda con le notifiche di Amazon SNS - AWS Lambda

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Richiamo di funzioni Lambda con le notifiche di Amazon SNS

Si può utilizzare una funzione Lambda per elaborare le notifiche Amazon Simple Notification Service (Amazon SNS). Amazon SNS supporta le funzioni Lambda come destinazione per i messaggi inviati a un argomento. Puoi sottoscrivere la funzione ad argomenti nello stesso account o in altri account AWS . Per la procedura guidata dettagliata, consulta Tutorial: Utilizzo AWS Lambda con Amazon Simple Notification Service.

Lambda supporta i trigger SNS solo per argomenti SNS standard. Gli argomenti FIFO non sono supportati.

Per l'invocazione asincrona, Lambda mette in coda il messaggio e gestisce i nuovi tentativi. Se Amazon SNS non è in grado di raggiungere Lambda o il messaggio viene rifiutato, Amazon SNS riprova a intervalli crescenti per diverse ore. Per ulteriori informazioni, consulta Affidabilità nelle domande frequenti su Amazon SNS.

avvertimento

Le mappature delle sorgenti degli eventi Lambda elaborano ogni evento almeno una volta e può verificarsi un'elaborazione duplicata dei record. Per evitare potenziali problemi legati agli eventi duplicati, ti consigliamo vivamente di rendere idempotente il codice della funzione. Per ulteriori informazioni, consulta Come posso rendere idempotente la mia funzione Lambda nel Knowledge Center. AWS

Aggiungere un trigger di argomento Amazon SNS per una funzione Lambda utilizzando la console

Per aggiungere un argomento SNS come trigger per una funzione Lambda, il modo più semplice è utilizzare la console Lambda. Quando aggiungi il trigger tramite la console, Lambda configura automaticamente le autorizzazioni e gli abbonamenti necessari per iniziare a ricevere eventi dall'argomento SNS.

Per aggiungere un argomento SNS come trigger per una funzione Lambda (console)
  1. Aprire la pagina Funzioni della console Lambda.

  2. Scegli il nome di una funzione per la quale desideri aggiungere il trigger.

  3. Scegli Configurazione, quindi scegli Trigger.

  4. Selezionare Add trigger (Aggiungi trigger).

  5. In Configurazione Trigger, nel menu a discesa, scegli SNS.

  6. Per l'argomento SNS, scegli l'argomento SNS a cui iscriverti.

Aggiungere manualmente un trigger di argomento Amazon SNS per una funzione Lambda

Per configurare manualmente un trigger SNS per una funzione Lambda, devi completare i seguenti passaggi:

  • Definisci una policy basata sulle risorse per la tua funzione per consentire a SNS di richiamarla.

  • Sottoscrivi la tua funzione Lambda all'argomento Amazon SNS.

    Nota

    Se l'argomento SNS e la funzione Lambda si trovano in account AWS diversi, è inoltre necessario concedere autorizzazioni aggiuntive per consentire le sottoscrizioni tra account all'argomento SNS. Per ulteriori informazioni, consulta Concedere l'autorizzazione per più account per l'abbonamento ad Amazon SNS.

Puoi usare il AWS Command Line Interface (AWS CLI) per completare entrambi questi passaggi. Innanzitutto, per definire una politica basata sulle risorse per una funzione Lambda che consenta le chiamate SNS, usa il comando seguente. AWS CLI Assicurati di sostituire il valore di --function-name con il nome della funzione Lambda e il valore di --source-arn con l'argomento SNS ARN.

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

Per iscrivere la tua funzione all'argomento SNS, usa il comando seguente. AWS CLI Sostituisci il valore di --topic-arn con il tuo argomento SNS ARN e il valore --notification-endpoint di con la funzione Lambda ARN.

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

Esempio di forma dell'evento SNS

Amazon SNS richiama la funzione in modo asincrono con un evento che contiene un messaggio e dei metadati.

Esempio Evento messaggio di 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" } } ] }