Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Aufrufen von Lambda-Ereignisfunktionen mit Amazon SNS SNS-Benachrichtigungen
Sie können eine Lambda-Ereignisfunktion verwenden, um Amazon Simple Notification Service (Amazon SNS) -Benachrichtigungen zu verarbeiten. Amazon SNS unterstützt Lambda Event Functions als Ziel für Nachrichten, die an ein Thema gesendet werden. Sie können Ihre Funktion für Themen in demselben Konto oder in anderen AWS -Konten abonnieren. Eine ausführliche exemplarische Vorgehensweise finden Sie unter Tutorial: Verwenden AWS Lambda mit Amazon Simple Notification Service.
Lambda unterstützt SNS-Auslöser nur für standardmäßige SNS-Themen. FIFO-Themen werden nicht unterstützt.
Lambda verarbeitet SNS-Nachrichten asynchron, indem die Nachrichten in eine Warteschlange gestellt und Wiederholungsversuche verarbeitet werden. Wenn Amazon SNS Lambda nicht erreichen kann, oder die Nachricht abgelehnt wird, wiederholt Amazon SNS den Vorgang in zunehmenden Intervallen über mehrere Stunden. Weitere Details finden Sie unter Zuverlässigkeit
Warnung
Asynchrone Lambda-Aufrufe verarbeiten jedes Ereignis mindestens einmal und es kann zu einer doppelten Verarbeitung von Datensätzen kommen. Um mögliche Probleme im Zusammenhang mit doppelten Ereignissen zu vermeiden, empfehlen wir Ihnen dringend, Ihren Funktionscode idempotent zu machen. Weitere Informationen finden Sie im Knowledge Center unter Wie mache ich meine Lambda-Funktion idempotent
Das Hilfsprogramm Idempotenz von Powertools für AWS Lambda
Das Idempotenz-Hilfsprogramm von Powertools for AWS Lambda macht Ihre Lambda Event Functions idempotent. Es ist für Python TypeScript, Java und .NET verfügbar. Weitere Informationen finden Sie unter Idempotenz-Hilfsprogramm in der Powertools for AWS Lambda (Python) -Dokumentation, Idempotenz-Hilfsprogramm in der Powertools for AWS Lambda () -Dokumentation, Idempotenz-Hilfsprogramm in der Powertools for Lambda (JavaTypeScript) -Dokumentation und Idempotenz-Hilfsprogramm in der Powertools for AWS Lambda (.NET) -Dokumentation. AWS
Themen
Hinzufügen eines Amazon SNS SNS-Themenauslösers für eine Lambda-Ereignisfunktion mithilfe der Konsole
Um ein SNS-Thema als Auslöser für eine Lambda-Ereignisfunktion hinzuzufügen, verwenden Sie am einfachsten die Lambda-Konsole. Wenn Sie den Trigger über die Konsole hinzufügen, richtet Lambda automatisch die erforderlichen Berechtigungen und Abonnements ein, um Ereignisse aus dem SNS-Thema zu empfangen.
So fügen Sie ein SNS-Thema als Auslöser für eine Lambda-Ereignisfunktion hinzu (Konsole)
Öffnen Sie die Seite Event Functions
der Lambda-Konsole. -
Wählen Sie den Namen einer Funktion, für die Sie den Auslöser hinzufügen möchten.
-
Wählen Sie Konfiguration und anschließend Auslöser aus.
-
Wählen Sie Add trigger.
-
Wählen Sie unter Auslöserkonfiguration im Dropdown-Menü die Option SNS aus.
-
Wählen Sie für das SNS-Thema das SNS-Thema, das Sie abonnieren möchten.
Manuelles Hinzufügen eines Amazon SNS SNS-Themenauslösers für eine Lambda-Ereignisfunktion
Um einen SNS-Trigger für eine Lambda-Ereignisfunktion manuell einzurichten, müssen Sie die folgenden Schritte ausführen:
-
Definieren Sie eine ressourcenbasierte Richtlinie für Ihre Funktion, damit SNS sie aufrufen kann.
-
Abonnieren Sie Ihre Lambda Event Function für das Amazon SNS SNS-Thema.
Anmerkung
Wenn sich Ihr SNS-Thema und Ihre Lambda-Ereignisfunktion in unterschiedlichen AWS Konten befinden, müssen Sie auch zusätzliche Berechtigungen gewähren, um kontoübergreifende Abonnements für das SNS-Thema zuzulassen. Weitere Informationen finden Sie unter Kontoübergreifende Berechtigung für Amazon-SNS-Abonnement erteilen.
Sie können das AWS Command Line Interface (AWS CLI) verwenden, um diese beiden Schritte abzuschließen. Verwenden Sie zunächst den folgenden Befehl, um eine ressourcenbasierte Richtlinie für eine Lambda-Ereignisfunktion zu definieren, die SNS-Aufrufe zulässt. AWS CLI Achten Sie darauf, den Wert von --function-name durch den Namen Ihrer Lambda-Ereignisfunktion und den Wert von --source-arn durch den ARN Ihres SNS-Themas zu ersetzen.
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
Verwenden Sie den folgenden Befehl, um das SNS-Thema für Ihre Funktion zu abonnieren. AWS CLI Ersetzen Sie den Wert von --topic-arn durch Ihren SNS-Thema-ARN und den Wert von --notification-endpoint durch Ihren Lambda Event Function ARN.
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
Beispiel für eine SNS-Eventform
Amazon SNS ruft Ihre Funktion asynchron mit einem Ereignis auf, das eine Nachricht und Metadaten enthält.
Beispiel Amazon-SNS-Nachrichtenereignis
{ "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" } } ] }