Abonnieren Sie eine Lambda-Funktion für Ereignisbenachrichtigungen von S3-Buckets in verschiedenen AWS-Regionen - AWS Prescriptive Guidance

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.

Abonnieren Sie eine Lambda-Funktion für Ereignisbenachrichtigungen von S3-Buckets in verschiedenen AWS-Regionen

Erstellt von Suresh Konathala, Andrew Preston und Arindom Sarkar

Umwelt: Produktion

Technologien: Analytik

AWS-Dienste: AWS Lambda; Amazon S3; Amazon SNS; Amazon SQS

Übersicht

Amazon Simple Storage Service (Amazon S3) Event Notifications veröffentlicht Benachrichtigungen für bestimmte Ereignisse in Ihrem S3-Bucket (z. B. Ereignisse, die durch Objekte erstellt wurden, Objekte entfernt oder Objekte wiederhergestellt). Sie können eine AWS Lambda Lambda-Funktion verwenden, um diese Benachrichtigungen gemäß den Anforderungen Ihrer Anwendung zu verarbeiten. Die Lambda-Funktion kann jedoch Benachrichtigungen von S3-Buckets, die in verschiedenen AWS-Regionen gehostet werden, nicht direkt abonnieren.

Der Ansatz dieses Musters stellt ein Fanout-Szenario zur Verarbeitung von Amazon S3 S3-Benachrichtigungen aus regionsübergreifenden S3-Buckets mithilfe eines Amazon Simple Notification Service (Amazon SNS) -Themas für jede Region bereit. Diese regionalen SNS-Themen senden die Amazon S3 S3-Ereignisbenachrichtigungen an eine Amazon Simple Queue Service (Amazon SQS) -Warteschlange in einer zentralen Region, die auch Ihre Lambda-Funktion enthält. Die Lambda-Funktion abonniert diese SQS-Warteschlange und verarbeitet die Ereignisbenachrichtigungen gemäß den Anforderungen Ihres Unternehmens.

Voraussetzungen und Einschränkungen

Voraussetzungen

Architektur

Das folgende Diagramm zeigt die Architektur für den Ansatz dieses Musters. 

Workflow verwendet Amazon SNS, S3 und SQS, um Ereignisbenachrichtigungen aus regionsübergreifenden S3-Buckets zu verarbeiten.

Das Diagramm zeigt den folgenden Workflow:

  1. Amazon S3 sendet Ereignisbenachrichtigungen über S3-Buckets (z. B. erstelltes, entferntes Objekt oder wiederhergestelltes Objekt) an ein SNS-Thema in derselben Region.

  2. Das SNS-Thema veröffentlicht das Ereignis in einer SQS-Warteschlange in der Zentralregion.

  3. Die SQS-Warteschlange ist als Ereignisquelle für Ihre Lambda-Funktion konfiguriert und puffert die Ereignisnachrichten für die Lambda-Funktion. 

  4. Die Lambda-Funktion fragt die SQS-Warteschlange nach Nachrichten ab und verarbeitet die Amazon S3 S3-Ereignisbenachrichtigungen gemäß den Anforderungen Ihrer Anwendung.

Technologie-Stack

  • Lambda

  • Amazon SNS

  • Amazon SQS

  • Amazon S3

Tools

  • AWS CLI — Die AWS-Befehlszeilenschnittstelle (AWS CLI) ist ein Open-Source-Tool für die Interaktion mit AWS-Services über Befehle in Ihrer Befehlszeilen-Shell. Mit minimaler Konfiguration können Sie AWS-CLI-Befehle, die Funktionen implementieren, die denen entsprechen, die von der browserbasierten AWS-Managementkonsole bereitgestellt werden, von einer Befehlszeile aus ausführen.

  • AWS CloudFormation — AWS CloudFormation hilft Ihnen dabei, Ihre AWS-Ressourcen zu modellieren und einzurichten, sie schnell und konsistent bereitzustellen und sie während ihres gesamten Lebenszyklus zu verwalten. Sie können eine Vorlage verwenden, um Ihre Ressourcen und ihre Abhängigkeiten zu beschreiben und sie zusammen als Stack zu starten und zu konfigurieren, anstatt Ressourcen einzeln zu verwalten. Sie können Stacks für mehrere AWS-Konten und AWS-Regionen verwalten und bereitstellen.

  • AWS Lambda — AWS Lambda ist ein Rechenservice, der die Ausführung von Code unterstützt, ohne Server bereitzustellen oder zu verwalten. Lambda führt Ihren Code nur bei Bedarf aus und skaliert automatisch – von einigen Anforderungen pro Tag bis zu Tausenden pro Sekunde. Sie bezahlen nur für die Datenverarbeitungszeit, die Sie wirklich nutzen und es werden keine Gebühren in Rechnung gestellt, wenn Ihr Code nicht ausgeführt wird.

  • Amazon SNS — Amazon Simple Notification Service (Amazon SNS) koordiniert und verwaltet die Zustellung oder den Versand von Nachrichten zwischen Herausgebern und Kunden, einschließlich Webservern und E-Mail-Adressen. Abonnenten erhalten die veröffentlichten Mitteilungen zu den Themen, die sie abonniert haben. Alle Abonnenten eines Themas erhalten dieselben Mitteilungen.

  • Amazon SQS — Amazon Simple Queue Service (Amazon SQS) bietet eine sichere, dauerhafte und verfügbare gehostete Warteschlange, mit der Sie verteilte Softwaresysteme und -komponenten integrieren und entkoppeln können. Amazon SQS unterstützt sowohl Standard- als auch FIFO-Warteschlangen.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie eine SQS-Warteschlange mit einem Lambda-Trigger.

