

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utilisation d’Amazon SQS, Amazon SNS et Lambda
<a name="how-to-enable-disable-notification-intro"></a>

L’activation des notifications s’effectue au niveau du compartiment. Vous stockez les informations de configuration de la notification dans la sous-ressource *notification* qui est associée à un compartiment. Après avoir créé ou modifié la configuration de notification du compartiment, il faut généralement attendre 5 minutes pour que les modifications prennent effet. Lorsque la notification est activée pour la première fois, un événement `s3:TestEvent` se produit. Suivez l’une des méthodes suivantes pour gérer la configuration des notifications :
+ **Via la console Amazon S3** – Vous pouvez utilisez l’interface de la console pour définir une configuration de notifications pour un compartiment sans écrire de code. Pour de plus amples informations, veuillez consulter [Activation et configuration des notifications d’événements à l’aide de la console Amazon S3](enable-event-notifications.md).
+ **À l'aide de la programmation AWS SDKs** : en interne, à la fois la console et l' SDKs appel de l'API REST Amazon S3 pour gérer les sous-ressources de *notification* associées au compartiment. Pour des exemples de configuration des notifications qui utilisent le kit AWS SDK, consultez [Démonstration : configuration d’un compartiment pour les notifications (rubrique SNS ou file d’attente SQS)](ways-to-add-notification-config-to-bucket.md).
**Note**  
Vous pouvez aussi appeler l’API REST Amazon S3 directement depuis votre code. Toutefois, cette méthode peut s’avérer fastidieuse, car vous devez écrire du code pour authentifier vos demandes. 

