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.
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.
Rubriques
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 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 :
-
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.
-
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.
-
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.
-
À l’aide de la console Amazon SQS, créez une file d’attente. Pour obtenir des instructions, consultez Démarrez avec Amazon SQS dans le Manuel du développeur Amazon Simple Queue Service.
-
Remplacez la stratégie d’accès qui est associée à la file d’attente par la stratégie ci-après.
-
Dans la console Amazon SQS, dans la liste Queues (Files d’attente), sélectionnez le nom de la file d’attente.
-
Dans l’onglet Access policy (Stratégie d’accès), choisissez Edit (Modifier).
-
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
" } } } ] } -
Choisissez Enregistrer.
-
-
(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.
-
-
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.
-
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.
-
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 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.
-
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:*:*:
" }, "StringEquals": { "aws:SourceAccount": "amzn-s3-demo-bucket
bucket-owner-account-id
" } } } ] } -
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 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
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 compartiment à l'aide du AWS SDKs
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);
}
}
}
}
É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, consultez Recevez et supprimez votre message dans la section « Mise en route » du Manuel du développeur Amazon Simple Queue Service.