Amazon Simple Storage Service
Entwicklerhandbuch (API-Version 2006-03-01)

Konfigurieren von Amazon S3-Ereignisbenachrichtigungen

Die Amazon S3-Benachrichtigungsfunktion ermöglicht Ihnen, Benachrichtigungen zu erhalten, wenn innerhalb Ihres Buckets bestimmte Ereignisse stattfinden. Um Benachrichtigungen zu aktivieren, müssen Sie zuerst eine Benachrichtigungskonfiguration hinzufügen, die die Ereignisse angibt, die Amazon S3 veröffentlichen soll, und die Ziele, an die Amazon S3 die Ereignisbenachrichtigungen senden soll. Sie speichern diese Konfiguration in der mit dem entsprechenden Bucket verknüpften Unterressource notification (siehe Optionen für die Bucket-Konfiguration). Amazon S3 stellt Ihnen eine API für die Verwaltung dieser Unterressource bereit.

Wichtig

Amazon S3-Ereignisbenachrichtigungen stellen Ereignisse typischerweise in wenigen Sekunden bereit, manchmal kann dies aber auch eine Minute oder länger dauern. In sehr seltenen Fällen können Ereignisse auch verloren gehen.

Wenn ihre Anwendung eine bestimmte Semantik erfordert (etwa, um sicherzustellen, dass keine Ereignisse verloren gehen, oder dass Vorgänge nur einmal ausgeführt werden), sollten Sie beim Entwurf Ihrer Anwendung fehlende und doppelte Ereignisse berücksichtigen. Sie können mithilfe der LIST Objects-API oder der Amazon S3-Bestand-Berichte nach fehlenden Ereignissen suchen. Die LIST Objects-API und Amazon S3-Bestandsberichte unterliegen der letztendlichen Konsistenz und reflektieren möglicherweise nicht kürzlich hinzugefügte oder gelöschte Objekte.

Übersicht

Zurzeit kann Amazon S3 Benachrichtigungen für die folgenden Ereignisse veröffentlichen:

  • Erstellung eines neuen Objekts – Amazon S3 unterstützt mehrere APIs für das Erstellen von Objekten. Sie können eine Benachrichtigung anfordern, die nur dann erstellt wird, wenn eine bestimmte API verwendet wird (z. B. s3:ObjectCreated:Put), oder eine Wildcard verwenden (z. B. s3:ObjectCreated:*), um eine Benachrichtigung anzufordern, wenn ein Objekt erstellt wird, unabhängig von der verwendeten API.

     

  • Entfernung eines Objekts – Amazon S3 unterstützt das Löschen von Objekten mit und ohne Versioning. Weitere Informationen zum Objekt-Versioning finden Sie unter Objekt-Versioning und Verwenden von Versioning.

    Sie können eine Benachrichtigung anfordern, wenn ein Objekt gelöscht wird, oder wenn ein versionsfähiges Objekt permanent gelöscht wird. Dazu wird der Ereignistyp s3:ObjectRemoved:Delete verwendet. Sie können auch eine Benachrichtigung anfordern, wenn eine Löschmarkierung für ein versionsfähiges Objekt erstellt wird. Dazu wird der Ereignistyp s3:ObjectRemoved:DeleteMarkerCreated verwendet. Sie können auch eine Wildcard s3:ObjectRemoved:* verwenden, um bei jedem Löschen eines Objekts eine Benachrichtigung anzufordern. Weitere Informationen zum Löschen von versionsfähigen Objekten finden Sie unter Löschen von Objektversionen.

     

  • Wiederherstellung von Objekten – Amazon S3 unterstützt die Wiederherstellung von in der Speicherklasse GLACIER archivierten Objekten. Sie können mittels s3:ObjectRestore:Completed Benachrichtigungen bei Abschluss von Objektwiederherstellungen anfordern. Sie können mittels s3:ObjectRestore:Post Benachrichtungen bei Initiierung einer Wiederherstellung anfordern.

     

  • Verlust eines Reduced Redundancy Storage (RRS)-Objekts – Amazon S3 sendet eine Benachrichtigung, wenn der Verlust eines Objekts in der Speicherklasse RRS entdeckt wird.

Eine Liste der unterstützten Ereignistypen finden Sie unter Unterstützte Ereignistypen.