Quelle que soit la méthode que vous utilisez, Amazon S3 stocke la configuration des notifications au format XML dans la sous-ressource *notification* qui est associée au compartiment. Pour plus d’informations sur les sous-ressources de compartiment, consultez [Options de configuration des compartiments à usage général](UsingBucket.md#bucket-config-options-intro).

**Note**  
Si vous recevez plusieurs notifications d’échec d’événement dues à la suppression de destinations, vous pouvez recevoir le message **Unable to validate the following destination configurations** (Impossible de valider les configurations de destination suivantes) lorsque vous essayez de les supprimer. Vous pouvez résoudre ce problème dans la console S3 en supprimant simultanément toutes les notifications d’échec.

**Topics**
+ [Octroi d’autorisations pour la publication de messages de notification d’événement vers une destination](grant-destinations-permissions-to-s3.md)
+ [Activation et configuration des notifications d’événements à l’aide de la console Amazon S3](enable-event-notifications.md)
+ [Configuration des notifications d’événements par programmation](#event-notification-configuration)
+ [Démonstration : configuration d’un compartiment pour les notifications (rubrique SNS ou file d’attente SQS)](ways-to-add-notification-config-to-bucket.md)
+ [Configuration des notifications d’événement à l’aide du filtrage des noms de clé d’objet](notification-how-to-filtering.md)
+ [Structure des messages d’événements](notification-content-structure.md)

# Octroi d’autorisations pour la publication de messages de notification d’événement vers une destination
<a name="grant-destinations-permissions-to-s3"></a>

Vous devez accorder au principal Amazon S3 les autorisations nécessaires pour appeler l’API appropriée afin de publier des messages dans une rubrique SNS, une file d’attente SQS ou une fonction Lambda. Amazon S3 peut ainsi publier des messages de notification d’événement vers une destination.

Pour résoudre les problèmes liés à la publication de messages de notification d’événements vers une destination, consultez [Troubleshoot to publish Amazon S3 event notifications to an Amazon Simple Notification Service topic](https://repost.aws/knowledge-center/sns-not-receiving-s3-event-notifications) (Résoudre les problèmes liés à la publication de notifications d’événements Amazon S3 sur une rubrique Amazon Simple Notification Service).

**Topics**
+ [Octroi d'autorisations pour appeler une AWS Lambda fonction](#grant-lambda-invoke-permission-to-s3)
+ [Octroi d’autorisations pour la publication de messages dans une rubrique SNS ou une file d’attente SQS](#grant-sns-sqs-permission-for-s3)

## Octroi d'autorisations pour appeler une AWS Lambda fonction
<a name="grant-lambda-invoke-permission-to-s3"></a>

Amazon S3 publie des messages d'événement sur AWS Lambda en invoquant une fonction Lambda et en fournissant le message d'événement comme argument.

Lorsque vous utilisez la console Amazon S3 pour configurer les notifications d’événements sur un compartiment Amazon S3 pour une fonction Lambda, la console définit les autorisations nécessaires au niveau de la fonction Lambda. Amazon S3 dispose ainsi d’autorisations pour invoquer la fonction à partir du compartiment. Pour de plus amples informations, veuillez consulter [Activation et configuration des notifications d’événements à l’aide de la console Amazon S3](enable-event-notifications.md). 

Vous pouvez également accorder à Amazon S3 des autorisations AWS Lambda pour appeler votre fonction Lambda. Pour plus d'informations, consultez [Tutoriel : Utilisation AWS Lambda avec Amazon S3](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html) dans le *Guide du AWS Lambda développeur*.

## Octroi d’autorisations pour la publication de messages dans une rubrique SNS ou une file d’attente SQS
<a name="grant-sns-sqs-permission-for-s3"></a>

Pour accorder à Amazon S3 l'autorisation de publier des messages sur la rubrique SNS ou la file d'attente SQS, associez une politique Gestion des identités et des accès AWS (IAM) à la rubrique SNS ou à la file d'attente SQS de destination. 

Pour afficher un exemple montrant comment associer une stratégie à une rubrique SNS ou à une file d’attente SQS, consultez [Démonstration : configuration d’un compartiment pour les notifications (rubrique SNS ou file d’attente SQS)](ways-to-add-notification-config-to-bucket.md). Pour en savoir plus sur les autorisations, consultez les rubriques suivantes :
+ [Cas d’utilisation du contrôle des accès Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/AccessPolicyLanguage_UseCases_Sns.html) dans le *Manuel du développeur Amazon Simple Notification Service*
+ [Identity and Access Management dans Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html) dans le *Manuel du développeur Amazon Simple Queue Service*

### Politique IAM pour une rubrique SNS de destination
<a name="sns-topic-policy"></a>

Voici un exemple de stratégie Gestion des identités et des accès AWS (IAM) que vous associez à la rubrique SNS de destination. Pour savoir comment utiliser cette politique pour configurer une rubrique Amazon SNS de destination pour les notifications d’événements, consultez [Démonstration : configuration d’un compartiment pour les notifications (rubrique SNS ou file d’attente SQS)](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"
                }
            }
        }
    ]
}
```

------

### Politique IAM pour une file d’attente SQS de destination
<a name="sqs-queue-policy"></a>

Voici un exemple de politique IAM que vous associez à la file d’attente SQS de destination. Pour savoir comment utiliser cette politique pour configurer une file d’attente Amazon SQS de destination pour les notifications d’événements, consultez [Démonstration : configuration d’un compartiment pour les notifications (rubrique SNS ou file d’attente SQS)](ways-to-add-notification-config-to-bucket.md).

Pour utiliser cette politique, vous devez mettre à jour l'ARN de la file d'attente Amazon SQS, le nom du bucket et l'ID du propriétaire du Compte AWS bucket.

------
#### [ 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"
                }
            }
        }
    ]
}
```

------

Qu’il s’agisse de la politique IAM Amazon SNS ou de la politique IAM Amazon SQS, vous pouvez spécifier la condition `StringLike` en lieu et place de la condition `ArnLike` dans la stratégie.

Lorsque `ArnLike` est utilisé, les éléments partition, service, ID de compte, type de ressource et ID de ressource partiel de l’ARN doivent correspondre exactement à l’ARN dans le contexte de la demande. Seuls la région et le chemin de ressource autorisent une correspondance partielle.

 Lorsque `StringLike` est utilisé à la place de `ArnLike`, la correspondance ignore la structure de l’ARN et autorise une correspondance partielle, quelle que soit l’élément remplacé par le caractère générique. Pour plus d’informations, consultez [Éléments de politique JSON IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) dans le *Guide de l’utilisateur IAM*.

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

### AWS KMS politique clé
<a name="key-policy-sns-sqs"></a>

Si la file d'attente SQS ou les sujets SNS sont chiffrés à l'aide d'une clé gérée par le client AWS Key Management Service (AWS KMS), vous devez accorder au principal du service Amazon S3 l'autorisation d'utiliser les sujets ou la file d'attente chiffrés. Ajoutez l’instruction suivante à la politique de la clé gérée par le client afin d’accorder l’autorisation au principal de service Amazon S3.

------
#### [ 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": "*"
        }
    ]
}
```

------

Pour plus d'informations sur les politiques AWS KMS clés, consultez la section [Utilisation des politiques clés AWS KMS dans](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) le *Guide du AWS Key Management Service développeur*. 

Pour plus d'informations sur l'utilisation du chiffrement côté serveur AWS KMS pour Amazon SQS et Amazon SNS, consultez ce qui suit :
+ [Gestion des clés](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html) dans le *Manuel du développeur Amazon Simple Notification Service*.
+ [Gestion des clés](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html) dans le *Manuel du développeur Amazon Simple Queue Service*.
+ [Chiffrement des messages publiés vers Amazon SNS avec AWS KMS](https://aws.amazon.com/blogs/compute/encrypting-messages-published-to-amazon-sns-with-aws-kms/) dans le *Blog sur le calcul AWS *.

# Activation et configuration des notifications d’événements à l’aide de la console Amazon S3
<a name="enable-event-notifications"></a>

Vous pouvez activer certains événements de compartiment à usage général Amazon S3 afin d’envoyer un message de notification à une destination chaque fois que ces événements se produisent. Cette section explique comment utiliser la console Amazon S3 pour activer les notifications d’événement. Pour plus d'informations sur l'utilisation des notifications d'événements avec le REST AWS SDKs et Amazon S3 APIs, consultez[Configuration des notifications d’événements par programmation](how-to-enable-disable-notification-intro.md#event-notification-configuration). 

**Prérequis** : avant de pouvoir activer les notifications d’événements pour votre compartiment, vous devez configurer l’un des types de destination, puis configurer les autorisations. Pour plus d’informations, consultez [Destinations d’événements prises en charge](notification-how-to-event-types-and-destinations.md#supported-notification-destinations) et [Octroi d’autorisations pour la publication de messages de notification d’événement vers une destination](grant-destinations-permissions-to-s3.md).

**Note**  
Les files d’attente Amazon Simple Queue Service FIFO (premier entré, premier sorti) ne sont pas prises en charge en tant que destination des notifications d’événements Amazon S3. Pour envoyer une notification concernant un événement Amazon S3 à une file d'attente FIFO Amazon SQS, vous pouvez utiliser Amazon. EventBridge Pour de plus amples informations, veuillez consulter [Activation d'Amazon EventBridge](enable-event-notifications-eventbridge.md).

**Topics**
+ [Activation des notifications Amazon SNS, Amazon SQS ou Lambda à l’aide de la console Amazon S3](#enable-event-notifications-sns-sqs-lam)

## Activation des notifications Amazon SNS, Amazon SQS ou Lambda à l’aide de la console Amazon S3
<a name="enable-event-notifications-sns-sqs-lam"></a>

**Pour activer et configurer des notifications d’événements pour un compartiment S3**

1. Connectez-vous à la console Amazon S3 AWS Management Console et ouvrez-la à l'adresse [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Dans le volet de navigation de gauche, choisissez **Compartiments à usage général**.

1. Dans la liste des compartiments, choisissez le nom du compartiment pour lequel vous souhaitez activer les événements.

1. Choisissez **Propriétés**.

1. Accédez à la section **Event Notifications (Notifications d’événements)** et choisissez **Create event notification (Créer une notification d’événements)**.

1. Dans la section **General configuration (Configuration générale)** spécifiez le nom d’événement descriptif pour votre notification d’événements. Vous pouvez également spécifier un préfixe et un suffixe pour limiter les notifications aux objets dont les clés se terminent par les caractères spécifiés.

   1. Saisissez une description pour **Event name (Nom de l’événement)**.

      Si vous ne saisissez pas de nom, un identifiant unique global (GUID) sera généré et utilisé pour le nom. 

   1. (Facultatif) Pour filtrer les notifications d’événements par préfixe, saisissez un **préfixe**. 

      Par exemple, vous pouvez configurer un filtre de préfixe de sorte à recevoir uniquement des notifications lorsque des fichiers sont ajoutés à un dossier spécifique (par exemple, `images/`). 

   1. (Facultatif) Pour filtrer les notifications d’événements par suffixe, saisissez un **suffixe**. 

      Pour plus d’informations, consultez [Configuration des notifications d’événement à l’aide du filtrage des noms de clé d’objet](notification-how-to-filtering.md). 

1. Dans la section **Event types (Types d’événements)**, sélectionnez un ou plusieurs types d’événements pour lesquels vous souhaitez recevoir des notifications. 

   Pour obtenir la liste des différents types d’événements, consultez [Types d’événements pris en charge pour SQS, SNS et Lambda](notification-how-to-event-types-and-destinations.md#supported-notification-event-types).

1. Dans la section **Destination** choisissez la destination de notification d’événements. 
**Note**  
Avant de publier des notifications d’événements, vous devez accorder au principal Amazon S3 les autorisations requises pour qu’il puisse appeler l’API pertinente. Il peut ainsi publier des notifications vers une fonction Lambda, une rubrique SNS ou une file d’attente SQS.

   1. Sélectionnez le type de destination : **Lambda Function (Fonction Lambda)**, **SNS Topic (Rubrique SNS)** ou **SQS Queue (File d’attente SQS)**.

   1. Après avoir choisi votre type de destination, choisissez une fonction, une rubrique ou une file d’attente dans la liste.

   1. Si vous préférez spécifier un Amazon Resource Name (ARN), utilisez l’option **Saisir l’ARN**.

   Pour plus d’informations, consultez [Destinations d’événements prises en charge](notification-how-to-event-types-and-destinations.md#supported-notification-destinations).

1. Choisissez **Enregistrer les modifications**. Amazon S3 envoie alors un message de test à la destination de notification d’événements.

## Configuration des notifications d’événements par programmation
<a name="event-notification-configuration"></a>

Par défaut, les notifications sont désactivées pour tous les types d’événements. Par conséquent, la sous-ressource *notification* stocke initialement une configuration vide.

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

Pour activer les notifications pour certains types d’événements, vous devez remplacer le fichier XML par la configuration appropriée, qui identifie les types d’événements que doit publier Amazon S3, ainsi que leurs destinations. Vous devez ajouter une configuration XML pour chaque destination. 

**Publication des messages d’événement dans une file d’attente SQS**  
Pour définir une file d’attente SQS comme destination de notification pour un ou plusieurs types d’événements, ajoutez l’élément `QueueConfiguration`.

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

**Publication des messages d’événement dans une rubrique SNS**  
Pour définir une rubrique SNS comme destination de notification pour des types d’événements spécifiques, ajoutez l’élément `TopicConfiguration`.

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

**Pour appeler la AWS Lambda fonction et fournir un message d'événement en tant qu'argument**  
Pour définir une fonction Lambda comme destination de notification pour des types d’événements spécifiques, ajoutez l’élément `CloudFunctionConfiguration`.

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

**Suppression de toute les notifications configurées pour un compartiment**  
Pour supprimer toutes les notifications configurées pour un compartiment, enregistrez un élément `<NotificationConfiguration/>` vide dans la sous-ressource *notification*. 

Lorsque Amazon S3 détecte un événement qui appartient au type spécifié, il publie un message contenant les informations relatives à cet événement. Pour plus d’informations, consultez [Structure des messages d’événements](notification-content-structure.md). 

Pour plus d’informations sur la configuration des notifications d’événements, consultez les rubriques suivantes : 
+ [Démonstration : configuration d’un compartiment pour les notifications (rubrique SNS ou file d’attente SQS)](ways-to-add-notification-config-to-bucket.md).
+ [Configuration des notifications d’événement à l’aide du filtrage des noms de clé d’objet](notification-how-to-filtering.md)

# Démonstration : configuration d’un compartiment pour les notifications (rubrique SNS ou file d’attente SQS)
<a name="ways-to-add-notification-config-to-bucket"></a>

Vous pouvez recevoir des notifications Amazon S3 à l’aide d’Amazon Simple Notification Service (Amazon SNS) ou d’Amazon Simple Queue Service (Amazon SQS). Dans le cadre de cette démonstration, vous allez ajouter une configuration de notification à votre compartiment à l’aide d’une rubrique Amazon SNS et d’une file d’attente Amazon SQS.

**Note**  
Les files d'attente Amazon Simple Queue Service FIFO (premier entré, premier sorti) ne sont pas prises en charge en tant que destination des notifications d'événements Amazon S3. Pour envoyer une notification concernant un événement Amazon S3 à une file d'attente FIFO Amazon SQS, vous pouvez utiliser Amazon. EventBridge Pour de plus amples informations, veuillez consulter [Activation d'Amazon EventBridge](enable-event-notifications-eventbridge.md).

**Topics**
+ [Résumé de la procédure détaillée](#notification-walkthrough-summary)
+ [Étape 1 : créer une file d’attente Amazon SQS](#step1-create-sqs-queue-for-notification)
+ [Étape 2 : créer une rubrique Amazon SNS](#step1-create-sns-topic-for-notification)
+ [Étape 3 : ajouter une configuration de notifications à votre compartiment](#step2-enable-notification)
+ [Étape 4 : tester la configuration](#notification-walkthrough-1-test)

## Résumé de la procédure détaillée
<a name="notification-walkthrough-summary"></a>

Cette démonstration vous explique comment :
+ Publier des événements de type `s3:ObjectCreated:*` dans une file d’attente Amazon SQS.
+ Publier des événements de type `s3:ReducedRedundancyLostObject` dans une rubrique Amazon SNS.

Pour en savoir plus sur la configuration des notifications, consultez [Utilisation d’Amazon SQS, Amazon SNS et Lambda](how-to-enable-disable-notification-intro.md).

Vous pouvez suivre toutes ces étapes via la console sans écrire de code. En outre, des exemples de code utilisés AWS SDKs pour Java et .NET sont également fournis pour vous aider à ajouter des configurations de notification par programmation.

La procédure comprend les étapes suivantes :

1. Créez une file d’attente Amazon SQS.

   Via la console Amazon SQS, créez un file d’attente. Vous pouvez accéder par programmation à tous les messages qu’Amazon S3 envoie vers la file d’attente. Mais dans le cadre de cette procédure détaillée, vous vérifierez tous les messages de notification sur la console. 

   Vous associez une stratégie d’accès à la file d’attente afin d’autoriser Amazon S3 à publier des messages.

1. Créez une rubrique Amazon SNS.

   À l’aide de la console Amazon SNS, créez une rubrique SNS et abonnez-y. Ainsi, tout événement publié dans cette rubrique vous est signalé. Vous définissez l’e-mail comme protocole de communication. Lorsque vous créez une rubrique, Amazon SNS vous envoie un e-mail. Vous suivez le lien contenu dans l’e-mail pour confirmer votre abonnement à la rubrique. 

   Vous associez une stratégie d’accès à la rubrique, afin d’autoriser Amazon S3 à publier des messages. 

1. Ajouter une configuration de notifications à un compartiment. 

## Étape 1 : créer une file d’attente Amazon SQS
<a name="step1-create-sqs-queue-for-notification"></a>

Suivez les étapes pour créer une file d’attente Amazon Simple Queue Service (Amazon SQS) et vous y abonner.

1. À l’aide de la console Amazon SQS, créez une file d’attente. Pour obtenir des instructions, consultez [Démarrez avec Amazon SQS](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html) dans le *Manuel du développeur Amazon Simple Queue Service*. 

1. Remplacez la stratégie d’accès qui est associée à la file d’attente par la stratégie ci-après.

   1. Dans la console Amazon SQS, dans la liste **Queues (Files d’attente)**, sélectionnez le nom de la file d’attente.

   1. Dans l’onglet **Access policy (Stratégie d’accès)**, choisissez **Edit (Modifier)**.

   1. Remplacez la stratégie d’accès qui est associée à la file d’attente. Indiquez votre ARN Amazon SQS, le nom du compartiment source et l’ID de compte du propriétaire du compartiment.

------
#### [ 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. Choisissez **Enregistrer**.

1. (Facultatif) Si le chiffrement côté serveur est activé AWS Key Management Service avec AWS KMS() dans la file d'attente Amazon SQS ou dans la rubrique Amazon SNS, ajoutez la politique suivante à la clé de chiffrement symétrique gérée par le client associée. 

   Vous devez ajouter la politique à une clé gérée par le client, car vous ne pouvez pas modifier la clé gérée par AWS pour Amazon SQS ou Amazon SNS. 

------
#### [ 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": "*"
           }
       ]
   }
   ```

