Walkthrough: Konfigurieren eines Buckets für Benachrichtigungen (SNS-Thema oder SQS-Warteschlange) - Amazon Simple Storage Service

Walkthrough: Konfigurieren eines Buckets für Benachrichtigungen (SNS-Thema oder SQS-Warteschlange)

Sie können Amazon-S3-Benachrichtigungen über den Amazon Simple Notification Service (Amazon SNS) oder den Amazon Simple Queue Service (Amazon SQS) erhalten. In diesem Walkthrough fügen Sie Ihrem Bucket eine Benachrichtigungskonfiguration mit einem Amazon SNS-Thema und einer Amazon SQS-Warteschlange hinzu.

Anmerkung

FIFO-Warteschlangen (First-In-First-Out) von Amazon Simple Queue Service werden nicht als Ziel für Amazon-S3-Ereignisbenachrichtigungen unterstützt. Zum Senden einer Benachrichtigung für ein Amazon-S3-Ereignis an eine Amazon-SQS-FIFO-Warteschlange können Sie Amazon EventBridge verwenden. Weitere Informationen finden Sie unter Aktivieren von Amazon EventBridge.

Walkthrough-Übersicht

Dieser Walkhrough hilft Ihnen bei folgenden Aufgaben:

  • Veröffentlichung von Ereignissen des Typs s3:ObjectCreated:* in einer Amazon SQS-Warteschlange.

  • Veröffentlichung von Ereignissen des Typs s3:ReducedRedundancyLostObject in einem Amazon SNS-Thema.

Weitere Informationen zur Benachrichtigungskonfiguration finden Sie unte Verwenden von Amazon SQS, Amazon SNS und Lambda.

Alle diese Schritte können Sie auf der Konsole erledigen, ohne Code schreiben zu müssen. Darüber hinaus werden Codebeispiele bereitgestellt, die AWS-SDKs für Java und .NET verwenden, um Ihnen beim programmgesteuerten Hinzufügen von Benachrichtigungskonfigurationen zu helfen.

In dieser Vorgehensweise werden die folgenden Schritte beschrieben:

  1. Erstellen einer Amazon SQS-Warteschlange

    Mit der Amazon-SQS-Konsole erstellen Sie eine SQS-Warteschlange. Sie können auf alle Meldungen zugreifen, die Amazon S3 programmgesteuert an die Warteschlange sendet. Für diese schrittweise Anleitung überprüfen Sie die Benachrichtigungsmitteilungen in der Konsole.

    Sie ordnen der Warteschlange eine Zugriffsrichtlinie zu, um Amazon S3 die Berechtigung zu erteilen, Meldungen zu veröffentlichen.

  2. Erstellen Sie ein Amazon SNS-Thema.

    Erstellen Sie mit der Amazon-SNS-Konsole ein SNS-Thema und abonnieren Sie das Thema. Auf diese Weise werden alle darin veröffentlichten Ereignisse an Sie weitergegeben. Sie geben als Kommunikationsprotokoll E-Mail an. Nachdem Sie ein Thema erstellt haben, sendet Amazon SNS eine E-Mail. Sie verwenden den Link in der E-Mail, um das Abonnement des Themas zu bestätigen.

    Sie ordnen dem Thema eine Zugriffsrichtlinie zu, um Amazon S3 die Berechtigung zu erteilen, Meldungen zu veröffentlichen.

  3. Fügen Sie einem Bucket eine Benachrichtigungskonfiguration hinzu.

Schritt 1: Erstellen einer Amazon SQS-Warteschlange

Führen Sie die Schritte zum Erstellen und Abonnieren einer Amazon Simple Queue Service (Amazon SQS)-Warteschlange (Amazon SQS) aus.

  1. Erstellen Sie mit der Amazon SQS-Konsole eine Warteschlange. Anweisungen finden Sie unter Erste Schritte mit Amazon SQS im Amazon Simple Queue Service-Entwicklerhandbuch.

  2. Ersetzen Sie die der Warteschlange zugeordnete Zugriffsrichtlinie durch die folgende Richtlinie.

    1. Wählen Sie in der Amazon-SQS-Konsole in der Liste Warteschlangen den Warteschlangennamen aus.

    2. Wählen Sie im Tab Zugriffsrichtlinie die Option Bearbeiten aus.

    3. Ersetzen Sie die Zugriffsrichtlinie, die der Warteschlange angefügt ist. Geben Sie darin Ihren Amazon-SQS-ARN, den Quell-Bucket-Namen und die Bucket-Eigentümer-Konto-ID an.

      JSON
      { "Version":"2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "SQS:SendMessage" ], "Resource": "arn:aws:sqs:us-west-2:111122223333:s3-notification-queue", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1" }, "StringEquals": { "aws:SourceAccount": "bucket-owner-account-id" } } } ] }
    4. Wählen Sie Speichern.

  3. (Optional) Wenn die Amazon-SQS-Warteschlange oder das Amazon-SNS-Thema die serverseitige Verschlüsselung ist, die mit AWS Key Management Service (AWS KMS) aktiviert ist, fügen Sie dem verknüpften symmetrischen kundenverwalteten Verschlüsselungsschlüssel die folgende Richtlinie hinzu.

    Sie müssen die Richtlinie einem von Kunden verwalteten Schlüssel hinzufügen, da Sie den AWS-verwalteten Schlüssel für Amazon SQS oder Amazon SNS nicht ändern können.

    JSON
    { "Version":"2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" } ] }

    Weitere Informationen zur Verwendung von SSE für Amazon SQS und Amazon SNS mit AWS KMS finden Sie in den folgenden Themen:

  4. Notieren Sie den ARN der Warteschlange.

    Die SQS-Warteschlange, die Sie erstellt haben, ist eine weitere Ressource in Ihrem AWS-Konto. Es hat einen eindeutigen Amazon-Ressourcennamen (ARN). Sie benötigen diesen ARN im nächsten Schritt. Der ARN muss das folgende Format aufweisen:

    arn:aws:sqs:aws-region:account-id:queue-name

