Pourquoi les notifications d’événements Amazon S3 ne sont-elles pas transmises à une file d’attente Amazon SQS utilisant le chiffrement côté serveur ?

Lecture de 6 minute(s)
0

Les notifications d’événements Amazon Simple Storage Service (Amazon S3) ne sont pas transmises à ma file d’attente Amazon Simple Queue Service (Amazon SQS) utilisant le chiffrement côté serveur (SSE).

Résolution

Suivez ces étapes pour configurer et transmettre des notifications d’événements S3 à une file d’attente Amazon SQS qui utilise le chiffrement côté serveur (SSE).

Création d’une clé AWS KMS gérée par le client et configuration de la stratégie de clé

Vous devez chiffrer les files d’attente Amazon SQS avec une clé AWS Key Management Service (AWS KMS) gérée par le client. Accordez ensuite au principal du service Amazon S3 des autorisations pour travailler avec des files d’attente chiffrées.

Remarque : vous ne pouvez pas modifier la clé KMS gérée par AWS par défaut. Pour cela, vous devez utiliser une clé gérée par le client. Vous devez également ajouter des autorisations à la clé AWS KMS pour permettre l’accès à un principal du service indiqué.

Pour accorder des autorisations au principal du service Amazon S3, ajoutez l’instruction suivante à la stratégie de clé gérée par le client :

{  "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": "*"
    },
    {
      "Sid": "Enable IAM User Permissions",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::"111122223333":root"
      },
      "Action": "kms:*",
      "Resource": "*"
    }
  ]
}

Remarque : remplacez « arn:aws:iam::"111122223333":root » par votre ARN.

Création d’une file d’attente SQS et accord des autorisations à Amazon S3

  1. Créez une file d’attente Amazon SQS configurée pour utiliser SSE. Pour en savoir plus, consultez Configuration du chiffrement côté serveur (SSE) pour une file d’attente (console).
  2. Pour autoriser Amazon S3 à envoyer des messages à la file d’attente, ajoutez l’instruction d’autorisation suivante à la file d’attente SQS :
{  "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:sqs-s3-kms-same-account",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "123456789"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:s3:*:*:hellobucket"
        }
      }
    }
  ]
}

Remarque : remplacez la valeur Resource par l’ARN de votre file d’attente SQS, remplacez aussi aws:SourceAccount par l’ID de votre compte source AWS et aws:SourceArn par l’ARN de votre compartiment Amazon S3.

Dans l’exemple précédent, le compartiment S3 hellobucket pour le compte client 123456789 peut envoyer des notifications d’événements ObjectCreated à la file d’attente SQS indiquée. Pour en savoir plus sur les autorisations requises pour travailler avec des files d’attente SQS chiffrées, consultez Gestion des clés.

Création d’un événement S3

Voici comment procéder pour ajouter un événement Amazon S3 à votre compartiment :

  1. Ouvrez la console S3, puis choisissez le Nom en lien hypertexte de votre compartiment S3.
  2. Dans l’onglet Propriétés, choisissez Créer une notification d’événement.
  3. Sur la page Créer une notification d’événement, saisissez les informations suivantes :
    Pour Nom de l’événement, saisissez un nom.
    Pour Types d’événements, sélectionnez les types d’événements pour lesquels vous souhaitez recevoir des notifications.
    Pour Destination, choisissez File d’attente SQS.
    Pour File d’attente SQS, sélectionnez votre file d’attente.
  4. Sélectionnez Enregistrer les modifications.

Vérification de la configuration correcte du type d’événement Amazon S3

Lorsque vous configurez une notification d’événement Amazon S3, vous devez indiquer les types d’événements pris en charge pour qu’Amazon S3 envoie la notification. Si un type d’événement que vous n’avez pas indiqué se produit dans votre compartiment Amazon S3, Amazon S3 n’envoie pas de notification.

Vérification des filtres de noms de clé d’objet au format codé en URL

Lorsque les notifications d’événements sont configurées pour utiliser le filtrage des noms de clé d’objet, les notifications sont publiées uniquement pour les objets dotés de certains préfixes ou suffixes.

Si vous utilisez des caractères spéciaux dans les préfixes ou les suffixes, vous devez les saisir au format codé en URL. Pour en savoir plus, consultez Configuration des notifications d’événements à l’aide du filtrage par nom de clé d’objet.

Remarque : dans les filtres, vous ne pouvez pas utiliser de caractère générique (« * ») comme préfixe ou suffixe. 

Vérification des destinations d’événements

Le message d’erreur « Impossible de valider les configurations de destination suivantes » s’affiche lorsqu’une destination de compartiment de notification d’événement Amazon S3 n’existe pas.

Si vous avez configuré une notification d’événement pour envoyer des événements vers une destination qui n’existe plus, vous devez supprimer ces événements. Veillez à supprimer les événements avant de mettre à jour la configuration des notifications d’événements.

Remarque : il est recommandé de supprimer tous les événements dont les destinations n’existent pas à l’aide de l’API PutBucketNotificationConfiguration.

Vérification des régions du compartiment S3 et de la file d’attente SQS

Vous ne pouvez pas envoyer de notifications à partir d’un compartiment S3 situé dans une région AWS vers une file d’attente Amazon SQS située dans une autre région. Lorsqu’une file d’attente Amazon SQS se trouve dans une autre région, vous devez alors définir une rubrique Amazon Simple Notification Service (Amazon SNS) comme destination du compartiment S3. Amazon SNS prend en charge l’envoi de notifications interrégionales aux files d’attente Amazon SQS et aux fonctions AWS Lambda.

Pour en savoir plus, consultez Envoi de messages Amazon SNS à une file d’attente Amazon SQS ou à une fonction Lambda d’une autre région.

Vérification des messages envoyés à la file d’attente Amazon SQS

Utilisez la métrique NumberOfMessagesSent d’Amazon CloudWatch pour vérifier que les messages ont été envoyés à la file d’attente Amazon SQS.

Pour en savoir plus, consultez Pourquoi ma file d’attente Amazon SQS ne reçoit-t-elle pas de messages ?

Résolution des problèmes à l’aide d’AWS Support

Si les étapes précédentes n’ont pas permis de résoudre votre problème, contactez AWS Support. Votre correspondance doit comporter la valeur RequestId et l’horodatage avec le fuseau horaire des appels d’API ayant échoué.

Informations connexes

Que puis-je faire pour que mon abonnement Amazon SQS reçoive les notifications de ma rubrique Amazon SNS ?

Notifications d’événements Amazon S3

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

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 7 mois