------

   Pour plus d'informations sur l'utilisation de SSE pour Amazon SQS et Amazon SNS AWS KMS avec, consultez ce qui suit :
   + [Gestion des clés](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html) dans le *Manuel du développeur Amazon Simple Notification Service*.
   + [Gestion des clés](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html) dans le *Manuel du développeur Amazon Simple Queue Service*.

1. Notez l’ARN de la file d’attente. 

   La file d’attente SQS que vous avez créée est une autre ressource dans votre Compte AWS. Elle possède un Amazon Resource Name (ARN) unique. Vous avez besoin de cet ARN à la prochaine étape. L’ARN présente dans le format suivant :

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

## Étape 2 : créer une rubrique Amazon SNS
<a name="step1-create-sns-topic-for-notification"></a>

Suivez ces étapes pour créer une rubrique Amazon SNS et vous y abonner.

1. Créez une rubrique à partir de la console Amazon SNS. Des instructions sont disponibles dans la section [Création d’une rubrique Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html) du *Manuel du développeur Amazon Simple Notification Service*. 

1. Abonnez-vous à la rubrique. Dans le cadre de cet exercice, définissez l’e-mail comme protocole de communication. Pour obtenir des instructions, consultez [Abonnement à une rubrique Amazon SNS](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html) dans le *Manuel du développeur Amazon Simple Notification Service*. 

   Vous recevez un e-mail vous invitant à confirmer votre abonnement à la rubrique. Confirmez votre abonnement. 