Amazon S3 unterstützt die folgenden Ziele, wo es Ereignisse veröffentlichen kann:

  • Amazon Simple Notification Service (Amazon SNS)-Thema

    Amazon SNS ist ein flexibler, vollständig verwalteter Push-Messaging-Service. Mit diesem Service können Sie Mitteilungen an Mobilgeräte oder verteilte Dienste übertragen. Mit SNS können Sie eine Nachricht einmal veröffentlichen und ein- oder mehrmals übermitteln. Ein SNS-Thema ist ein Zugriffspunkt, den Empfänger dynamisch abonnieren können, um Ereignisbenachrichtigungen zu erhalten. Weitere Informationen zu SNS finden Sie auf der Produktdetailseite für Amazon SNS.

     

  • Amazon Simple Queue Service (Amazon SQS)-Warteschlange

    Amazon SQS ist ein skalierbarer und vollständig verwalteter Warteschlangenservice. Mit SQS können Sie beliebige Datenvolumen übertragen, ohne dass andere Services stets verfügbar sein müssen. In Ihrer Benachrichtigungskonfiguration können Sie anfordern, dass Amazon S3 Ereignisse in einer SQS-Warteschlange veröffentlichen kann. Derzeit ist nur die Standard-SQS-Warteschlange als Amazon S3-Ereignisbenachrichtigungsziel zugelassen, während die FIFO-SQS-Warteschlange nicht zugelassen ist. Weitere Informationen zu SQS finden Sie auf der Produktdetailseite für Amazon SQS.

     

  • AWS Lambda

    AWS Lambda ist ein Datenverarbeitungsservice, mit dem Sie auf einfache Weise Anwendungen erstellen können, die schnell auf neue Informationen reagieren. AWS Lambda führt Ihren Code als Reaktion auf bestimmte Ereignisse aus, beispielsweise das Hochladen von Bildern, Aktivitäten in einer App, Websiteklicks oder Ausgaben aus verbundenen Geräten. Sie können AWS Lambda verwenden, um weitere AWS-Services mit benutzerdefinierter Logik bereitzustellen, oder ein eigenes Backend zu erstellen, das mit der Größe, Leistung und Sicherheit von AWS arbeitet. Mit AWS Lambda können Sie ganz einfach unabhängige, ereignisabhängige Anwendungen erstellen, die nur ausgeführt werden, wenn sie benötigt werden, und die automatisch von einigen wenigen Anfragen pro Tag bis hin zu Tausenden von Anfragen pro Sekunde skaliert werden können.

    AWS Lambda als Reaktion auf Amazon S3-Bucket-Ereignisse benutzerdefinierten Code ausführen. Sie laden Ihren benutzerdefinierten Code zu AWS Lambda hoch und erstellen eine so genannte Lambda-Funktion. Wenn Amazon S3 ein Ereignis eines bestimmten Typs entdeckt (z. B. eine Objekterstellung), kann das Ereignis zu AWS Lambda veröffentlicht werden und Ihre Funktion in Lambda aufrufen. In Reaktion darauf führt AWS Lambda Ihre Funktion aus. Weitere Informationen finden Sie auf der Produktdetailseite für AWS Lambda.

     

Die folgenden Abschnitte beschreiben detailliert, wie Ereignisbenachrichtigungen für einen Bucket aktiviert werden. Die Unterthemen bieten außerdem schrittweise Anleitungen, die Ihnen helfen, die Benachrichtigungsfunktion besser zu verstehen.

Ereignisbenachrichtigungen aktivieren

