Pourquoi l'erreur « Unable to validate the following destination configurations » s'affiche-t-elle lorsque j’utilise des notifications d'événement Amazon S3 ?

Lecture de 6 minute(s)
0

Lorsque j'utilise les notifications d'événement Amazon Simple Storage Service (Amazon S3) pour ajouter une configuration de notification, le message d'erreur « Unable to validate the following destination configurations when creating an Amazon S3 Event Notification » s'affiche. Je souhaite dépanner et résoudre ce problème.

Brève description

Pour éviter les problèmes de validation liés à vos configurations de destination, prenez les mesures suivantes :

  • La destination spécifiée doit disposer d'une politique basée sur les ressources qui permet à Amazon S3 de publier des notifications vers 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.

Si vous mettez à jour la configuration des notifications 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 les vérifications sur les nouvelles destinations d'événement et sur toutes les destinations d'événement existantes que vous ne supprimez pas pendant la mise à jour. En cas d'échec de ces vérifications, le message d'erreur « Unable to validate the following destination configurations » pourrait s'afficher.

Résolution

Exécuter le dossier d’exploitation d'automatisation AWSSupport-Troubleshoots3EventNotifications

Il est recommandé d'utiliser AWSSupport-Troubleshoots3EventNotifications pour résoudre les problèmes courants qui se produisent lorsque vous ajoutez une configuration des notifications d'événements.

Remarque :

  • Le dossier d’exploitation ne peut évaluer les configurations des notifications d'événements que lorsque le propriétaire du compartiment est le même que le propriétaire du compte AWS sur lequel vous exécutez l'automatisation.
  • Le dossier d’exploitation ne peut pas évaluer les politiques relatives aux ressources de destination hébergées sur un autre compte.

Suivez les étapes suivantes pour lancer l'automatisation :

  1. Ouvrez la console AWS Systems Manager, puis ouvrez AWSSupport-TroubleshootS3EventNotifications.
  2. Sélectionnez Exécuter l'automatisation.
  3. Saisissez vos paramètres d'entrée.
  4. Sélectionnez Exécuter.
  5. Examinez les résultats dans la section Sorties.

Le rapport final contient les ressources configurées avec le compartiment S3 en tant que notification d'événement de destination. Si le problème de notification d'événement Amazon S3 persiste, utilisez la solution suivante pour résoudre les problèmes manuellement.

Supprimer des événements pour les destinations qui n'existent plus

Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Si votre notification d'événement existante envoie des événements vers une destination qui n'existe plus, supprimez les é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.

Vous pouvez utiliser la console Amazon S3, l'AWS CLI ou l'API PutBucketNotificationConfiguration pour supprimer tous les événements relatifs à des destinations qui n'existent plus. Il est recommandé d'utiliser la même API PutBucketNotificationConfiguration pour tous les événements.

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 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"
                }
            }
        }
    ]
}

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, consultez la section 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, consultez la section Tutoriel : Utilisation d'un déclencheur Amazon S3 pour appeler une fonction Lambda.

Si vous utilisez la console S3 pour activer Notifications d’événements, S3 tente de mettre à jour la politique avant que vous ne l’ajoutiez à 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 survient, vérifiez toutes les destinations d’événements existantes pour voir si les politiques basées sur les ressources sont valides. Si vous modifiez une politique basée sur les ressources pour les destinations des événements après avoir mis à jour la configuration des notifications d'événements sur le compartiment, la validation échoue. Pour éviter ce problème, assurez-vous que toutes les autorisations sont valides et supprimez les événements dont les destinations sont non valides.

S’assurer que la stratégie de clé AWS KMS est appropriée 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 politique de clé gérée par le client pour autoriser S3 à utiliser la clé.

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 AWS Identity and Access Management (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 2 mois