Schritt 2: Erstellen eines Amazon SNS-Themas

Gehen Sie wie folgt vor, um ein Amazon SNS-Thema zu erstellen und zu abonnieren.

  1. Erstellen Sie mit der Amazon SNS-Konsole ein Thema. Eine Anleitung finden Sie unter Amazon SNS-Thema anlegen im Amazon Simple Notification Service-Entwicklerhandbuch.

  2. Abonnieren Sie das Thema. Für diese Übung geben Sie email als Kommunikationsprotokoll an. Eine Anleitung finden Sie unter Amazon SNS-Thema abonnieren im Amazon Simple Notification Service-Entwicklerhandbuch.

    Sie erhalten eine E-Mail, in der Sie aufgefordert werden, das Abonnement des Themas zu bestätigen. Bestätigen Sie das Abonnement.

  3. Ersetzen Sie die dem Thema zugeordnete Zugriffsrichtlinie durch die folgende Richtlinie. Geben Sie darin Ihren SNS-Themen-ARN, den Bucket-Namen und die Konto-ID des Bucket-Eigentümers an.

  4. Notieren Sie den ARN des Themas.

    Das von Ihnen erstellte SNS-Thema ist eine weitere Ressource in Ihrem AWS-Konto. Sie hat einen eindeutigen ARN. Sie benötigen diesen ARN im nächsten Schritt. Der ARN hat das folgende Format:

    arn:aws:sns:aws-region:account-id:topic-name

Schritt 3: Hinzufügen einer Benachrichtigungskonfiguration zu Ihrem Bucket

Sie können Bucket-Benachrichtigungen entweder über die Amazon-S3-Konsole oder programmgesteuert über AWS-SDKs aktivieren. Wählen Sie eine der Optionen für die Konfiguration von Benachrichtigungen über Ihren Bucket. Dieser Abschnitt zeigt Beispiele für die Verwendung des AWS-SDKs for Java und .NET.

Option A: Aktivieren von Benachrichtigungen über einen Bucket unter Verwendung der Konsole

Fügen Sie mithilfe der Amazon-S3-Konsole eine Benachrichtigungskonfiguration hinzu, die Amazon S3 zu Folgendem auffordert:

  • Veröffentlichen von Ereignissen des Typs All object create events (Alle Objekterstellungsereignisse) in Ihrer Amazon SQS-Warteschlange.

  • Veröffentlichen von Ereignissen des Typs Object in RRS lost (Objekt in RRS verloren) in Ihrem Amazon SNS-Thema.

Nachdem Sie die Benachrichtigungskonfiguration gespeichert haben, veröffentlicht Amazon S3 eine Testmeldung, die Sie per E-Mail erhalten.

Detaillierte Anweisungen finden Sie unter Aktivieren und Konfigurieren von Ereignis-Benachrichtigungen mit der Amazon-S3-Konsole.

Option B: Aktivieren von Benachrichtigungen über einen Bucket unter Verwendung des AWS-SDK

.NET

Das folgende C#-Codebeispiel zeigt ein vollständiges Listing, das einem Bucket eine Benachrichtigungskonfiguration hinzufügt. Sie müssen den Code aktualisieren und Ihren Bucket-Namen und den ARN des SNS-Themas angeben. Informationen zum Einrichten und Ausführen der Codebeispiele finden Sie unter Erste Schritte mit dem AWS SDK für .NET im Entwicklerbuch für AWS SDK für .NET.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class EnableNotificationsTest { private const string bucketName = "*** bucket name ***"; private const string snsTopic = "*** SNS topic ARN ***"; private const string sqsQueue = "*** SQS topic ARN ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); EnableNotificationAsync().Wait(); } static async Task EnableNotificationAsync() { try { PutBucketNotificationRequest request = new PutBucketNotificationRequest { BucketName = bucketName }; TopicConfiguration c = new TopicConfiguration { Events = new List<EventType> { EventType.ObjectCreatedCopy }, Topic = snsTopic }; request.TopicConfigurations = new List<TopicConfiguration>(); request.TopicConfigurations.Add(c); request.QueueConfigurations = new List<QueueConfiguration>(); request.QueueConfigurations.Add(new QueueConfiguration() { Events = new List<EventType> { EventType.ObjectCreatedPut }, Queue = sqsQueue }); PutBucketNotificationResponse response = await client.PutBucketNotificationAsync(request); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' ", e.Message); } catch (Exception e) { Console.WriteLine("Unknown error encountered on server. Message:'{0}' ", e.Message); } } } }
Java

Beispiele für die Konfiguration von Bucket-Benachrichtigungen mit dem AWS SDK für Java finden Sie unter Verarbeiten von S3-Ereignisbenachrichtigungen in der Amazon S3 API Reference.

Schritt 4: Testen der Einrichtung

Jetzt können Sie die Einrichtung testen, indem Sie ein Objekt in Ihren Bucket hochladen und die Ereignis-Benachrichtigung in der Amazon-SQS-Konsole überprüfen. Anweisungen finden Sie unter Empfangen einer Nachricht im Abschnitt "Erste Schritte" im Amazon Simple Queue Service-Entwicklerhandbuch.