1. Remplacez la stratégie d’accès associée à la rubrique par la stratégie ci-après. Indiquez l’ARN de votre rubrique SNS, le nom du compartiment et l’ID de compte du propriétaire du compartiment.

1. Notez l’ARN de la rubrique.

   La rubrique SNS que vous avez créée est une autre ressource de votre Compte AWS choix, et elle possède un ARN unique. Vous aurez besoin de cet ARN à la prochaine étape. L’ARN présentera le format suivant :

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

## Étape 3 : ajouter une configuration de notifications à votre compartiment
<a name="step2-enable-notification"></a>

Vous pouvez activer les notifications de compartiment à l'aide de la console Amazon S3 ou par programmation à l'aide de. AWS SDKs Choisissez l’une des deux méthodes pour configurer les notifications de votre compartiment. Cette section fournit des exemples de code utilisant AWS SDKs pour Java et .NET.

### Option A : Activer des notifications d’un compartiment via la console
<a name="step2-enable-notification-using-console"></a>

Dans la console Amazon S3, ajoutez une configuration de notifications demandant à Amazon S3 de :
+ Publier les événements du type **All objet create events (Tous les événements de création d’objet)** dans votre file d’attente Amazon SQS.
+ Publier les événements du type **Object in RRS lost (Objet dans le stockage Reduced Redundancy Storage (RRS) perdu)** dans votre rubrique Amazon SNS.

