

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.

# Verwenden von Amazon SQS, Amazon SNS und Lambda
<a name="how-to-enable-disable-notification-intro"></a>

Die Aktivierung von Benachrichtigungen erfolgt auf Bucket-Ebene. Sie speichern Informationen zur Benachrichtigungskonfiguration in der *Benachrichtigungen*-Unterressourcen die einem Bucket zugeordnet sind. Nachdem Sie die Bucket-Benachrichtigungskonfiguration erstellt oder geändert haben, dauert es normalerweise etwa fünf Minuten, bis die Änderungen wirksam werden. Ein `s3:TestEvent` tritt auf, wenn die Benachrichtigung zum ersten Mal aktiviert wird. 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. Weitere Informationen finden Sie unter [Aktivieren und Konfigurieren von Ereignis-Benachrichtigungen mit der Amazon-S3-Konsole](enable-event-notifications.md).
+ **Programmgesteuert mithilfe der AWS SDKs — Intern werden sowohl die** Konsole als auch die Amazon S3 S3-REST-API SDKs aufgerufen, um *Benachrichtigungs-Subressourcen* zu verwalten, die dem Bucket zugeordnet sind. Beispiele für Benachrichtigungskonfigurationen, die AWS SDK verwenden, finden Sie unter [Walkthrough: Konfigurieren eines Buckets für Benachrichtigungen (SNS-Thema oder SQS-Warteschlange)](ways-to-add-notification-config-to-bucket.md).
**Anmerkung**  
Sie können auch die REST-API-Aufrufe in Amazon S3 direkt von Ihrem Code aus durchführen. Dies kann jedoch umständlich sein, da Sie dazu Code schreiben müssen, um Ihre Anforderungen zu authentifizieren. 

