Pourquoi l'erreur « Impossible de valider les configurations de destination suivantes » s'affiche lorsque je crée une notification d'événements Amazon S3 ?

Lecture de 5 minute(s)
0

Je souhaite résoudre cette erreur qui se produit lorsque je crée une notification d'événement Amazon Simple Storage Service (Amazon S3) : « Impossible de valider les configurations de destination suivantes lors de la création d'une notification d'événements Amazon S3. »

Brève description

Pour éviter cette erreur, vous devez remplir les conditions suivantes :

  • Lorsque vous créez une notification d'événement Amazon S3, la destination spécifiée doit avoir une politique basée sur les ressources permettant à S3 de publier des notifications sur la destination.
  • La région AWS de destination doit être identique à celle du compartiment S3.
  • Si vous avez chiffré la destination avec une clé AWS Key Management Service (AWS KMS), la stratégie de clé doit autoriser l'accès à S3.

Lorsque vous mettez à jour la configuration d'une notification d'événements, Amazon S3 vérifie l'existence de toutes les destinations d'événements. S3 vérifie également que les destinations d'événements disposent de politiques basées sur les ressources qui permettent à S3 d'effectuer les actions suivantes selon le type de destination de l'événement :

  • Publier des événements
  • Envoyer des messages
  • Invoquer des fonctions

S3 effectue ces vérifications sur les nouvelles destinations d'événements et sur toutes les destinations d'événements existantes que vous ne supprimez pas pendant la mise à jour. En cas d'échec de ces vérifications, le message d'erreur « Impossible de valider les configurations de destination suivantes » pourrait s'afficher.

Remarque : si des erreurs se produisent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), reportez-vous à Résoudre les erreurs de l'interface de la ligne de commande AWS. Assurez-vous aussi que vous utilisez la version la plus récente de l'AWS CLI.

Résolution

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

Ce message d'erreur s'affiche lorsqu'une destination d'événements qui figure dans le compartiment n'existe pas.

Si votre notification d'événement existante envoie des événements vers une destination qui n'existe plus, supprimez ces événements avant de mettre à jour la configuration des notifications d'événements. La notification existe probablement dans le compartiment, mais la destination n'existe pas, car vous l'avez supprimée après avoir mis à jour la configuration des notifications d'événements.

Une bonne pratique consiste à utiliser la même API PutBucketNotificationConfiguration pour supprimer tous les événements dont les destinations n'existent pas. Vous pouvez utiliser la console Amazon S3, l'interface de la ligne de commande AWS ou le kit SDK AWS pour appeler l'API PutBucketNotificationConfiguration.

Vérifier que les destinations d'événements disposent de politiques valides basées sur les ressources

Pour publier des messages vers les services AWS suivants, accordez à Amazon S3 les autorisations nécessaires pour appeler l'API pertinente :

  • Rubrique Amazon Simple Notification Service (Amazon SNS)
  • File d'attente Amazon Simple Queue Service (Amazon SQS)
  • Fonction AWS Lambda

Exemple de politique de destination de rubrique Amazon SNS :

{
    "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:Region:account-id:queue-name",
        "Condition": {
            "ArnLike": {
                "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1"
            },
            "StringEquals": {
                "aws:SourceAccount": "bucket-owner-account-id"
            }
        }
    }]
}

Exemple de politique de destination de file d'attente Amazon 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:Region:account-id:queue-name",
        "Condition": {
            "ArnLike": {
                "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1"
            },
            "StringEquals": {
                "aws:SourceAccount": "bucket-owner-account-id"
            }
        }
    }]
}

Exemple de politique de destination de la fonction Lambda :

{
    "Version": "2012-10-17",
    "Id": "example-ID",
    "Statement": [

        {
            "Sid": "s3invoke",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:Region:account-id:function:function-name",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceAccount": "bucket-owner-account-id"
                },
                "ArnLike": {
                    "AWS:SourceArn": "arn:aws:s3:::awsexamplebucket1"
                }
            }
        }
    ]
}

Si vous ajoutez un nouvel événement au compartiment, assurez-vous que le nouvel événement dispose d'une politique basée sur les ressources valide.

Pour plus d'informations sur la rubrique Amazon SNS ou les autorisations de file d'attente Amazon SQS, reportez-vous à Octroyer des autorisations pour publier des messages dans une rubrique SNS ou dans une file d'attente SQS.

Pour mettre à jour la fonction Lambda avec des politiques valides, reportez-vous au Tutoriel : Utilisation d'un déclencheur Amazon S3 pour appeler une fonction Lambda.

Remarque : si vous utilisez la console S3 pour activer les notifications d'événements, S3 tente de mettre à jour la politique pour vous avant qu'elle ne soit ajoutée à l'événement.

Si la politique basée sur les ressources de destination de l'événement est valide et que la même erreur persiste, vérifiez toutes les destinations d'événements existantes pour voir si les politiques basées sur les ressources sont valides. Si vous modifiez des politiques basées sur les ressources pour les destinations des événements après avoir mis à jour la configuration des notifications d'événements sur le compartiment, cette erreur se produit. Pour éviter cette erreur, assurez-vous que toutes les autorisations sont valides et supprimez les événements dont les destinations sont invalides.

S'assurer que la stratégie de clé AWS KMS est valide pour les rubriques et les files d'attente chiffrées par AWS KMS

Si vous activez le chiffrement AWS KMS pour une destination SQS ou SNS, mettez à jour la stratégie de clé gérée par le client pour autoriser S3 à utiliser la clé. Pour en savoir plus, reportez-vous à Stratégie de clé AWS KMS.

Les clés gérées par AWS, notamment les clés aws/sns et aws/sqs, ne sont pas prises en charge. Si vous utilisez une clé gérée par AWS sur la destination de votre événement, vous devez mettre à jour la destination pour utiliser une clé gérée par le client. Ensuite, mettez à jour la stratégie de clé.

Exemple de stratégie de clé AWS KMS :

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

Informations connexes

Politique IAM pour une rubrique SNS de destination

Politique IAM pour une file d'attente SQS de destination

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