Die Aktivierung von Benachrichtigungen erfolgt auf Bucket-Ebene. Sie speichern die Benachrichtigungskonfiguration in der einem Bucket zugeordneten notification-Subressource. Sie können jede der folgenden Methoden verwenden, um die Benachrichtigungskonfiguration zu verwalten:

  • Verwenden der Amazon S3-Konsole

    Die Benutzeroberfläche der Konsole ermöglicht Ihnen, eine Benachrichtigungskonfiguration für einen Bucket einzurichten, ohne Code schreiben zu müssen. Anleitungen finden Sie unter Wie kann ich Ereignisbenachrichtigungen für einen S3-Bucket aktivieren und konfigurieren? im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.

  • Programmgesteuerte Verwendung der AWS-SDKs

    Anmerkung

    Falls nötig, können Sie auch die REST API-Aufrufe in Amazon S3 direkt von Ihrem Code aus durchführen. Allerdings kann dies aufwändig sein, weil Sie Code zur Authentifizierung Ihrer Anfragen schreiben müssen.

    Intern rufen sowohl die Konsole als auch die SDKs die Amazon S3-REST-API auf, um die mit dem Bucket verknüpften notification-Unterressourcen zu verwalten. Beispiele für die Benachrichtigungskonfiguration mit dem AWS SDK finden Sie unter dem Link zur schrittweisen Anleitung im obigen Abschnitt.

    Unabhängig von der verwendeten Methode speichert Amazon S3 die Benachrichtigungskonfiguration als XML in der mit dem jeweiligen Bucket verknüpften Unterressource notification. Weitere Informationen zu Bucket-Subressourcen finden Sie unter Optionen für die Bucket-Konfiguration). Standardmäßig sind für keinen Ereignistyp Benachrichtigungen aktiviert. Aus diesem Grund speichert die notification-Subressource anfänglich eine leere Konfiguration.

    <NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> </NotificationConfiguration>

    Um die Benachrichtigungen für bestimmte Ereignistypen zu aktivieren, ersetzen Sie das XML durch die entsprechende Konfiguration, die die Ereignistypen identifiziert, die Amazon S3 veröffentlichen soll, sowie das Ziel, in dem die Ereignisse veröffentlicht werden sollen. Sie müssen für jedes Ziel eine entsprechende XML-Konfiguration hinzufügen. Beispiel:

    • Veröffentlichung von Ereignisnachrichten zu einer SQS-Warteschlange – Um eine SQS-Warteschlange als Benachrichtigungsziel für ein oder mehrere Ereignistypen festzulegen, fügen Sie die QueueConfiguration hinzu.

      <NotificationConfiguration> <QueueConfiguration> <Id>optional-id-string</Id> <Queue>sqs-queue-arn</Queue> <Event>event-type</Event> <Event>event-type</Event> ... </QueueConfiguration> ... </NotificationConfiguration>
    • Veröffentlichung von Ereignisnachrichten zu einem SNS-Thema – Um ein SNS-Thema als Benachrichtigungsziel für spezifische Ereignistypen festzulegen, fügen Sie die TopicConfiguration hinzu.

      <NotificationConfiguration> <TopicConfiguration> <Id>optional-id-string</Id> <Topic>sns-topic-arn</Topic> <Event>event-type</Event> <Event>event-type</Event> ... </TopicConfiguration> ... </NotificationConfiguration>
    • Aufrufen der AWS Lambda-Funktion und Bereitstellung einer Ereignisnachricht als Argument – Um eine Lambda-Funktion als Benachrichtigungsziel für spezifische Ereignistypen festzulegen, fügen Sie die CloudFunctionConfiguration hinzu.

      <NotificationConfiguration> <CloudFunctionConfiguration>    <Id>optional-id-string</Id>    <Cloudcode>cloud-function-arn</Cloudcode>         <Event>event-type</Event>       <Event>event-type</Event>       ...   </CloudFunctionConfiguration> ... </NotificationConfiguration>

    Um alle für einen Bucket konfigurierten Benachrichtigungen zu entfernen, speichern Sie ein leeres <NotificationConfiguration/>-Element in der notification-Unterressource.

    Wenn Amazon S3 ein Ereignis des spezifischen Typs erkennt, veröffentlicht es eine Meldung mit der Ereignisinformation. Weitere Informationen finden Sie unter Struktur von Ereignismeldungen.

Ereignisbenachrichtigungstypen und -ziele

Dieser Abschnitt beschreibt die Ereignisbenachrichtigungstypen, die von Amazon S3 unterstützt werden, sowie den Typ der Ziele, wo die Benachrichtigungen veröffentlicht werden können.

Unterstützte Ereignistypen

Amazon S3 kann Ereignisse der folgenden Typen veröffentlichen. Sie spezifizieren diese Ereignistypen in der Benachrichtigungskonfiguration.

Ereignistypen Beschreibung

s3:ObjectCreated:*

s3:ObjectCreated:Put

s3:ObjectCreated:Post

s3:ObjectCreated:Copy

s3:ObjectCreated:CompleteMultipartUpload

Amazon S3 APIs wie PUT, POST und COPY können ein Objekt erstellen. Unter Verwendung dieser Ereignistypen können Sie eine Benachrichtigung aktivieren, wenn ein Objekt mit einer spezifischen API erstellt wird. Sie können auch den Ereignistyp s3:ObjectCreated:* verwenden, um eine Benachrichtigung unabhängig von der API anzufordern, die zum Erstellen eines Objekts verwendet wurde.