Une fois que vous avez enregistré la configuration de notifications, Amazon S3 publie un message de test, que vous recevez par e-mail. 

Pour obtenir des instructions, veuillez consulter [Activation et configuration des notifications d’événements à l’aide de la console Amazon S3](enable-event-notifications.md). 

### Option B : activer les notifications sur un compartiment à l'aide du AWS SDKs
<a name="step2-enable-notification-using-awssdk-dotnet"></a>

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

L’exemple de code C\$1 ci-dessous fournit une liste complète de codes qui permet d’ajouter une configuration de notifications à un compartiment. Vous devez mettre à jour le code et fournir le nom de votre compartiment, ainsi que l’ARN de la rubrique SNS. Pour plus d'informations sur la configuration et l'exécution des exemples de code, consultez [Getting Started with the AWS SDK for](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) .NET dans *AWS le Guide du développeur du SDK pour* .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 ]

Pour des exemples de configuration des notifications de compartiment avec le AWS SDK pour Java, [consultez Process S3 event](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ProcessS3EventNotification_section.html) notifications dans *le manuel Amazon S3 API* Reference.

------

## Étape 4 : tester la configuration
<a name="notification-walkthrough-1-test"></a>

Vous pouvez désormais tester la configuration. Pour ce faire, chargez un objet vers votre compartiment et vérifiez la notification d’événement dans la console Amazon SQS. Pour obtenir des instructions, consultez [Recevez et supprimez votre message](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.htmlReceiveMessage.html) dans la *section « Mise en route » du Manuel du développeur Amazon Simple Queue Service*. 

