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 mediante notifiche 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.
Lambda elabora i messaggi SNS in modo asincrono mettendo in coda i messaggi e gestendo i 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à
avvertimento
Le chiamate asincrone 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 saperne di più, consulta Come posso rendere idempotente la mia funzione Lambda nel Knowledge Center.
Utilità di idempotenza di Powertools per AWS Lambda
L'utilità di idempotenza di Powertools for Lambda rende le funzioni Lambda idempotenti. AWS È disponibile per Python, Java e .NET. TypeScript Per ulteriori informazioni, vedere Idempotency utility nella documentazione di Powertools for AWS Lambda (Python), Idempotency Utility nella documentazione di Powertools for Lambda (), Idempotency Utility nella documentazione di Powertools for AWS Lambda (JavaTypeScript) e Idempotency Utility nella documentazione di Powertools for AWS Lambda (.NET). https://docs.aws.amazon.com/powertools/dotnet/utilities/idempotency/ AWS
Argomenti
Aggiunta di 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 imposta 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)
Aprire la pagina Funzioni
della console Lambda. -
Scegli il nome della funzione per la quale si desidera aggiungere il trigger.
-
Scegli Configurazione, quindi scegli Trigger.
-
Selezionare Add trigger (Aggiungi trigger).
-
In Configurazione del trigger, nell'elenco a discesa, scegli SNS.
-
Per Argomento SNS, scegli l'argomento SNS da sottoscrivere.
Aggiunta manuale di un trigger di argomento Amazon SNS per una funzione Lambda
Per configurare manualmente un trigger SNS per una funzione Lambda, è necessario completare i seguenti passaggi:
-
Definisci una policy basata sulle risorse per la tua funzione per consentire a SNS di richiamarla.
-
Sottoscrivere la funzione Lambda all'argomento Amazon SNS.
Nota
Se l'argomento SNS e la funzione Lambda si trovano in AWS account diversi, devi anche concedere autorizzazioni aggiuntive per consentire le sottoscrizioni all'argomento SNS tra più account. Per maggiori informazioni, consulta Concedere l'autorizzazioni tra account per la sottoscrizione di Amazon SNS.
Puoi usare AWS Command Line Interface (AWS CLI) per completare entrambi questi passaggi. Innanzitutto, per definire una policy basata sulle risorse per una funzione Lambda che consenta le chiamate SNS, usa il comando AWS CLI seguente. Assicurati di sostituire il valore di --function-name con il nome della funzione Lambda e il valore di --source-arn con l'ARN dell'argomento SNS.
aws lambda add-permission --function-nameexample-function\ --source-arnarn: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 seguente AWS CLI comando. Assicurati di sostituire il valore di --topic-arn con l'ARN dell'argomento SNS e il valore di --notification-endpoint con l'ARN della funzione Lambda.
aws sns subscribe --protocol lambda \ --region us-east-1 \ --topic-arnarn:aws:sns:us-east-1:123456789012:sns-topic-for-lambda\ --notification-endpointarn:aws:lambda:us-east-1:123456789012:function:example-function
Esempio di forma 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" } } ] }