Für fehlgeschlagene Operationen erhalten Sie keine Ereignisbenachrichtigungen.

s3:ObjectRemoved:*

s3:ObjectRemoved:Delete

s3:ObjectRemoved:DeleteMarkerCreated

Durch Verwendung der ObjectRemoved-Ereignistypen können Sie eine Benachrichtigung aktivieren, wenn ein Objekt oder mehrere Objekte aus einem Bucket entfernt werden.

Sie können eine Benachrichtigung anfordern, wenn ein Objekt gelöscht wird oder ein Objekt mit Versioning permanent gelöscht wird, indem Sie den Ereignistyp s3:ObjectRemoved:Delete verwenden. Sie können auch eine Benachrichtigung anfordern, wenn eine Löschmarkierung für ein Objekt mit Versioning erstellt wird, indem Sie den Ereignistyp s3:ObjectRemoved:DeleteMarkerCreated verwenden. Weitere Informationen zum Löschen von versionsfähigen Objekten finden Sie unter Löschen von Objektversionen. Sie können auch eine Wildcard s3:ObjectRemoved:* verwenden, um bei jedem Löschen eines Objekts eine Benachrichtigung anzufordern.

Für ein automatisches Löschen aufgrund von Lebenszyklusrichtlinien und für fehlgeschlagene Operationen erhalten Sie keine Ereignisbenachrichtigungen.

s3:ObjectRestore:Post

s3:ObjectRestore:Completed

Mithilfe von Objektwiederherstellungs-Ereignistypen können Sie Benachrichtigungen für Initiierungs- und Abschlussereignisse erhalten, wenn Objekte aus der Speicherklasse GLACIER wiederhergestellt werden.

Sie verwenden s3:ObjectRestore:Post, um Benachrichtigungen über die Initiierung von Objektwiederherstellungen zu erhalten. Sie verwenden s3:ObjectRestore:Completed, um Benachrichtigungen über den Abschluss von Objektwiederherstellungen zu erhalten.

s3:ReducedRedundancyLostObject Sie können diesen Ereignistyp verwenden, um Amazon S3 zum Senden einer Benachrichtigung aufzufordern, wenn Amazon S3 den Verlust eines Objekts der RRS-Speicherklasse entdeckt.

Unterstützte Ziele

Amazon S3 kann Ereignisbenachrichtigungsmeldungen an die folgenden Ziele senden. Sie spezifizieren den ARN-Wert dieser Ziele in der Benachrichtigungskonfiguration.

  • Veröffentlichung von Ereignismitteilungen zu einem Amazon Simple Notification Service (Amazon SNS)-Thema

  • Veröffentlichung von Ereignismitteilungen zu einer Amazon Simple Queue Service (Amazon SQS)-Warteschlange

    Anmerkung

    Wenn die Zielwarteschlange SSE-fähig ist, benötigt Amazon S3 Zugriff auf die zugehörigen KMS-Schlüssel, um die Nachrichtenverschlüsselung zu aktivieren.

  • Veröffentlichung von Ereignismitteilungen zu AWS Lambda durch Aufruf einer Lambda-Funktion und Übergabe der Ereignismitteilung als Argument

Sie müssen Amazon S3 Berechtigungen zum Veröffentlichen von Nachrichten an ein Amazon SNS-Thema oder eine Amazon SQS-Warteschlange gewähren. Außerdem müssen Sie Amazon S3 die Berechtigung zum Aufruf einer AWS Lambda in Ihrem Namen gewähren. Informationen zum erteilen dieser Berechtigungen finden Sie unter Erteilen von Berechtigungen zur Veröffentlichung von Ereignisbenachrichtigungsmeldungen an einem Ziel.

Konfiguration von Benachrichtigungen mit Filtern nach dem Objektschlüsselnamen

Sie können Benachrichtigungen konfigurieren, die nach dem Präfix und dem Suffix des Objektschlüsselnamens gefiltert werden. Sie können beispielsweise eine Konfiguration einrichten, sodass Sie nur eine Benachrichtigung erhalten, wenn einem Bucket Bilddateien mit der Erweiterung .jpg hinzugefügt werden. Sie können auch eine Konfiguration verwenden, die eine Benachrichtigung an ein Amazon SNS-Thema sendet, wenn dem Bucket ein Objekt mit dem Präfix „images/“ hinzugefügt wird, während Benachrichtigungen für Objekte mit dem Präfix „logs/“ im selben Bucket an eine AWS Lambda-Funktion gesendet werden.