# Configuration des notifications d’événement à l’aide du filtrage des noms de clé d’objet
<a name="notification-how-to-filtering"></a>

Lorsque vous configurez une notification d’événements Amazon S3, vous devez spécifier quels types d’événements Amazon S3 pris en charge entraînent l’envoi de la notification par Amazon S3. Si un type d’événement que vous n’avez pas spécifié se produit dans votre compartiment S3, Amazon S3 n’envoie pas de notification.

Vous pouvez configurer les notifications pour qu’elles soient filtrées en fonction du préfixe et du suffixe du nom de clé des objets. Par exemple, vous pouvez définir une configuration afin de ne recevoir une notification uniquement lorsque des fichiers image comportant l’extension de nom de fichier « `.jpg` » sont ajoutés à un compartiment. Vous pouvez également avoir une configuration qui envoie une notification à une rubrique Amazon SNS lorsqu'un objet avec le préfixe « `images/` » est ajouté au compartiment, tandis que des notifications pour les objets ayant un préfixe « `logs/` » dans le même compartiment sont envoyées à une fonction. AWS Lambda 

**Note**  
Les filtres n’acceptent pas de caractère générique (« \$1 ») comme préfixe ou suffixe. Si votre préfixe ou suffixe contient un espace, vous devez le remplacer par le caractère « \$1 ». Si vous utilisez un autre caractère spécial dans la valeur du préfixe ou du suffixe, vous devez les entrer au [format codé en URL (encodage-pourcent)](https://en.wikipedia.org/wiki/Percent-encoding). Pour obtenir la liste complète des caractères spéciaux qui doivent être convertis en format codé URL lorsqu’ils sont utilisés dans un préfixe ou un suffixe pour les notifications d’événements, consultez [Caractères adaptés](object-keys.md#object-key-guidelines-safe-characters).

Ces configurations de notifications en fonction du nom de clé d’objet peuvent être définies dans la console Amazon S3. Vous pouvez le faire en utilisant Amazon S3 APIs via le REST AWS SDKs ou APIs directement. Pour en savoir plus sur l’utilisation de l’interface utilisateur de la console pour définir une configuration de notification pour un compartiment, consultez [Activation et configuration des notifications d’événements à l’aide de la console Amazon S3](enable-event-notifications.md). 

Amazon S3 stocke la configuration des notifications au format XML dans la sous-ressource *notification* associée à un compartiment, comme décrit dans [Utilisation d’Amazon SQS, Amazon SNS et Lambda](how-to-enable-disable-notification-intro.md). Pour définir les règles de filtrage des notifications en fonction du préfixe ou du suffixe du nom clé de l’objet, utilisez la structure XML `Filter`. Pour plus d’informations sur la structure XML `Filter`, consultez [PUT Bucket notification](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTnotification.html) dans la *Référence des API Amazon Simple Storage Service*. 

Lorsque les configurations de notifications utilisent `Filter`, les règles de filtrage ne doivent pas contenir de préfixes qui se chevauchent, de suffixes qui se chevauchent, ni de préfixes et suffixes qui se chevauchent. Les sections suivantes contiennent des exemples de configurations de notification valides avec filtrage des noms de clé d’objet. Elles proposent également des exemples de configurations de notification non valides en raison du chevauchement des préfixes et des suffixes. 

**Topics**
+ [Exemples corrects de configurations des notifications avec filtrage par nom de clé d’objet](#notification-how-to-filtering-example-valid)
+ [Exemples de configurations des notifications avec chevauchement incorrect des préfixes et des suffixes](#notification-how-to-filtering-examples-invalid)

## Exemples corrects de configurations des notifications avec filtrage par nom de clé d’objet
<a name="notification-how-to-filtering-example-valid"></a>

La configuration des notifications ci-après comporte une configuration de file d’attente qui identifie une file d’attente Amazon SQS dans laquelle Amazon S3 doit publier les événements de type `s3:ObjectCreated:Put`. Les événements sont publiés chaque fois qu’un objet présentant un préfixe `images/` et un suffixe `jpg` est ajouté dans un compartiment via une demande PUT. 

```
<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>
```

La configuration de notifications ci-dessous comporte plusieurs préfixes qui ne se chevauchent pas. La configuration indique que les notifications associées aux demandes PUT du dossier `images/` sont envoyées vers une file d’attente A (queue-A), alors que les notifications associées aux demandes PUT du dossier `logs/` sont envoyées vers une file d’attente B (queue-B).

```
<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>
```

La configuration de notifications ci-dessous comporte plusieurs suffixes qui ne se chevauchent pas. La configuration définit que toutes les `.jpg` images récemment ajoutées au bucket sont traitées par Lambda cloud-function-A, et que toutes les `.png` images récemment ajoutées sont traitées par. cloud-function-B Les `.jpg` suffixes `.png` et ne se chevauchent pas même s'ils ont la même dernière lettre. Si une chaîne donnée peut se terminer par deux suffixes, on considère que les deux suffixes se chevauchent. Une chaîne ne pouvant se terminer par `.png` et `.jpg`, les suffixes de cet exemple de configuration ne se chevauchent pas. 

```
<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>
```

Lorsque vos configurations de notifications utilisent `Filter`, les règles de filtrage associées à des types d’événements identiques ne doivent pas contenir de préfixes qui se chevauchent. Ils ne peuvent le faire que si les préfixes qui se chevauchent sont utilisés avec des suffixes qui ne se chevauchent pas. Dans l’exemple de configuration ci-dessous, nous voyons que des objets créés avec un préfixe commun, mais dont les suffixes ne se chevauchent pas, peuvent être envoyés vers différentes destinations.

```
<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>
```

## Exemples de configurations des notifications avec chevauchement incorrect des préfixes et des suffixes
<a name="notification-how-to-filtering-examples-invalid"></a>

Lorsque vos configurations de notifications utilisent `Filter`, dans la majorité des cas, les règles de filtrage associées à des types d’événements identiques ne doivent pas contenir de préfixes qui se chevauchent, de suffixes qui se chevauchent, ni de combinaisons de préfixes et de suffixes qui se chevauchent. Elles peuvent toutefois comporter des préfixes qui se chevauchent, à condition que les suffixes ne se chevauchent pas. Pour obtenir un exemple, consultez [Configuration des notifications d’événement à l’aide du filtrage des noms de clé d’objet](#notification-how-to-filtering).

En revanche, il est possible d’utiliser des filtres par nom de clé d’objet qui se chevauchent lorsque les types d’événements sont différents. Par exemple, vous pouvez créer une configuration de notifications qui utilise le préfixe `image/` pour le type d’événement `ObjectCreated:Put` et le préfixe `image/` pour le type d’événement `ObjectRemoved:*`. 

Que vous utilisiez la console Amazon S3 ou l’API, si vous tentez d’enregistrer une configuration des notifications comportant des filtres de nom non valides qui se chevauchent pour les mêmes types d’événements, vous obtenez un message d’erreur. Cette section présente des exemples de configurations des notifications incorrectes, en raison du chevauchement des filtres de nom. 

Toute règle de configuration des notifications existante est supposée comporter un préfixe et un suffixe par défaut qui correspondent respectivement à n’importe quel autre préfixe et suffixe. La configuration des notifications ci-dessous est incorrecte, car elle comporte des préfixes qui se chevauchent. Plus précisément, le préfixe racine chevauche n’importe quel autre préfixe. Cela est également vrai si, dans cet exemple, vous utilisiez un suffixe en lieu et place d’un préfixe. Le suffixe racine chevaucherait également n’importe quel autre suffixe.

```
<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>
```

La configuration des notifications ci-dessous est incorrecte, car elle comporte des suffixes qui se chevauchent. Si une chaîne donnée peut se terminer par deux suffixes, on considère que les deux suffixes se chevauchent. Une chaîne peut se terminer par `jpg` et `pg`. Ainsi, les suffixes se chevauchent. Il en va de même pour les préfixes. Si une chaîne donnée peut commencer par deux préfixes, on considère que les deux préfixes se chevauchent.

```
 <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
```

La configuration des notifications ci-dessous est incorrecte, car elle comporte des préfixes et des suffixes qui se chevauchent. 

```
<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>
```

# Structure des messages d’événements
<a name="notification-content-structure"></a>

Le message de notification qu’envoie Amazon S3 pour publier un événement est au format JSON.

Pour obtenir une présentation générale et des instructions sur la configuration des notifications d’événement, consultez [Notifications d'événements Amazon S3](EventNotifications.md).

Cet exemple montre *la version 2.1* de la structure JSON de notification d'événement. Amazon S3 utilise les *versions 2.1*, *2.2* et *2.3* de cette structure d’événement. Amazon S3 utilise la version 2.2 pour les notifications d’événements de réplication entre Régions. Il utilise la version 2.3 pour le cycle de vie S3, S3 Intelligent-Tiering, la liste ACL d’objet, le balisage d’objets et les événements de suppression de restauration d’objets. Ces versions contiennent des informations supplémentaires spécifiques à ces opérations. Les versions 2.2 et 2.3 sont par ailleurs compatibles avec la version 2.1, qu’Amazon S3 utilise actuellement pour tous les autres types de notifications d’événements.

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

Notez les éléments suivants à propos de la structure des messages d’événement :
+ La valeur de clé `eventVersion` contient une version majeure et une version mineure au format `major`.`minor`.

  La version majeure est incrémentée si Amazon S3 apporte à la structure de l’événement une modification qui n’est pas rétrocompatible. Cela inclut la suppression d’un champ JSON déjà présent ou la modification de la représentation du contenu d’un champ (par exemple, un format de date).

  La version mineure est incrémentée si Amazon S3 ajoute de nouveaux champs à la structure de l’événement. Cela peut se produire si de nouvelles informations sont fournies pour certains ou tous les événements existants. Cela peut également se produire si de nouvelles informations sont fournies sur les nouveaux types d’événements introduits. À des fins de compatibilité avec les nouvelles versions mineures de la structure des événements, nous vous recommandons d’ignorer les nouveaux champs dans vos applications.

  Si de nouveaux types d’événement sont introduits, mais que la structure de l’événement n’est pas modifiée, la version de l’événement ne change pas.

  Pour vous assurer que vos applications puissent analyser correctement la structure de l’événement, nous vous recommandons d’effectuer une comparaison égal à sur le numéro de version majeure. Pour vous assurer que les champs attendus par votre application sont présents, nous vous recommandons également d'effectuer une comparaison «  greater-than-or-equal -to » sur la version mineure.
+ La valeur de la clé `eventName` fait référence à la liste des [types de notifications d’événements](https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html), mais elle ne contient pas le préfixe `s3:`.
+ La valeur `userIdentity` clé fait référence à l'ID unique de la ressource Gestion des identités et des accès AWS (IAM) (un utilisateur, un rôle, un groupe, etc.) à l'origine de l'événement. Pour connaître la définition de chaque préfixe d’identification IAM (par exemple, AIDA, AROA, AGPA), consultez [Identifiants uniques](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html##identifiers-unique-ids) dans le *Guide de l’utilisateur IAM*.
+ La valeur `responseElements` clé est utile si vous souhaitez suivre une demande en effectuant un suivi avec AWS Support. Les deux éléments `x-amz-request-id` et `x-amz-id-2` aident Amazon S3 à suivre une demande individuelle. Ces valeurs sont identiques à celles renvoyées par Amazon S3 dans la réponse à la demande qui initie les événements. Vous pouvez donc utiliser ces valeurs pour faire correspondre l’événement à la demande.
+ La clé `s3` fournit des informations sur l’objet et le compartiment concernés par l’événement. La valeur du nom de clé d’objet est codée en URL. Par exemple, `red flower.jpg` devient `red+flower.jpg`. (Amazon S3 renvoie « `application/x-www-form-urlencoded` » comme type de contenu dans la réponse.)

  La valeur de la clé `ownerIdentity` correspond à l’ID client Amazon Retail (Amazon.com) du propriétaire du compartiment. Cette valeur d’ID n’est plus utilisée et n’est conservée qu’à des fins de rétrocompatibilité. 
+ La valeur de la clé `sequencer` permet de déterminer la séquence des événements. Les notifications d’événements n’arrivent pas nécessairement dans le même ordre dans lequel les événement se sont produits. Toutefois, les notifications d’événements qui créent des objets (demandes `PUT`) et suppriment des objets contiennent un `sequencer`. Vous pouvez utiliser cette valeur pour déterminer l’ordre dans lequel se sont produits les événements pour une clé d’objet donnée. 

  Si vous comparez les chaînes `sequencer` provenant de deux notifications d’événements associées à la même clé d’objet, la notification d’événement qui présente la plus grande valeur `sequencer` hexadécimale correspond à l’événement le plus récent. Si vous utilisez des notifications d’événement pour gérer une base de données ou un index distincts de vos objets Amazon S3, nous vous recommandons de comparer et de stocker les valeurs `sequencer` à mesure que vous traitez les notifications associées à chaque événement. 

  Notez ce qui suit :
  + Vous ne pouvez pas utiliser la valeur de la clé `sequencer` pour déterminer l’ordre des événements associés à différentes clés d’objet.
  + La longueur des chaînes `sequencer` est variable. Pour comparer ces valeurs, commencez par ajouter des zéros à gauche de la valeur la plus courte, puis effectuez une comparaison lexicographique.
+ Seule la valeur de la clé `glacierEventData` est visible pour les événements `s3:ObjectRestore:Completed`. 
+ La valeur de la clé `restoreEventData` contient des attributs qui sont liés à votre demande de restauration.
+ La valeur de la clé `replicationEventData` n’est visible que pour les événements de réplication.
+ La valeur de la clé `intelligentTieringEventData` n’est visible que pour les événements S3 Intelligent-Tiering.
+ La valeur de la clé `lifecycleEventData` n’est visible que pour les événements de transition S3 Lifecycle.

## Exemples de messages
<a name="notification-content-structure-examples"></a>

Voici des exemples de messages de notification d’événement Amazon S3.

**Message de test Amazon S3**  
Une fois que vous avez configuré une notification d’événement pour un compartiment, Amazon S3 envoie le message de test suivant.

```
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. }
```

**Note**  
Le message `s3:TestEvent` utilise un autre format que celui des notifications d’événements S3 habituelles. Contrairement aux autres notifications d’événements qui utilisent la structure `Records` présentée précédemment, l’événement de test utilise un format simplifié avec des champs directs. Lors de la mise en œuvre de la gestion des événements, assurez-vous que votre code est capable de faire la distinction entre les deux formats de message et de les gérer correctement.

**Exemple de message envoyé lorsqu’un objet est créé à l’aide d’une demande `PUT`**  
Le message suivant est un exemple de message envoyé par Amazon S3 pour publier un événement `s3:ObjectCreated:Put`.

```
 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. }
```

