Démonstration : configuration d'un compartiment pour les notifications (rubrique SNS ou file d'attente SQS) - Amazon Simple Storage Service

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.

Démonstration : configuration d'un compartiment pour les notifications (rubrique SNS ou file d'attente SQS)

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 plus d’informations, consultez Activation d'Amazon EventBridge.

Résumé de la procédure détaillée

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.

Vous pouvez suivre toutes ces étapes via la console sans écrire de code. En outre, des exemples de code utilisant AWS des SDK 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.

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

  3. Ajouter une configuration de notifications à un compartiment.

Étape 1 : Créer une file d'attente Amazon SQS

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, veuillez consulter Démarrez avec Amazon SQS dans le Manuel du développeur Amazon Simple Queue Service.

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

    2. Dans l'onglet Access policy (Stratégie d'accès), choisissez Edit (Modifier).

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

      { "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "SQS:SendMessage" ], "Resource": "SQS-queue-ARN", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1" }, "StringEquals": { "aws:SourceAccount": "bucket-owner-account-id" } } } ] }
    4. Choisissez Enregistrer.

  3. (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.

    { "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 dans le Manuel du développeur Amazon Simple Notification Service.

    • Gestion des clés dans le Manuel du développeur Amazon Simple Queue Service.

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

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 du Manuel du développeur Amazon Simple Notification Service.

  2. Abonnez-vous à la rubrique. Dans le cadre de cet exercice, définissez l'e-mail comme protocole de communication. Pour obtenir des instructions, veuillez consulter Abonnement à une rubrique Amazon SNS 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.

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

    { "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "Example SNS topic policy", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "SNS:Publish" ], "Resource": "SNS-topic-ARN", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:bucket-name" }, "StringEquals": { "aws:SourceAccount": "bucket-owner-account-id" } } } ] }
  4. 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

Vous pouvez activer les notifications de compartiment à l'aide de la console Amazon S3 ou par programmation à l'aide AWS de kits de développement logiciel (SDK). Choisissez l'une des deux méthodes pour configurer les notifications de votre compartiment. Cette section fournit des exemples de code à utiliser avec les kits AWS SDK pour Java et .NET.

Option A : Activer des notifications d'un compartiment via la console

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.

Option B : activer les notifications sur un bucket à l'aide des AWS SDK

.NET

L'exemple de code C# 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 .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

L'exemple suivant montre comment ajouter une configuration de notification à un compartiment. Pour obtenir des instructions sur la création et le test d'un échantillon fonctionnel, consultez Getting Started dans le guide du AWS SDK for Java développeur.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.*; import java.io.IOException; import java.util.EnumSet; public class EnableNotificationOnABucket { public static void main(String[] args) throws IOException { String bucketName = "*** Bucket name ***"; Regions clientRegion = Regions.DEFAULT_REGION; String snsTopicARN = "*** SNS Topic ARN ***"; String sqsQueueARN = "*** SQS Queue ARN ***"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); BucketNotificationConfiguration notificationConfiguration = new BucketNotificationConfiguration(); // Add an SNS topic notification. notificationConfiguration.addConfiguration("snsTopicConfig", new TopicConfiguration(snsTopicARN, EnumSet.of(S3Event.ObjectCreated))); // Add an SQS queue notification. notificationConfiguration.addConfiguration("sqsQueueConfig", new QueueConfiguration(sqsQueueARN, EnumSet.of(S3Event.ObjectCreated))); // Create the notification configuration request and set the bucket notification // configuration. SetBucketNotificationConfigurationRequest request = new SetBucketNotificationConfigurationRequest( bucketName, notificationConfiguration); s3Client.setBucketNotificationConfiguration(request); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }

Étape 4 : Tester la configuration

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, veuillez consulter Recevez et supprimez votre message dans la section « Mise en route » du Manuel du développeur Amazon Simple Queue Service.