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 envoyées à ma file d'attente Amazon Simple Queue Service (Amazon SQS) utilisant le chiffrement côté serveur (SSE).

Résolution

Procédez comme suit pour configurer et envoyer des notifications d'événements S3 à une file d'attente Amazon SQS qui utilise le chiffrement côté serveur (SSE).

Créer une clé AWS KMS gérée par le client et configurer 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. Vous devez plutôt utiliser une clé gérée par le client pour ce processus. Vous devez également ajouter des autorisations à la clé AWS KMS pour permettre l'accès à un principal de service spécifié.

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éer une file d'attente SQS et accordez des autorisations à Amazon S3

  1. Créez une file d'attente Amazon SQS configurée pour utiliser SSE. Pour plus d'informations, reportez-vous à Configurer le 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, 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 spécifiée. Pour plus d'informations sur les autorisations requises pour travailler avec des files d'attente SQS chiffrées, reportez-vous à Gestion des clés.

Créer un événement S3

Pour ajouter un événement Amazon S3 à votre compartiment, procédez comme suit :

  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. Choisissez Enregistrer les modifications.

Vérifier que votre type d'événement Amazon S3 est correctement configuré

Lorsque vous configurez une notification d'événement Amazon S3, vous devez spécifier 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 spécifié se produit dans votre compartiment Amazon S3, Amazon S3 n'envoie pas la notification.

Vérifier que les filtres de nom de clé de votre objet sont 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 ne sont publiées que pour les objets dotés de préfixes ou de suffixes spécifiques.

Si vous utilisez des caractères spéciaux dans vos préfixes ou suffixes, vous devez les saisir au format codé en URL. Pour plus d'informations, reportez-vous à Configuration des notifications d'événement à l'aide du filtrage des noms de clé d'objet.

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

Vérifier que toutes les destinations d'événements existent

L'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. Assurez-vous de supprimer les événements avant de mettre à jour la configuration des notifications d'événements.

Remarque : il est recommandé d'utiliser l'API PutBucketNotificationConfiguration pour supprimer tous les événements dont les destinations n'existent pas.

Vérifier les régions du compartiment S3 et de la file d'attente SQS

Vous ne pouvez pas envoyer de notifications à partir d'un compartiment S3 d'une région AWS vers une file d'attente Amazon SQS d'une autre région. Définissez plutôt une rubrique Amazon Simple Notification Service (Amazon SNS) comme destination du compartiment S3 avec une file d'attente Amazon SQS d'une autre région. Amazon SNS prend en charge l'envoi de notifications entre régions aux files d'attente Amazon SQS et aux fonctions AWS Lambda.

Pour plus d'informations, reportez-vous à Envoi de messages Amazon SNS à une file d'attente Amazon SQS ou à une fonction Lambda dans une autre région.

Vérifier que les messages ont été 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 plus d'informations, reportez-vous à Pourquoi ma file d'attente Amazon SQS ne reçoit-elle pas de messages ?

Résoudre les problèmes à l'aide d'AWS Support

Si les étapes précédentes ne résolvent pas votre problème, contactez AWS Support. Incluez dans votre correspondance la valeur RequestId et l'horodatage avec le fuseau horaire des appels d'API ayant échoué.

Informations connexes

Comment faire pour que mon abonnement Amazon SQS reçoive correctement une notification provenant de ma rubrique Amazon SNS ?

Notifications d'événements Amazon S3

Procédure pas à pas : configuration d'un compartiment pour les notifications (rubrique SNS ou file d'attente SQS)

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