Sie können Benachrichtigungskonfigurationen, die nach Objektschlüsselnamen filtern, über die Amazon S3-Konsole und unter direkter Verwendung von Amazon S3-APIs über die AWS SDKs oder die REST-APIs einrichten. Informationen zur Verwendung der Konsolenoberfläche für die Einrichtung einer Benachrichtigungskonfiguration für einen Bucket finden Sie unter Wie kann ich Ereignisbenachrichtigungen für einen S3-Bucket aktivieren und konfigurieren? im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.

Amazon S3 speichert die Benachrichtigungskonfiguration als XML in der einem Bucket zugeordneten notification-Unterressource wie in Ereignisbenachrichtigungen aktivieren beschrieben. Sie können die Filter XML-Struktur verwenden, um Regeln für die nach dem Präfix und/oder dem Suffix eines Objektschlüsselnamens gefilterten Benachrichtigungen zu definieren. Informationen zu den Details der XML-Struktur von Filter finden Sie unter PUT Bucket-Benachrichtigung im Amazon Simple Storage Service API Reference.

Benachrichtigungskonfigurationen, die Filter verwenden, können keine Filterregeln mit überlappenden Präfixen, überlappenden Suffixen oder Präfix- und Suffix-Überlappung definieren. Die folgenden Abschnitte enthalten Beispiele für gültige Benachrichtigungskonfigurationen mit Filterung nach dem Objektschlüsselnamen, ebenso wie Beispiele für Benachrichtigungskonfigurationen, die aufgrund einer Präfix/Suffix-Überlappung ungültig sind.

Beispiele für gültige Benachrichtigungskonfigurationen mit Filterung nach dem Objektschlüsselnamen

Die folgende Benachrichtigungskonfiguration enthält eine Warteschlangekonfiguration, die eine Amazon SQS-Warteschlange für Amazon S3 identifiziert, um Ereignisse des Typs s3:ObjectCreated:Put zu veröffentlichen. Die Ereignisse werden veröffentlicht, wenn ein Objekt mit dem Präfix images/ und dem Suffix jpg mit PUT in einen Bucket geschrieben wird.

<NotificationConfiguration> <QueueConfiguration> <Id>1</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images/</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>jpg</Value> </FilterRule> </S3Key> </Filter> <Queue>arn:aws:sqs:us-west-2:444455556666:s3notificationqueue</Queue> <Event>s3:ObjectCreated:Put</Event> </QueueConfiguration> </NotificationConfiguration>

Die folgende Benachrichtigungskonfigurationen hat mehrere nicht überlappende Präfixe. Die Konfiguration definiert, dass Benachrichtigungen für PUT-Anfragen in den Ordner images/ in queue-A geschrieben werden, während Benachrichtigungen für PUT-Anfragen in den Ordner logs/ in queue-B geschrieben werden.

<NotificationConfiguration> <QueueConfiguration> <Id>1</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images/</Value> </FilterRule> </S3Key> </Filter> <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-A</Queue> <Event>s3:ObjectCreated:Put</Event> </QueueConfiguration> <QueueConfiguration> <Id>2</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>logs/</Value> </FilterRule> </S3Key> </Filter> <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-B</Queue> <Event>s3:ObjectCreated:Put</Event> </QueueConfiguration> </NotificationConfiguration>

Die folgende Benachrichtigungskonfigurationen hat mehrere nicht überlappende Suffixe. Die Konfiguration definiert, dass alle dem Bucket neu hinzugefügten .jpg-Bilder über Lambda cloud-function-A und alle neu hinzugefügten .png-Bilder über cloud-function-B verarbeitet werden. Die Suffixe .png und .jpg überschneiden sich nicht, obwohl ihr letzter Buchstabe identisch ist. Zwei Suffixe werden als überlappend betrachtet, wenn eine Zeichenfolge mit beiden Suffixen enden kann. Eine Zeichenfolge kann nicht mit .png und .jpg gleichzeitig enden, die Suffixe in der Beispielkonfiguration sind also keine überlappenden Suffixe.