Unabhängig von der verwendeten Methode speichert Amazon S3 die Benachrichtigungskonfiguration als XML in der mit dem jeweiligen Bucket verknüpften Unterressourcen *Benachrichtigungen*. Weitere Informationen zu Bucket-Subressourcen finden Sie unter [Konfigurationsoptionen für Allzweck-Buckets](UsingBucket.md#bucket-config-options-intro).

**Anmerkung**  
Wenn Sie mehrere fehlgeschlagene Ereignisbenachrichtigungen aufgrund gelöschter Ziele haben, erhalten Sie möglicherweise die Meldung **Die folgenden Zielkonfigurationen konnten nicht überprüft** werden, wenn Sie versuchen, sie zu löschen. Sie können dieses Problem in der S3-Konsole beheben, indem Sie alle fehlgeschlagenen Benachrichtigungen gleichzeitig löschen.

**Topics**
+ [Erteilen von Berechtigungen zur Veröffentlichung von Ereignis-Benachrichtigungsmeldungen an einem Ziel](grant-destinations-permissions-to-s3.md)
+ [Aktivieren und Konfigurieren von Ereignis-Benachrichtigungen mit der Amazon-S3-Konsole](enable-event-notifications.md)
+ [Programmgesteuerte Konfiguration von Ereignis-Benachrichtigungen](#event-notification-configuration)
+ [Walkthrough: Konfigurieren eines Buckets für Benachrichtigungen (SNS-Thema oder SQS-Warteschlange)](ways-to-add-notification-config-to-bucket.md)
+ [Konfigurieren von Ereignis-Benachrichtigungen mithilfe der Namensfilterung](notification-how-to-filtering.md)
+ [Struktur von Ereignismeldungen](notification-content-structure.md)

# Erteilen von Berechtigungen zur Veröffentlichung von Ereignis-Benachrichtigungsmeldungen an einem Ziel
<a name="grant-destinations-permissions-to-s3"></a>

Sie müssen dem Amazon-S3-Prinzipal die erforderlichen Berechtigungen erteilen, um die relevante API aufzurufen, um Nachrichten in einem SNS-Thema, einer SQS-Warteschlange oder einer Lambda-Funktion zu veröffentlichen. So kann Amazon S3 Ereignisbenachrichtigungsmeldungen an einem Ziel veröffentlichen.

Informationen zur Fehlerbehebung beim Veröffentlichen von Ereignisbenachrichtigungen in einem Ziel finden Sie unter [Fehlerbehebung bei der Veröffentlichung von Amazon-S3-Ereignisbenachrichtigungen in einem Thema von Amazon Simple Notification Service](https://repost.aws/knowledge-center/sns-not-receiving-s3-event-notifications).

**Topics**
+ [Erteilen von Berechtigungen zum Aufrufen einer Funktion AWS Lambda](#grant-lambda-invoke-permission-to-s3)
+ [Erteilen von Berechtigungen, Meldungen in einem SNS-Thema oder einer SQS-Warteschlange zu veröffentlichen](#grant-sns-sqs-permission-for-s3)

## Erteilen von Berechtigungen zum Aufrufen einer Funktion AWS Lambda
<a name="grant-lambda-invoke-permission-to-s3"></a>

Amazon S3 veröffentlicht Ereignismeldungen, AWS Lambda indem es eine Lambda-Funktion aufruft und die Ereignisnachricht als Argument bereitstellt.

Wenn Sie die Amazon-S3-Konsole verwenden, um Ereignisbenachrichtigungen in einem Amazon-S3-Bucket für eine Lambda-Funktion zu konfigurieren, richtet die Konsole die erforderlichen Berechtigungen für die Lambda-Funktion ein. Dies ist so, dass Amazon S3 über Berechtigungen verfügt, die Funktion aus dem Bucket aufzurufen. Weitere Informationen finden Sie unter [Aktivieren und Konfigurieren von Ereignis-Benachrichtigungen mit der Amazon-S3-Konsole](enable-event-notifications.md). 

Sie können Amazon S3 S3-Berechtigungen auch erteilen AWS Lambda , um Ihre Lambda-Funktion aufzurufen. Weitere Informationen finden Sie unter [Tutorial: Using AWS Lambda with Amazon S3](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) im *AWS Lambda Developer Guide*.

## Erteilen von Berechtigungen, Meldungen in einem SNS-Thema oder einer SQS-Warteschlange zu veröffentlichen
<a name="grant-sns-sqs-permission-for-s3"></a>

Um Amazon S3 S3-Berechtigungen zur Veröffentlichung von Nachrichten im SNS-Thema oder in der SQS-Warteschlange zu gewähren, fügen Sie eine AWS Identity and Access Management (IAM-) Richtlinie an das Ziel-SNS-Thema oder die SQS-Warteschlange an. 

Ein Beispiel dafür, wie Sie einem SNS-Thema oder einer SQS-Warteschlange eine Richtlinie anfügen, finden Sie unter [Walkthrough: Konfigurieren eines Buckets für Benachrichtigungen (SNS-Thema oder SQS-Warteschlange)](ways-to-add-notification-config-to-bucket.md). Weitere Informationen über Berechtigungen finden Sie in den folgenden Themen:
+ [Beispielfälle für die Amazon SNS-Zugriffssteuerung](https://docs.aws.amazon.com/sns/latest/dg/AccessPolicyLanguage_UseCases_Sns.html) im *Amazon Simple Notification Service-Entwicklerhandbuch*
+ [Identity and Access Management in Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html) im *Amazon Simple Queue Service-Entwicklerhandbuch*

### IAM-Richtlinie für ein SNS-Zielthema
<a name="sns-topic-policy"></a>

Im Folgenden finden Sie ein Beispiel für eine AWS Identity and Access Management (IAM-) Richtlinie, die Sie an das Ziel-SNS-Thema anhängen. Anweisungen zur Verwendung dieser Richtlinie zum Einrichten eines Amazon-SNS-Zielthemas für Ereignisbenachrichtigungen finden Sie unter [Walkthrough: Konfigurieren eines Buckets für Benachrichtigungen (SNS-Thema oder SQS-Warteschlange)](ways-to-add-notification-config-to-bucket.md).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "Example SNS topic policy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SNS:Publish"
            ],
            "Resource": "arn:aws:sns:us-east-1:111122223333:example-sns-topic",
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-123456789012"
                }
            }
        }
    ]
}
```

------

### IAM-Richtlinie für eine SQS-Zielwarteschlange
<a name="sqs-queue-policy"></a>

Im Folgenden finden Sie ein Beispiel für eine IAM-Richtlinie, die Sie an die SQS-Zielwarteschlange anfügen. Anweisungen zur Verwendung dieser Richtlinie zum Einrichten einer Amazon-SQS-Zielwarteschlange für Ereignisbenachrichtigungen finden Sie unter [Walkthrough: Konfigurieren eines Buckets für Benachrichtigungen (SNS-Thema oder SQS-Warteschlange)](ways-to-add-notification-config-to-bucket.md).

Um diese Richtlinie verwenden zu können, müssen Sie den ARN der Amazon SQS SQS-Warteschlange, den Bucket-Namen und die AWS-Konto ID des Bucket-Besitzers aktualisieren.

------
#### [ 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-east-1:111122223333:queue-name",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-123456789012"
                }
            }
        }
    ]
}
```

------

Für die IAM-Richtlinien für Amazon SNS und Amazon SQS kann die `StringLike`-Bedingung statt der `ArnLike`-Bedingung in der Richtlinie angegeben werden.

Wenn `ArnLike` verwendet wird, müssen die Teile Partition, Dienst, Konto-ID, Ressourcentyp und Teil-Ressourcen-ID des ARN genau mit dem ARN im Anfragekontext übereinstimmen. Nur die Region und der Ressourcenpfad erlauben einen Teilabgleich.

 Wenn `StringLike` anstelle von `ArnLike`verwendet wird, ignoriert der Abgleich die ARN-Struktur und erlaubt einen Teilabgleich, unabhängig von dem Teil, der durch das Platzhalterzeichen ersetzt wird. Weitere Informationen finden Sie unter [IAM-JSON-Richtlinienelemente](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) im *IAM-Benutzerhandbuch*.

```
"Condition": {         
  "StringLike": { "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket" }
  }
```

### AWS KMS wichtige Richtlinie
<a name="key-policy-sns-sqs"></a>

Wenn die SQS-Warteschlange oder die SNS-Themen mit einem AWS Key Management Service (AWS KMS) vom Kunden verwalteten Schlüssel verschlüsselt sind, müssen Sie dem Amazon S3 S3-Service Principal die Erlaubnis erteilen, mit den verschlüsselten Themen oder der Warteschlange zu arbeiten. Um dem Amazon-S3-Service-Prinzipal die Berechtigung zu erteilen, fügen Sie der Schlüsselrichtlinie für den vom Kunden verwalteten Schlüssel die folgende Anweisung hinzu.

