Abonnieren Sie eine Lambda-Funktion für Ereignisbenachrichtigungen von S3-Buckets in verschiedenen Regionen AWS - 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 Regionen AWS

Erstellt von Suresh Konathala, Andrew Preston und Arindom Sarkar

Umwelt: Produktion

Technologien: Analytik

AWSDienste: AWS Lambda; Amazon S3; AmazonSNS; 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-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 verwendet ein Fanout-Szenario zur Verarbeitung von Amazon S3 S3-Benachrichtigungen aus regionsübergreifenden S3-Buckets mithilfe eines Amazon Simple Notification Service (AmazonSNS) -Themas für jede Region. Diese regionalen SNS Themen senden die Amazon S3 S3-Ereignisbenachrichtigungen an eine Amazon Simple Queue Service (AmazonSQS) -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 AmazonSNS, S3 und SQS zur Verarbeitung von Ereignisbenachrichtigungen aus regionsübergreifenden S3-Buckets.

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

  • AWSCLI— Die AWS Befehlszeilenschnittstelle (AWSCLI) ist ein Open-Source-Tool für die Interaktion mit AWS Diensten über Befehle in Ihrer Befehlszeilen-Shell. Mit minimaler Konfiguration können Sie AWS CLI Befehle, die Funktionen implementieren, die denen der browserbasierten AWS Managementkonsole entsprechen, 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 Stapel 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.

  • AWSLambda — AWS Lambda ist ein Rechendienst, 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 (AmazonSNS) 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 (AmazonSQS) 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 Management Console 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 in der SNS Amazon-Dokumentation unter SNSThema erstellen

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

AWS DevOps, Cloud-Architekt

Abonnieren Sie das SNS Thema in der zentralen SQS Warteschlange.

Abonnieren Sie Ihr SNS Thema in der SQS Warteschlange, die von Ihrer zentralen Region bereitgestellt wird. Weitere Informationen dazu finden Sie in der SNS Amazon-Dokumentation unter Ein SNS Thema abonnieren.

AWS DevOps, Cloud-Architekt

Aktualisieren Sie die Zugriffsrichtlinie des SNS Themas.

  1. Öffnen Sie die SNS Amazon-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. Hängen Sie Ihrem SNS Thema die folgende Zugriffsrichtlinie an, 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 SNS das Thema aus und geben Sie das SNS Thema ARN an, das Sie zuvor erstellt haben.

AWS DevOps, Cloud-Architekt

Wiederhole 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