<NotificationConfiguration> <CloudFunctionConfiguration> <Id>1</Id> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>.jpg</Value> </FilterRule> </S3Key> </Filter> <Cloudcode>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</Cloudcode> <Event>s3:ObjectCreated:Put</Event> </CloudFunctionConfiguration> <CloudFunctionConfiguration> <Id>2</Id> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>.png</Value> </FilterRule> </S3Key> </Filter> <Cloudcode>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</Cloudcode> <Event>s3:ObjectCreated:Put</Event> </CloudFunctionConfiguration> </NotificationConfiguration>

Ihre Benachrichtigungskonfigurationen, die Filter verwenden, können keine Filterregeln mit überlappenden Präfixen für dieselben Ereignistypen definieren, es sei denn, die überlappenden Präfixe werden mit nicht überlappenden Suffixen verwendet. Die folgende Beispielkonfiguration zeigt, wie Objekte, die mit einem gemeinsamen Präfix, aber nicht überlappenden Suffixen erstellt werden, an unterschiedliche Ziele geliefert werden können.

<NotificationConfiguration> <CloudFunctionConfiguration> <Id>1</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>.jpg</Value> </FilterRule> </S3Key> </Filter> <Cloudcode>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</Cloudcode> <Event>s3:ObjectCreated:Put</Event> </CloudFunctionConfiguration> <CloudFunctionConfiguration> <Id>2</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>.png</Value> </FilterRule> </S3Key> </Filter> <Cloudcode>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</Cloudcode> <Event>s3:ObjectCreated:Put</Event> </CloudFunctionConfiguration> </NotificationConfiguration>

Beispiele für Benachrichtigungskonfigurationen mit ungültiger Präfix/Suffix-Überlappung

Ihre Benachrichtigungskonfigurationen, die Filter verwenden, können größtenteils keine Filterregeln mit überlappenden Präfixen, überlappenden Suffixen oder überlappenden Präfix- und Suffix-Kombinationen für dieselben Ereignistypen definieren. (Überlappende Präfixe sind möglich, solange sich die Suffixe nicht überlappen. Ein Beispiel finden Sie unter Konfiguration von Benachrichtigungen mit Filtern nach dem Objektschlüsselnamen.)

Sie können überlappende Objektschlüsselnamensfilter mit unterschiedlichen Ereignistypen verwenden. Beispielsweise könnten sie eine Benachrichtigungskonfiguration erstellen, die das Präfix image/ für den Ereignistyp ObjectCreated:Put und das Präfix image/ für den Ereignistyp ObjectDeleted:* verwendet.

Sie erhalten einen Fehler, wenn Sie versuchen, eine Benachrichtigungskonfiguration mit ungültigen, sich überschneidenden Namensfiltern für dieselben Ereignistypen zu speichern, wenn Sie die AWS Amazon S3-Konsole oder die Amazon S3-API verwenden. Dieser Abschnitt zeigt Beispiele für Benachrichtigungskonfigurationen, die aufgrund überlappender Namensfilter ungültig sind.

Es wird angenommen, dass eine vorhandene Benachrichtigungskonfigurationsregel ein Standardpräfix und -suffix hat, die mit allen anderen Präfixen bzw. Suffixen übereinstimmen. Die folgende Benachrichtigungskonfiguration ist ungültig, weil sie überlappende Präfixe hat, wobei das Root-Präfix mit allen anderen Präfixen überlappt. (Dasselbe würde gelten, wenn wir in diesem Beispiel das Suffix statt des Präfix verwenden würden. Das Root-Suffix überlappt mit allen anderen Suffixen.)

<NotificationConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-one</Topic> <Event>s3:ObjectCreated:*</Event> </TopicConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-two</Topic> <Event>s3:ObjectCreated:*</Event> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> </NotificationConfiguration>

Die folgende Benachrichtigungskonfiguration ist ungültig, weil sie überlappende Suffixe hat. Zwei Suffixe werden als überlappend betrachtet, wenn eine Zeichenfolge mit beiden Suffixen enden kann. Eine Zeichenkette kann mit jpg und pg enden, die Suffixe überlappen sich also. (Das selbe gilt für Präfixe. Zwei Präfixe werden als überlappend betrachtet, wenn eine Zeichenfolge mit beiden Präfixen beginnen kann.)

<NotificationConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic> <Event>s3:ObjectCreated:*</Event> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>jpg</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic> <Event>s3:ObjectCreated:Put</Event> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>pg</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> </NotificationConfiguration