Melden Sie sich bei der AWS-Managementkonsole an und verwenden Sie die Anweisungen aus dem Tutorial Using Lambda with Amazon SQS in der AWS Lambda-Dokumentation, um die folgenden Ressourcen in Ihrer zentralen Region zu erstellen:

  • Eine Lambda-Ausführungsrolle

  • Eine Lambda-Funktion zur Verarbeitung der Amazon S3 S3-Ereignisse

  • Eine SQS-Warteschlange

Hinweis: Stellen Sie sicher, dass Sie die SQS-Warteschlange als Ereignisquelle für Ihre Lambda-Funktion konfigurieren.

AWS DevOps, Cloud-Architekt
AufgabeBeschreibungErforderliche Fähigkeiten

Erstellen Sie ein SNS-Thema, um Amazon S3 S3-Ereignisbenachrichtigungen zu erhalten.

Erstellen Sie ein SNS-Thema in einer Region, von der Sie Amazon S3 S3-Ereignisbenachrichtigungen erhalten möchten. Weitere Informationen dazu finden Sie unter dem Thema Creating an SNS in der Amazon SNS SNS-Dokumentation. 

Wichtig: Stellen Sie sicher, dass Sie den Amazon-Ressourcennamen (ARN) Ihres SNS-Themas aufzeichnen. 

AWS DevOps, Cloud-Architekt

Abonnieren Sie das SNS-Thema für die zentrale SQS-Warteschlange.

Abonnieren Sie Ihr SNS-Thema für die SQS-Warteschlange, die von Ihrer zentralen Region gehostet wird. Weitere Informationen dazu finden Sie unter dem Thema Abonnieren eines SNS in der Amazon SNS SNS-Dokumentation.

AWS DevOps, Cloud-Architekt

Aktualisieren Sie die Zugriffsrichtlinie des SNS-Themas.

  1. Öffnen Sie die Amazon SNS SNS-Konsole, wählen Sie Themen und dann das SNS-Thema aus, das Sie zuvor erstellt haben.

  2. Wählen Sie Bearbeiten und erweitern Sie dann den Abschnitt Zugriffsrichtlinie — optional.

  3. Fügen Sie Ihrem SNS-Thema die folgende Zugriffsrichtlinie bei, um die sns:publish Erlaubnis für Amazon S3 zu gewähren, und wählen Sie dann Speichern aus:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "0", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-west-2::s3Events-SNSTopic-us-west-2" } ] }
AWS DevOps, Cloud-Architekt

Richten Sie Benachrichtigungen für jeden S3-Bucket in der Region ein.

Richten Sie Ereignisbenachrichtigungen für jeden S3-Bucket in der Region ein. Weitere Informationen dazu finden Sie unter Aktivieren und Konfigurieren von Ereignisbenachrichtigungen mithilfe der Amazon S3 S3-Konsole in der Amazon S3 S3-Dokumentation.

Hinweis: Wählen Sie im Abschnitt Ziel das SNS-Thema aus und geben Sie den ARN des SNS-Themas an, das Sie zuvor erstellt haben.

AWS DevOps, Cloud-Architekt

Wiederholen Sie dieses Epos für alle erforderlichen Regionen.

Wichtig: Wiederholen Sie die Aufgaben in diesem Epos für jede Region, aus der Sie Amazon S3 S3-Ereignisbenachrichtigungen erhalten möchten, einschließlich Ihrer zentralen Region.

AWS DevOps, Cloud-Architekt

Zugehörige Ressourcen