------
#### [ 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 zu AWS KMS wichtigen Richtlinien finden Sie unter [Verwenden von Schlüsselrichtlinien AWS KMS im AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) *Entwicklerhandbuch*. 

Weitere Informationen zur Verwendung der serverseitigen Verschlüsselung mit AWS KMS für Amazon SQS und Amazon SNS finden Sie im Folgenden:
+ [Schlüsselverwaltung](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html) im *Amazon Simple Notification Service-Entwicklerhandbuch*.
+ [Schlüsselverwaltung](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html) im *Amazon Simple Queue Service-Entwicklerhandbuch*.
+ [Encrypting messages published to Amazon SNS with AWS KMS](https://aws.amazon.com/blogs/compute/encrypting-messages-published-to-amazon-sns-with-aws-kms/) im *AWS -Compute-Blog*.

# Aktivieren und Konfigurieren von Ereignis-Benachrichtigungen mit der Amazon-S3-Konsole
<a name="enable-event-notifications"></a>

Sie können bestimmte Amazon S3 Allzweck-Bucket-Ereignisse aktivieren, um eine Benachrichtigung an ein Ziel zu senden, wenn diese Ereignisse auftreten. In diesem Abschnitt erfahren Sie, wie Sie mit der Amazon-S3-Konsole Ereignis-Benachrichtigungen aktivieren können. Informationen zur Verwendung von Ereignisbenachrichtigungen mit dem AWS SDKs und dem Amazon S3 S3-REST APIs finden Sie unter[Programmgesteuerte Konfiguration von Ereignis-Benachrichtigungen](how-to-enable-disable-notification-intro.md#event-notification-configuration). 

**Voraussetzungen**: Bevor Sie Ereignis-Benachrichtigungen für Ihren Bucket aktivieren können, müssen Sie einen der Zieltypen einrichten und dann die Berechtigungen konfigurieren. Weitere Informationen erhalten Sie unter [Unterstützte Ereignisziele](notification-how-to-event-types-and-destinations.md#supported-notification-destinations) und [Erteilen von Berechtigungen zur Veröffentlichung von Ereignis-Benachrichtigungsmeldungen an einem Ziel](grant-destinations-permissions-to-s3.md).

**Anmerkung**  
FIFO-Warteschlangen (First-In-First-Out) von Amazon Simple Queue Service werden nicht als Ziel für Amazon-S3-Ereignisbenachrichtigungen unterstützt. Um eine Benachrichtigung für ein Amazon S3 S3-Ereignis an eine Amazon SQS SQS-FIFO-Warteschlange zu senden, können Sie Amazon verwenden. EventBridge Weitere Informationen finden Sie unter [Amazon aktivieren EventBridge](enable-event-notifications-eventbridge.md).

**Topics**
+ [Aktivieren von Amazon-SNS-, Amazon-SQS- oder Lambda-Benachrichtigungen über die Amazon-S3-Konsole](#enable-event-notifications-sns-sqs-lam)

## Aktivieren von Amazon-SNS-, Amazon-SQS- oder Lambda-Benachrichtigungen über die Amazon-S3-Konsole
<a name="enable-event-notifications-sns-sqs-lam"></a>

**Ereignis-Benachrichtigungen für einen S3-Bucket aktivieren und konfigurieren**

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die Amazon S3 S3-Konsole unter [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Wählen Sie im linken Navigationsbereich **Allzweck-Buckets** aus.

1. Wählen Sie in der Bucket-Liste den Namen des Buckets, für den Sie Ereignisse aktivieren möchten.

1. Wählen Sie **Properties (Eigenschaften)**.

1. Navigieren Sie zum Abschnitt **Event Notifications (Ereignis-Benachrichtigungen)** und wählen Sie **Create event notification (Ereignis-Benachrichtigung erstellen)**

1. Geben Sie im Abschnitt **General configuration (Allgemeine Konfiguration)** den beschreibenden Ereignisnamen für Ihre Ereignis-Benachrichtigung an. Optional können Sie auch ein Präfix und ein Suffix angeben, um die Benachrichtigungen auf Objekte mit Schlüsseln zu beschränken, die mit den angegebenen Zeichen enden.

   1. Geben Sie eine Beschreibung für den **Namen der Veranstaltung** ein.

      Wenn Sie keinen Namen eingeben, wird eine eindeutige Kennung (Globally Unique Identifier, GUID) generiert und für den Namen verwendet. 

   1. (Optional) Um Ereignisbenachrichtigungen nach Präfix zu filtern, geben Sie ein **Präfix** ein. 

      Sie können beispielsweise einen Präfix-Filter einrichten, damit Sie nur Benachrichtigungen erhalten, wenn Dateien zu einem bestimmten Ordner (z. B. ) hinzugefügt wer, `images/`). 

   1. (Optional) Um Ereignisbenachrichtigungen nach Suffix zu filtern, geben Sie ein **Suffix** ein. 

      Weitere Informationen finden Sie unter [Konfigurieren von Ereignis-Benachrichtigungen mithilfe der Namensfilterung](notification-how-to-filtering.md). 

1. Wählen Sie im Abschnitt **Event types (Ereignistypen)** einen oder mehrere Ereignistypen aus, für die Sie Benachrichtigungen erhalten möchten. 

   Eine Liste der verschiedenen Ereignistypen finden Sie unter [Unterstützte Ereignistypen für SQS, SNS und Lambda](notification-how-to-event-types-and-destinations.md#supported-notification-event-types).

1. Wählen Sie im Abschnitt **Destination (Ziel)** das Ziel für Ereignis-Benachrichtigungen aus. 
**Anmerkung**  
Bevor Sie Ereignisbenachrichtigungen veröffentlichen können, müssen Sie dem Amazon-S3-Prinzipal die erforderlichen Berechtigungen zum Aufrufen der entsprechenden API erteilen. Dies ist so, dass Benachrichtigungen für eine Lambda-Funktion, ein SNS-Thema oder eine SQS-Warteschlange veröffentlicht werden können.

   1. Wählen Sie den Zieltyp aus: **Lambda Function (Lambda-Funktion)**, **SNS Topic (SNS-Thema)**, oder **SQS Queue (SQS-Warteschlange)**.

   1. Nachdem Sie Ihren Zieltyp ausgewählt haben, wählen Sie eine Funktion, ein Thema oder eine Warteschlange aus der Liste aus.

   1. Wenn Sie lieber einen Amazon-Ressourcennamen (ARN) angeben möchten, wählen Sie die Option **Enter ARN (ARN eingeben)** aus und geben Sie den ARN ein.

   Weitere Informationen finden Sie unter [Unterstützte Ereignisziele](notification-how-to-event-types-and-destinations.md#supported-notification-destinations).

1. Wählen Sie **Save changes (Änderungen speichern)** und Amazon S3 sendet eine Testnachricht an das Ziel für Ereignis-Benachrichtigungen.

## Programmgesteuerte Konfiguration von Ereignis-Benachrichtigungen
<a name="event-notification-configuration"></a>

Standardmäßig sind für keinen Ereignistyp Benachrichtigungen aktiviert. Aus diesem Grund speichert die *Benachrichtigung*-Unterressourcen 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. 

**So werden Ereignismeldungen in einer SQS-Warteschlange veröffentlicht**  
Um eine SQS-Warteschlange als Benachrichtigungsziel für einen oder mehrere Ereignistypen festzulegen, fügen Sie `QueueConfiguration` hinzu.

```
<NotificationConfiguration>
  <QueueConfiguration>
    <Id>optional-id-string</Id>
    <Queue>sqs-queue-arn</Queue>
    <Event>event-type</Event>
    <Event>event-type</Event>
     ...
  </QueueConfiguration>
   ...
</NotificationConfiguration>
```

**So werden Ereignismeldungen in einem SNS-Thema veröffentlicht**  
Um ein SNS-Thema als Benachrichtigungsziel für bestimmte Ereignistypen festzulegen, fügen Sie `TopicConfiguration` hinzu.

```
<NotificationConfiguration>
  <TopicConfiguration>
     <Id>optional-id-string</Id>
     <Topic>sns-topic-arn</Topic>
     <Event>event-type</Event>
     <Event>event-type</Event>
      ...
  </TopicConfiguration>
   ...
</NotificationConfiguration>
```

**Um die AWS Lambda Funktion aufzurufen und eine Ereignismeldung als Argument bereitzustellen**  
Um eine Lambda-Funktion als Benachrichtigungsziel für bestimmte Ereignistypen festzulegen, fügen Sie `CloudFunctionConfiguration` hinzu.

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

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

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](notification-content-structure.md). 

Weitere Informationen zur Konfiguration von Ereignis-Benachrichtigungen finden Sie in den folgenden Themen: 
+ [Walkthrough: Konfigurieren eines Buckets für Benachrichtigungen (SNS-Thema oder SQS-Warteschlange)](ways-to-add-notification-config-to-bucket.md).
+ [Konfigurieren von Ereignis-Benachrichtigungen mithilfe der Namensfilterung](notification-how-to-filtering.md)

# Walkthrough: Konfigurieren eines Buckets für Benachrichtigungen (SNS-Thema oder SQS-Warteschlange)
<a name="ways-to-add-notification-config-to-bucket"></a>

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. Um eine Benachrichtigung für ein Amazon S3 S3-Ereignis an eine Amazon SQS SQS-FIFO-Warteschlange zu senden, können Sie Amazon verwenden. EventBridge Weitere Informationen finden Sie unter [Amazon aktivieren EventBridge](enable-event-notifications-eventbridge.md).

**Topics**
+ [Walkthrough-Übersicht](#notification-walkthrough-summary)
+ [Schritt 1: Erstellen einer Amazon SQS-Warteschlange](#step1-create-sqs-queue-for-notification)
+ [Schritt 2: Erstellen eines Amazon SNS-Themas](#step1-create-sns-topic-for-notification)
+ [Schritt 3: Hinzufügen einer Benachrichtigungskonfiguration zu Ihrem Bucket](#step2-enable-notification)
+ [Schritt 4: Testen der Einrichtung](#notification-walkthrough-1-test)

## Walkthrough-Übersicht
<a name="notification-walkthrough-summary"></a>

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 unter [Verwenden von Amazon SQS, Amazon SNS und Lambda](how-to-enable-disable-notification-intro.md)

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

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.

1. 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. 

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

## Schritt 1: Erstellen einer Amazon SQS-Warteschlange
<a name="step1-create-sqs-queue-for-notification"></a>

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](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) im *Amazon Simple Queue Service-Entwicklerhandbuch*. 

1. 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.

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

   1. 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-123456789012"
                      }
                  }
              }
          ]
      }
      ```

------

   1. Wählen Sie **Speichern**.

1. (Optional) Wenn für die Amazon SQS SQS-Warteschlange oder das Amazon SNS SNS-Thema serverseitige Verschlüsselung mit AWS Key Management Service (AWS KMS) aktiviert ist, fügen Sie dem zugehörigen, vom Kunden verwalteten Schlüssel für symmetrische Verschlüsselung 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 im Folgenden:
   + [Schlüsselverwaltung](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html) im *Amazon Simple Notification Service-Entwicklerhandbuch*.
   + [Schlüsselverwaltung](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html) im *Amazon Simple Queue Service-Entwicklerhandbuch*.

1. 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
<a name="step1-create-sns-topic-for-notification"></a>

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](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) im *Amazon Simple Notification Service-Entwicklerhandbuch*. 

1. Abonnieren Sie das Thema. Für diese Übung geben Sie email als Kommunikationsprotokoll an. Eine Anleitung finden Sie unter [Amazon SNS-Thema abonnieren](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) 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. 

1. 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.

1. Notieren Sie den ARN des Themas.

   Das von Ihnen erstellte SNS-Thema ist eine weitere Ressource in Ihrem AWS-Konto, und es 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
<a name="step2-enable-notification"></a>

Sie können Bucket-Benachrichtigungen entweder mithilfe der Amazon S3 S3-Konsole oder programmgesteuert mithilfe von aktivieren. AWS SDKs Wählen Sie eine der Optionen für die Konfiguration von Benachrichtigungen über Ihren Bucket. Dieser Abschnitt enthält Codebeispiele mit dem AWS SDKs für Java und .NET.

### Option A: Aktivieren von Benachrichtigungen über einen Bucket unter Verwendung der Konsole
<a name="step2-enable-notification-using-console"></a>

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](enable-event-notifications.md). 

### Option B: Aktivieren Sie Benachrichtigungen für einen Bucket mithilfe der AWS SDKs
<a name="step2-enable-notification-using-awssdk-dotnet"></a>

------
#### [ .NET ]

Das folgende C\$1-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 [Getting Started with the AWS SDK for .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) im *AWS SDK for .NET Developer Guide*. 

```
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 for Java finden Sie unter [S3-Ereignisbenachrichtigungen verarbeiten](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ProcessS3EventNotification_section.html) in der *Amazon S3 S3-API-Referenz*.

------

## Schritt 4: Testen der Einrichtung
<a name="notification-walkthrough-1-test"></a>

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](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.htmlReceiveMessage.html) im *Abschnitt "Erste Schritte" im Amazon Simple Queue Service-Entwicklerhandbuch*. 

# Konfigurieren von Ereignis-Benachrichtigungen mithilfe der Namensfilterung
<a name="notification-how-to-filtering"></a>

Bei der Konfiguration einer Amazon-S3-Ereignis-Benachrichtigung müssen Sie angeben, welche unterstützten Amazon-S3-Ereignistypen das Senden der Benachrichtigung durch Amazon S3 veranlassen. Wenn ein Ereignistyp, den Sie nicht angegeben haben, in Ihrem S3-Bucket auftritt, sendet Amazon S3 die Benachrichtigung nicht.

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

**Anmerkung**  
Ein Platzhalterzeichen (\$1) kann in Filtern nicht als Präfix oder Suffix verwendet werden. Wenn Ihr Präfix oder Suffix ein Leerzeichen enthält, müssen Sie es durch das Zeichen „\$1“ ersetzen. Wenn Sie andere Sonderzeichen in dem Wert des Präfixes oder Suffixes verwenden, müssen Sie diese im [URL-kodierten (Prozent-kodierten) Format](https://en.wikipedia.org/wiki/Percent-encoding) angeben. Eine vollständige Liste der Sonderzeichen, die in ein URL-kodiertes Format umgewandelt werden müssen, wenn sie in einem Präfix oder Suffix für Ereignisbenachrichtigungen verwendet werden, finden Sie unter [Sichere Zeichen](object-keys.md#object-key-guidelines-safe-characters).

Sie können Benachrichtigungskonfigurationen einrichten, die die Filterung von Objektschlüsselnamen in der Amazon-S3-Konsole verwenden. Sie können dies tun, indem Sie Amazon S3 APIs über den AWS SDKs oder den REST APIs direkt verwenden. Informationen zur Verwendung der Konsolen-Benutzeroberfläche zum Festlegen einer Benachrichtigungskonfiguration für einen Bucket finden Sie unter [Aktivieren und Konfigurieren von Ereignis-Benachrichtigungen mit der Amazon-S3-Konsole](enable-event-notifications.md). 

Amazon S3 speichert die Benachrichtigungskonfiguration als XML in der einem Bucket zugeordneten *notification*-Subressource, wie in [Verwenden von Amazon SQS, Amazon SNS und Lambda](how-to-enable-disable-notification-intro.md) beschrieben. Sie können die `Filter` XML-Struktur verwenden, um Regeln für die nach dem Präfix oder dem Suffix eines Objektschlüsselnamens gefilterten Benachrichtigungen zu definieren. Weitere Informationen zu der `Filter`-XML-Struktur finden Sie unter [PUT-Bucket-Benachrichtigung](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTnotification.html) in der *API-Referenz zu Amazon Simple Storage Service*. 

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 Objektschlüssel-Namensfilterung. Sie enthalten auch Beispiele für Benachrichtigungskonfigurationen, die wegen der Überlappung von Präfix und Suffix ungültig sind. 

**Topics**
+ [Beispiele für gültige Benachrichtigungskonfigurationen mit Filterung nach dem Objektschlüsselnamen](#notification-how-to-filtering-example-valid)
+ [Beispiele für Benachrichtigungskonfigurationen mit ungültiger Präfix- und Suffix-Überlappung](#notification-how-to-filtering-examples-invalid)

## Beispiele für gültige Benachrichtigungskonfigurationen mit Filterung nach dem Objektschlüsselnamen
<a name="notification-how-to-filtering-example-valid"></a>

Die folgende Benachrichtigungskonfiguration enthält eine Warteschlangekonfiguration, die eine Amazon SQS-Warteschlange für Amazon S3 identifiziert, in der Ereignisse des Typs `s3:ObjectCreated:Put` gespeichert werden sollen. 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-Anforderungen im Ordner `images/` in queue-A geschrieben werden, während Benachrichtigungen für PUT-Anforderungen im 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 neu zum Bucket hinzugefügten `.jpg` Bilder von Lambda cloud-function-A verarbeitet werden und dass alle neu hinzugefügten `.png` Bilder von cloud-function-B verarbeitet werden. Die `.jpg` Suffixe `.png` und überschneiden sich nicht, obwohl sie denselben letzten Buchstaben haben. Wenn eine bestimmte Zeichenfolge mit beiden Suffixen enden kann, werden die beiden Suffixe als überlappend betrachtet. Da eine Zeichenfolge nicht mit `.png` und `.jpg` gleichzeitig enden kann, sind die Suffixe in der Beispielkonfiguration keine überlappenden Suffixe. 

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.jpg</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
  <CloudFunctionConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.png</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
     <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. Sie können dies nur tun, wenn die sich überlappenden Präfixe, die mit Suffixen verwendet werden, die sich nicht überlappen. 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>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
     <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>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
</NotificationConfiguration>
```

## Beispiele für Benachrichtigungskonfigurationen mit ungültiger Präfix- und Suffix-Überlappung
<a name="notification-how-to-filtering-examples-invalid"></a>

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 [Konfigurieren von Ereignis-Benachrichtigungen mithilfe der Namensfilterung](#notification-how-to-filtering).

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 `ObjectRemoved:*` 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 Amazon-S3-Konsole oder -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. Insbesondere überlappt sich das Root-Präfix mit allen anderen Präfixen. Das gleiche gilt, wenn Sie in diesem Beispiel ein Suffix anstelle eines Präfixes verwenden. 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. Wenn eine bestimmte Zeichenfolge mit beiden Suffixen enden kann, werden die beiden Suffixe als überlappend betrachtet. Eine Zeichenfolge kann mit `jpg` und `pg` enden. Die Suffixe überschneiden sich also. Gleiches gilt für Präfixe. Wenn eine bestimmte Zeichenfolge mit beiden Präfixen beginnen kann, werden die beiden Präfixe als überlappend betrachtet.

```
 <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:sns:us-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>
```

# Struktur von Ereignismeldungen
<a name="notification-content-structure"></a>

Die Benachrichtigung, die Amazon S3 sendet, um ein Ereignis zu veröffentlichen, verwendet das JSON-Format.

Eine allgemeine Übersicht und Anweisungen zum Konfigurieren von Ereignisbenachrichtigungen finden Sie unter [Amazon-S3-Ereignisbenachrichtigungen](EventNotifications.md).

Dieses Beispiel zeigt *Version 2.1 der JSON-Struktur* für Ereignisbenachrichtigungen. Amazon S3 verwendet *Versionen 2.1* *und 2.2* und *2.3* dieser Ereignisstruktur. Amazon S3 verwendet Version 2.2 für regionsübergreifende Replikationsereignisbenachrichtigungen. Es verwendet Version 2.3 für S3 Lebenszyklus, S3 Intelligent-Tiering, Objekt-ACL, Objekt-Markierung und Objektwiederherstellungs-Löschereignisse. Diese Versionen enthalten zusätzliche Informationen, die für diese Vorgänge spezifisch sind. Die Versionen 2.2 und 2.3 sind ansonsten mit Version 2.1 kompatibel, die Amazon S3 derzeit für alle anderen Ereignisbenachrichtigungstypen verwendet.

```
{  
   "Records":[  
      {  
         "eventVersion":"2.1",
         "eventSource":"aws:s3",
         "awsRegion":"us-west-2",
         "eventTime":"The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z) when Amazon S3 finished processing the request",
         "eventName":"The event type",
         "userIdentity":{  
            "principalId":"The unique ID of the IAM resource that caused the event"
         },
         "requestParameters":{  
            "sourceIPAddress":"The IP address where the request came from"
         },
         "responseElements":{  
            "x-amz-request-id":"The Amazon S3 generated request ID",
            "x-amz-id-2":"The Amazon S3 host that processed the request"
         },
         "s3":{  
            "s3SchemaVersion":"1.0",
            "configurationId":"The ID found in the bucket notification configuration",
            "bucket":{  
               "name":"The name of the bucket, for example, amzn-s3-demo-bucket",
               "ownerIdentity":{  
                  "principalId":"The Amazon retail customer ID of the bucket owner"
               },
               "arn":"The bucket Amazon Resource Name (ARN)"
            },
            "object":{  
               "key":"The object key name",
               "size":"The object size in bytes (as a number)",
               "eTag":"The object entity tag (ETag)",
               "versionId":"The object version if the bucket is versioning-enabled; null or not present if the bucket isn't versioning-enabled",
               "sequencer": "A string representation of a hexadecimal value used to determine event sequence; only used with PUT and DELETE requests"
            }
         },
         "glacierEventData": {
            "restoreEventData": {
               "lifecycleRestorationExpiryTime": "The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z), when the temporary copy of the restored object expires",
               "lifecycleRestoreStorageClass": "The source storage class for restored objects"
            }
         }
      }
   ]
}
```

Beachten Sie im Zusammenhang mit der Ereignistachrichtenstruktur Folgendes:
+ Der `eventVersion`-Schlüsselwert enthält eine Haupt- und eine Nebenversion im Format `major`.`minor`.

  Die Hauptversion wird erhöht, wenn Amazon S3 eine Änderung an der Ereignisstruktur vornimmt, die nicht abwärtskompatibel ist. Dies beinhaltet das Entfernen eines JSON-Feldes, das bereits vorhanden ist, oder das Ändern, wie die Inhalte eines Feldes dargestellt werden (Beispiel: ein Datumsformat).

  Die Nebenversion wird erhöht, wenn Amazon S3 der Ereignisstruktur neue Felder hinzufügt. Dies kann auftreten, wenn neue Informationen für einige oder alle vorhandenen Ereignisse bereitgestellt werden. Dies kann auch der Fall sein, wenn neue Informationen nur für neu eingeführte Ereignistypen bereitgestellt werden. Um mit neuen Versionen der Ereignisstruktur kompatibel zu bleiben, empfehlen wir, dass Ihre Anwendungen neue Felder ignorieren.

  Wenn neue Ereignistypen eingeführt werden, aber die Struktur des Ereignisses ansonsten unverändert bleibt, ändert sich die Ereignisversion nicht.

  Um sicherzustellen, dass Ihre Anwendungen die Ereignisstruktur ordnungsgemäß analysieren können, empfehlen wir, dass Sie einen Vergleich mit der Hauptversionsnummer durchführen. Um sicherzustellen, dass die Felder, die von Ihrer Anwendung erwartet werden, vorhanden sind, empfehlen wir außerdem, für die Nebenversion einen greater-than-or-equal -to-Vergleich durchzuführen.
+ Der `eventName` Schlüsselwert verweist auf die Liste der [Ereignisbenachrichtigungstypen](https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html), enthält aber nicht das `s3:` Präfix.
+ Der `userIdentity` Schlüsselwert bezieht sich auf die eindeutige ID der AWS Identity and Access Management (IAM-) Ressource (ein Benutzer, eine Rolle, eine Gruppe usw.), die das Ereignis verursacht hat. Eine Definition der einzelnen IAM-Identifikationspräfixe (z. B. KIDA, AROA, AGPA) und Informationen darüber, wie man den eindeutigen Identifikator erhält, finden Sie unter [Einzige Identifikatoren](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html##identifiers-unique-ids) im *IAM-Benutzerhandbuch*.
+ Der `responseElements` Schlüsselwert ist nützlich, wenn Sie eine Anfrage anhand von verfolgen möchten. AWS Support`x-amz-request-id` und `x-amz-id-2` helfen Amazon S3, eine einzelne Anfrage nachzuverfolgen. Diese Werte sind dieselben, die Amazon S3 in der Antwort auf die Anforderung zurückgibt, die die Ereignisse initiiert. Daher können Sie diese Werte verwenden, um das Ereignis der Anfrage zuzuordnen.
+ Der Schlüsselwert `s3` liefert Informationen über den Bucket und das Objekt, die an dem Ereignis beteiligt sind. Der Wert des Objektschlüsselnamens ist URL-kodiert. Beispielsweise wird `red flower.jpg` zu `red+flower.jpg`. (Amazon S3 gibt als Inhaltstyp in der Antwort „`application/x-www-form-urlencoded`“ zurück.)

  Der Schlüsselwert `ownerIdentity` entspricht der Kunden-ID des Bucket-Besitzers bei Amazon (Amazon.com). Dieser ID-Wert wird nicht mehr verwendet und wird nur noch aus Gründen der Abwärtskompatibilität beibehalten. 
+ Der Schlüsselwert `sequencer` bietet eine Möglichkeit, die Reihenfolge der Ereignisse zu bestimmen. Ereignis-Benachrichtigungen kommen nicht garantiert in der Reihenfolge an, in der die Ereignisse aufgetreten sind. Benachrichtigungen von Ereignissen, die Objekte erstellen (`PUT`-Anforderungen) und Objekte löschen, enthalten jedoch ein `sequencer`. Sie können diesen Wert verwenden, um die Reihenfolge der Ereignisse für einen bestimmten Objektschlüssel zu bestimmen. 

  Wenn Sie die `sequencer`-Zeichenfolgen von zwei Ereignisbenachrichtigungen für denselben Objektschlüssel vergleichen, ist die Ereignisbenachrichtigung mit dem größeren hexadezimalen Wert von `sequencer` das später aufgetretene Ereignis. Wenn Sie Ereignisbenachrichtigungen verwenden, um eine separate Datenbank oder einen separaten Index Ihrer Amazon-S3-Objekte zu verwalten, empfehlen wir Ihnen, die `sequencer`-Werte während der Verarbeitung jeder Ereignisbenachrichtigung zu vergleichen und zu speichern. 

  Beachten Sie Folgendes:
  + Sie können den Schlüsselwert `sequencer` nicht verwenden, um die Reihenfolge der Ereignisse für verschiedene Objektschlüssel zu bestimmen.
  + Die Zeichenketten `sequencer` können unterschiedlich lang sein. Um diese Werte zu vergleichen, wird also zunächst der kürzere Wert mit Nullen aufgefüllt und dann ein lexikografischer Vergleich durchgeführt.
+ Der `glacierEventData` Schlüsselwert ist nur für `s3:ObjectRestore:Completed` Ereignisse sichtbar. 
+ Der Schlüsselwert `restoreEventData` enthält Attribute, die sich auf Ihre Wiederherstellungsanfrage beziehen.
+ Der Schlüsselwert `replicationEventData` ist nur für Replikationsereignisse sichtbar.
+ Der Schlüsselwert `intelligentTieringEventData` ist nur für S3 Intelligent-Tiering-Ereignisse sichtbar.
+ Der Schlüsselwert `lifecycleEventData` ist nur für S3-Lebenszyklus-Übergangsereignisse sichtbar.

## Beispielnachrichten
<a name="notification-content-structure-examples"></a>

Im Folgenden finden Sie Beispiele für Amazon-S3-Ereignis-Benachrichtigungen.

**Amazon-S3-Testnachricht**  
Nachdem Sie eine Ereignis-Benachrichtigung für einen Bucket konfigurieren, sendet Amazon S3 die folgende Testnachricht.

```
1. {  
2.    "Service":"Amazon S3",
3.    "Event":"s3:TestEvent",
4.    "Time":"2014-10-13T15:57:02.089Z",
5.    "Bucket":"amzn-s3-demo-bucket",
6.    "RequestId":"5582815E1AEA5ADF",
7.    "HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE"
8. }
```

**Anmerkung**  
Die Nachricht `s3:TestEvent` verwendet ein anderes Format als normale S3-Ereignisbenachrichtigungen. Im Gegensatz zu anderen Ereignisbenachrichtigungen, die die zuvor gezeigte `Records` -Array-Struktur verwenden, verwendet das Testevent ein vereinfachtes Format mit direkten Feldern. Achten Sie bei der Implementierung der Ereignisbehandlung darauf, dass Ihr Code zwischen beiden Nachrichtenformaten unterscheiden und diese korrekt verarbeiten kann.

**Beispielnachricht, wenn ein Objekt mit einer `PUT`-Anforderung erstellt wird**  
Das Folgende ist ein Beispiel für eine Nachricht, die Amazon S3 sendet, um ein `s3:ObjectCreated:Put`-Ereignis zu veröffentlichen.

```
 1. {  
 2.    "Records":[  
 3.       {  
 4.          "eventVersion":"2.1",
 5.          "eventSource":"aws:s3",
 6.          "awsRegion":"us-west-2",
 7.          "eventTime":"1970-01-01T00:00:00.000Z",
 8.          "eventName":"ObjectCreated:Put",
 9.          "userIdentity":{  
10.             "principalId":"AIDAJDPLRKLG7UEXAMPLE"
11.          },
12.          "requestParameters":{  
13.             "sourceIPAddress":"172.16.0.1"
14.          },
15.          "responseElements":{  
16.             "x-amz-request-id":"C3D13FE58DE4C810",
17.             "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
18.          },
19.          "s3":{  
20.             "s3SchemaVersion":"1.0",
21.             "configurationId":"testConfigRule",
22.             "bucket":{  
23.                "name":"amzn-s3-demo-bucket",
24.                "ownerIdentity":{  
25.                   "principalId":"A3NL1KOZZKExample"
26.                },
27.                "arn":"arn:aws:s3:::amzn-s3-demo-bucket"
28.             },
29.             "object":{  
30.                "key":"HappyFace.jpg",
31.                "size":1024,
32.                "eTag":"d41d8cd98f00b204e9800998ecf8427e",
33.                "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko",
34.                "sequencer":"0055AED6DCD90281E5"
35.             }
36.          }
37.       }
38.    ]
39. }
```