Die folgende Benachrichtigungskonfiguration ist ungültig, weil sie überlappende Präfixe und Suffixe hat.

<NotificationConfiguration> <TopicConfiguration> <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic> <Event>s3:ObjectCreated:*</Event> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>images</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>jpg</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> <TopicConfiguration> <Topic>arn:aws:snsus-west-2:444455556666:sns-topic-two</Topic> <Event>s3:ObjectCreated:Put</Event> <Filter> <S3Key> <FilterRule> <Name>suffix</Name> <Value>jpg</Value> </FilterRule> </S3Key> </Filter> </TopicConfiguration> </NotificationConfiguration>

Erteilen von Berechtigungen zur Veröffentlichung von Ereignisbenachrichtigungsmeldungen an einem Ziel

Damit Amazon S3 Nachrichten zu einem Ziel veröffentlichen kann, müssen Sie dem Amazon S3-Prinzipal die notwendigen Berechtigungen zum Aufruf der jeweiligen API für die Veröffentlichung von Nachrichten zu einem SNS-Thema, einer SQS-Warteschlange oder einer Lambda-Funktion erteilen.

Berechtigungen für den Aufruf einer AWS Lambda-Funktion erteilen

Amazon S3 veröffentlicht Ereignisnachrichten an AWS Lambda durch den Aufruf einer Lambda-Funktion und die Bereitstellung der Ereignisnachricht als Argument.

Wenn Sie die Amazon S3-Konsole zur Konfiguration von Ereignisbenachrichtigungen in einem Amazon S3-Bucket für eine Lambda-Funktion verwenden, richtet die Amazon S3-Konsole die notwendigen Berechtigungen für die Lambda-Funktion ein, sodass Amazon S3 Berechtigungen besitzt, die Funktion vom Bucket aus aufzurufen. Weitere Informationen finden Sie unter Wie kann ich Ereignisbenachrichtigungen für einen S3-Bucket aktivieren und konfigurieren? im Konsolenbenutzerhandbuch für Amazon Simple Storage Service.

Sie können Amazon S3 auch Berechtigungen aus AWS Lambda erteilen, um Ihre Lambda-Funktion aufzurufen. Weitere Informationen finden Sie unter Tutorial: Verwendung von AWS Lambda mit Amazon S3 im AWS Lambda Developer Guide.

Berechtigungen erteilen, Meldungen in einem SNS-Thema oder einer SQS-Warteschlange zu veröffentlichen

Sie ordnen eine IAM-Richtlinie dem SNS-Zielthema oder der SQS-Zielwarteschlange zu, um Amazon S3 die Berechtigungen zu erteilen, Meldungen in dem SNS-Thema oder in der SQS-Warteschlange zu veröffentlichen.

Beispiel für eine IAM-Richtlinie, die Sie dem SNS-Zielthema zuordnen.

{ "Version": "2008-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "SNS:Publish" ], "Resource": "SNS-ARN", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:bucket-name" } } } ] }

Beispiel für eine IAM-Richtlinie, die Sie der SQS-Zielwarteschlange zuordnen.

{ "Version": "2008-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "SQS:SendMessage" ], "Resource": "SQS-ARN", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:bucket-name" } } } ] }

Beachten Sie, dass Sie für die Amazon SNS- und Amazon SQS-IAM-Richtlinien anstelle der Bedingung ArnLike die Bedingung StringLike in der Richtlinie angeben können.

"Condition": {        "StringLike": { "aws:SourceArn": "arn:aws:s3:*:*:bucket-name" } }

Beispiel für eine Schlüsselrichtlinie, die Sie dem zugehörigen KMS-Schlüssel zuordnen, wenn die SQS-Warteschlange SSE-fähig ist.

{ "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": "*" } ] }

Die Richtlinie erteilt Amazon S3 Service-Prinzipalberechtigung für bestimmte KMS-Aktionen, die notwendig sind, um Nachrichten zu verschlüsseln, die dieser Warteschlange hinzugefügt werden.

Ein Beispiel dafür, wie Sie einem SNS-Thema oder einer SQS-Warteschlange eine Richtlinie zuordnen, finden Sie unter Beispiel Schrittweise Anleitung 1: Konfiguration eines Buckets für Benachrichtigungen (Meldungsziel: SNS-Thema und SQS-Warteschlange).

Weitere Informationen über Berechtigungen finden Sie in den folgenden Themen: