Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Comment puis-je corriger l’erreur « Unable to validate the following destination configurations » dans CloudFormation ?
Je me suis abonné à un service AWS et j’ai reçu le message d’erreur « Impossible de valider les configurations de destination suivantes » dans AWS CloudFormation.
Résolution
Pour résoudre l'erreur Unable to validate, effectuez les actions de dépannage correspondant à votre configuration.
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.
Problèmes liés à la configuration des notifications Lambda
L'ARN de la fonction Lambda n'existe pas ou n'est pas valide
Si votre compartiment Amazon Simple Storage Service (Amazon S3) utilise la propriété AWS Lambda LambdaConfigurations, il est possible que vous receviez l'erreur lambda function does not exist. Cette erreur se produit si l'ARN configuré pour la fonction Lambda dans le modèle CloudFormation n'existe pas ou n'est pas valide.
Pour vérifier si la fonction Lambda existe, exécutez la commande get-function :
aws lambda get-function --function-name YOUR-FUNCTION-ARN-VALUE
Remarque : Remplacez YOUR-FUNCTION-ARN-VALUE par l’ARN de la fonction.
Si vous recevez une erreur dans la sortie de la commande, cela signifie que l’ARN de la fonction n’est pas valide ou n’existe pas. Mettez à jour le modèle pour inclure l’ARN correct. Puis, créez une nouvelle pile avec le modèle mis à jour ou mettez à jour la pile existante.
La fonction Lambda n’est pas autorisée à invoquer Amazon S3
Si vous recevez l'erreur resource you requested does not exist, cela signifie que votre fonction Lambda ne dispose pas d’une autorisation requise. Afin de résoudre ce problème, procédez comme suit :
- Pour vérifier les autorisations de fonction Lambda, exécutez la commande get-policy :
Remarque : Remplacez YOUR-FUNCTION-ARN-VALUE par l’ARN de la fonction et YOUR-REGION par votre région AWS.aws lambda get-policy --function-name YOUR-FUNCTION-ARN-VALUE --region YOUR-REGION
- Pour autoriser la fonction Lambda à invoquer Amazon S3, mettez à jour le modèle CloudFormation pour attacher les autorisations suivantes :
Remarque : Remplacez FUNCTION-ARN-VALUE par l'ARN de la fonction et AccountID par le compte AWS propriétaire de la fonction. Vous pouvez utiliser le pseudo-paramètre AWS::AccountId pour remplacer automatiquement l'ID de compte sur lequel CloudFormation crée la pile.S3Permission: Type: AWS::Lambda::Permission Properties: FunctionName: YOUR-FUNCTION-ARN-VALUE Action: lambda:InvokeFunction Principal: s3.amazonaws.com SourceAccount: !Ref 'AWS::AccountId'
- Pour vous assurer que CloudFormation crée le compartiment S3 uniquement lorsque la fonction Lambda dispose des autorisations requises, ajoutez l'attribut DependsOn :
Remarque : Remplacez FUNCTION-ARN-VALUE par l’ARN de votre fonction.S3Bucket: Type: AWS::S3::Bucket DependsOn: "S3Permission" Properties: NotificationConfiguration: LambdaConfigurations: - Function: YOUR-FUNCTION-ARN-VALUE Event: "s3:ObjectCreated:Put"
Problèmes liés à la configuration des notifications Amazon SNS
L'ARN Amazon SNS n'existe pas ou n'est pas valide
Si votre compartiment S3 utilise la propriété TopicConfigurations, il se peut que vous receviez le message d'erreur Unable to validate the following destination configurations. Cette erreur se produit lorsque la rubrique Amazon Simple Notification Service (Amazon SNS) n'existe pas ou n'est pas valide. Le format et la valeur de l’ARN doivent correspondre à l’ARN de la rubrique SNS.
Pour vérifier si l'ARN de la rubrique SNS existe dans votre compte, exécutez la commande list-topics :
aws sns list-topics \ --region YOUR-REGION \ --query "Topics[?TopicArn=='YOUR-TOPIC-ARN-VALUE']"
Remarque : Remplacez YOUR-REGION par votre région et YOUR-TOPIC-ARN-VALUE par l’ARN de la rubrique.
Si vous ne recevez aucun enregistrement dans la sortie de la commande, cela signifie que la rubrique SNS n’existe pas ou n’est pas valide. Pour résoudre ce problème, créez la rubrique SNS. Assurez-vous de fournir un ARN de rubrique valide dans la propriété TopicConfigurations.
La rubrique SNS n'utilise pas de stratégie d'accès obligatoire
Pour vérifier que la rubrique SNS dispose de la stratégie d'accès requise, procédez comme suit :
- Pour vérifier la stratégie d’accès associée à la rubrique SNS, exécutez la commande get-topic-attributes :
Remarque : Remplacez YOUR-TOPIC-ARN-VALUE par l’ARN de votre rubrique et YOUR-REGION par votre région.aws sns get-topic-attributes \ --topic-arn YOUR-TOPIC-ARN-VALUE \ --region YOUR-REGION \ --query 'Attributes.Policy'
- La stratégie d'accès doit autoriser le service Amazon S3 à publier sur la rubrique. Si la stratégie ne dispose pas de ces autorisations, modifiez la stratégie d'accès de la rubrique pour inclure les autorisations suivantes :
Remarque : Remplacez YOUR-TOPIC-ARN-VALUE par l'ARN de votre rubrique.{ "Sid": "S3AccessForNotification", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "YOUR-TOPIC-ARN-VALUE" }
- Vérifiez que vous pouvez maintenant créer une nouvelle pile ou mettre à jour la pile existante.
Problème lié à la stratégie de clé AWS KMS associée à la rubrique SNS
La stratégie AWS Key Management Service (AWS KMS) doit autoriser Amazon S3 à accéder à la clé AWS KMS. Pour consulter la configuration de chiffrement et la stratégie minimale requise, procédez comme suit :
Pour vérifier si la rubrique SNS est chiffrée à l'aide d'une clé AWS KMS, exécutez la commande get-topic-attributes :
aws sns get-topic-attributes \ --topic-arn YOUR-TOPIC-ARN-VALUE \ --region YOUR-REGION \ --query "Attributes.KmsMasterKeyId"
Remarque : Remplacez YOUR-TOPIC-ARN-VALUE par l’ARN de votre rubrique et YOUR-REGION par votre région. Si la rubrique SNS est chiffrée, la sortie de la commande affiche l'ARN de la clé AWS KMS.
Pour vérifier la stratégie de clé AWS KMS, exécutez la commande get-key-policy :
aws kms get-key-policy \ --key-id YOUR-KMS-KEY-ARN \ --policy-name default \ --region YOUR-REGION | jq -r '.Policy' | jq .
Remarque : Remplacez YOUR-KMS-KEY-ARN par l’ARN de votre clé AWS KMS et YOUR-REGION par votre région. Pour une meilleure lisibilité, il est recommandé d'utiliser la commande jq pour afficher le contenu de la stratégie au format JSON. Pour plus d'informations, consultez la page ./jq sur le site Web de jq.
L'exemple de stratégie suivant illustre la stratégie de clé AWS KMS minimale requise :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": ["kms:GenerateDataKey*", "kms:Decrypt"], "Resource": "YOUR-KMS-KEY-ARN" } ] }
Remarque : Remplacez YOUR-KMS-KEY-ARN par l'ARN de votre clé AWS KMS.
Si votre stratégie ne dispose pas des autorisations requises, mettez à jour la stratégie de clé AWS KMS.
Problèmes liés à la configuration des notifications Amazon SQS
L'ARN Amazon SQS n'existe pas ou n'est pas valide
Si votre compartiment S3 utilise la propriété QueueConfigurations, il est possible que vous receviez le message d'erreur SQS queue does not exist. Cette erreur se produit lorsque l'ARN Amazon Simple Queue Service (Amazon SQS) n'existe pas ou n'est pas valide.
Pour vérifier si la file d'attente Amazon SQS existe dans le compte, exécutez la commande list-queues :
aws sqs list-queues --queue-name-prefix YOUR-SQS-QUEUE-NAME --region YOUR-REGION
Remarque : Remplacez YOUR-SQS-QUEUE-NAME par le nom de votre file d’attente SQS et YOUR-REGION par votre région.
Si la file d’attente SQS n’existe pas, vous pouvez soit créer une file d’attente soit mettre à jour le modèle avec une file d’attente existante :
Resources: SNSTopic: Type: AWS::SNS::Topic SNSTopicPolicy: Type: AWS::SNS::TopicPolicy Properties: PolicyDocument: Id: MyTopicPolicy Version: '2012-10-17' Statement: - Sid: Statement-id Effect: Allow Principal: Service: s3.amazonaws.com Action: "SNS:Publish" Resource: !Ref SNSTopic Condition: ArnLike: aws:SourceArn: !Join - '' - - 'arn:aws:s3:::' - !Ref S3Bucket Topics: - !Ref SNSTopic S3Bucket: Type: AWS::S3::Bucket Properties: AccessControl: BucketOwnerFullControl
La file d'attente SQS ne dispose pas de la stratégie d'accès requise
Pour vérifier que la file d'attente SQS utilise la stratégie d'accès requise, vous pouvez utiliser l'AWS CLI ou la console CloudFormation.
Pour utiliser l'AWS CLI afin de vérifier la stratégie d'accès de votre file d'attente, procédez comme suit :
- Pour vérifier la stratégie de file d'attente SQS, exécutez la commande get-queue-attributes :
Remarque : Remplacez YOUR-SQS-QUEUE-NAME par le nom de votre file d'attente SQS, YOUR-REGION par votre région et YOUR-SQS-QUEUE-URL par l'URL de votre file d'attente. Pour une meilleure lisibilité, il est recommandé d'utiliser la commande jq pour afficher le contenu de la stratégie au format JSON. Pour plus d'informations, consultez la page ./jq sur le site Web de jq.aws sqs get-queue-attributes \ --queue-url YOUR-SQS-QUEUE-URL \ --region YOUR-REGION \ --attribute-names Policy | jq .
- Si votre stratégie n'a pas accès à Amazon S3, créez une nouvelle stratégie d'accès dans un fichier JSON :
Remarque : Remplacez YOUR-SQS-QUEUE-ARN par l'ARN de la file d'attente.{"Policy": "{\"Version\":\"2012-10-17\",\"Statement\": [{\"Sid\":\"S3AccessForNotification\",\"Effect\":\"Allow\",\"Principal\": {\"Service\":\"s3.amazonaws.com\"},\"Action\":\"SQS:SendMessage\",\"Resource\":\"YOUR-SQS-QUEUE-ARN\"}]}"}
- Pour mettre à jour la stratégie, exécutez la commande set-queue-attributes :
Remarque : Remplacez YOUR-SQS-QUEUE-URL par l'URL de votre file d'attente et sqs-policy.json par votre fichier JSON de stratégie.aws sqs set-queue-attributes --queue-url YOUR-SQS-QUEUE-URL --attributes file://sqs-policy.json
Pour utiliser la console CloudFormation afin de vérifier la stratégie d'accès de votre file d'attente, mettez à jour le modèle CloudFormation afin d'inclure la ressource suivante :
SampleSQSPolicy: Type: AWS::SQS::QueuePolicy Properties: Queues: - YOUR-SQS-QUEUE-URL PolicyDocument: Statement: - Action: - "SQS:SendMessage" Effect: "Allow" Resource: YOUR-SQS-QUEUE-ARN Principal: Service: - "s3.amazonaws.com"
Remarque : Remplacez YOUR-SQS-QUEUE-URL par l'URL de votre file d'attente et YOUR-SQS-QUEUE-ARN par l'ARN de votre file d'attente.
Après avoir créé ou mis à jour la stratégie, vérifiez que vous pouvez maintenant créer une nouvelle pile ou mettre à jour la pile existante.
Pour plus d'informations, consultez la section Quelles sont les autorisations dont j'ai besoin pour accéder à une file d'attente Amazon SQS ? Si les problèmes persistent, consultez la section Comment puis-je résoudre l'erreur Amazon SQS « Invalid value for the parameter policy » ?
Problème lié à la stratégie de clé AWS KMS associée à la file d’attente SQS
Pour résoudre les problèmes liés à la stratégie de clé AWS KMS, procédez comme suit :
- Pour obtenir l'URL de la file d'attente SQS, exécutez la commande list-queues :
Remarque : Remplacez YOUR-SQS-QUEUE-NAME par le nom de votre file d’attente SQS et YOUR-REGION par votre région.aws sqs list-queues --queue-name-prefix YOUR-SQS-QUEUE-NAME --region YOUR-REGION
- Pour obtenir l'ID de clé AWS KMS, exécutez la commande get-queue-attributes :
Remarque : Remplacez YOUR-SQS-QUEUE-URL par l'URL de votre file d'attente et YOUR-REGION par votre région.aws sqs get-queue-attributes \ --queue-url YOUR-SQS-QUEUE-URL \ --region YOUR-REGION \ --attribute-names KmsMasterKeyId
- Pour obtenir l'ARN de la clé AWS KMS, exécutez la commande describe-key :
Remarque : Remplacez YOUR-KMS-KEY-ID par l'ID de clé.aws kms describe-key --key-id YOUR-KMS-KEY-ID
- Pour afficher la stratégie de clé complète, exécutez la commande get-key-policy :
Remarque : Remplacez YOUR-KMS-KEY-ARN par votre ARN de clé AWS KMS et YOUR-REGION par votre région.aws kms get-key-policy \ --key-id YOUR-KMS-KEY-ARN \ --policy-name default \ --region YOUR-REGION
- Dans le résultat, vérifiez que la stratégie autorise Amazon S3 à utiliser la clé AWS KMS. Exemples d'autorisations :
Remarque : Remplacez YOUR-KMS-KEY-ARN par l'ARN de la clé AWS KMS.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": ["kms:GenerateDataKey*", "kms:Decrypt"], "Resource": "YOUR-KMS-KEY-ARN" } ] }
Si votre stratégie ne dispose pas des autorisations requises, mettez à jour la stratégie de clé.
Dépendance circulaire entre les ressources
Important : Avant d’abonner une rubrique SNS aux notifications d’événements S3, vous devez spécifier les autorisations appropriées dans AWS::SNS::TopicPolicy. La stratégie de rubrique doit exister avant de créer l’abonnement.
Pour créer la stratégie de rubrique, vous devez d'abord utiliser un attribut DependsOn sur la ressource AWS::S3::Bucket. Cet attribut crée la stratégie de la rubrique avant le compartiment. Vous pouvez également utiliser deux opérations de pile pour créer d'abord toutes les ressources, puis mettre à jour la ressource S3Bucket pour inclure la propriété NotificationConfiguration. Effectuez l'une des actions suivantes.
Spécifier une valeur pour BucketName dans votre modèle CloudFormation
Utilisez un nom statique pour votre compartiment S3 dans la propriété BucketName dans la ressource S3Bucket de votre modèle CloudFormation. Le nom statique utilisé pour le compartiment S3 supprime la dépendance intrinsèque entre la stratégie de rubrique SNS et Amazon S3.
Important : Les noms des compartiments S3 doivent être uniques au niveau mondial.
L’exemple de modèle CloudFormation suivant spécifie une valeur codée en dur (-Bucket-Name-) pour la propriété BucketName :
Resources: SNSTopic: Type: AWS::SNS::Topic SNSTopicPolicy: Type: AWS::SNS::TopicPolicy Properties: PolicyDocument: Id: MyTopicPolicy Version: '2012-10-17' Statement: - Sid: Statement-id Effect: Allow Principal: Service: s3.amazonaws.com Action: "SNS:Publish" Resource: !Ref SNSTopic Condition: ArnLike: aws:SourceArn: !Join - '' - - 'arn:aws:s3:::' - '-Bucket-Name-' Topics: - !Ref SNSTopic S3Bucket: Type: AWS::S3::Bucket DependsOn: - SNSTopicPolicy Properties: AccessControl: BucketOwnerFullControl BucketName: "-Bucket-Name-" NotificationConfiguration: TopicConfigurations: - Topic: !Ref SNSTopic Event: s3:ObjectCreated:Put
Remarque : Remplacez -Bucket-Name- par le nom de votre compartiment. La ressource S3Bucket possède un attribut DependsOn explicite défini sur SNSTopicPolicy. L’attribut spécifie que le modèle crée la ressource SNSTopicPolicy avant la ressource S3Bucket.
Utiliser un paramètre pour BucketName
Les paramètres vous permettent d'utiliser le même modèle CloudFormation pour des compartiments S3 portant des noms différents. Lors de la création de la pile, vous pouvez définir une valeur pour le paramètre ParamBucketName. Exemple de stratégie :
Parameters: paramBucketName: Type: String Description: Bucket Name Resources: SNSTopic: Type: AWS::SNS::Topic SNSTopicPolicy: Type: AWS::SNS::TopicPolicy Properties: PolicyDocument: Id: MyTopicPolicy Version: '2012-10-17' Statement: - Sid: Statement-id Effect: Allow Principal: Service: s3.amazonaws.com Action: "SNS:Publish" Resource: !Ref SNSTopic Condition: ArnLike: aws:SourceArn: !Join - '' - - 'arn:aws:s3:::' - !Ref paramBucketName Topics: - !Ref SNSTopic S3Bucket: Type: AWS::S3::Bucket DependsOn: - SNSTopicPolicy Properties: AccessControl: BucketOwnerFullControl BucketName: !Ref paramBucketName NotificationConfiguration: TopicConfigurations: - Topic: !Ref SNSTopic Event: s3:ObjectCreated:Put
Remarque : Dans l’exemple précédent, la ressource S3Bucket utilise un attribut DependsOn explicite défini sur SNSTopicPolicy.
Créer une pile, puis la mettre à jour
Remarque : Dans cette méthode, la ressource S3Bucket n'inclut pas la propriété BucketName. CloudFormation crée donc un nom de compartiment unique pour vous. Pour éviter la dépendance circulaire, n'utilisez pas d'attribut DependsOn.
Commencez par créer la pile sans la propriété NotificationConfiguration dans la ressource S3Bucket. Exemple :
Resources: SNSTopic: Type: AWS::SNS::Topic SNSTopicPolicy: Type: AWS::SNS::TopicPolicy Properties: PolicyDocument: Id: MyTopicPolicy Version: '2012-10-17' Statement: - Sid: Statement-id Effect: Allow Principal: Service: s3.amazonaws.com Action: "SNS:Publish" Resource: !Ref SNSTopic Condition: ArnLike: aws:SourceArn: !Join - '' - - 'arn:aws:s3:::' - !Ref S3Bucket Topics: - !Ref SNSTopic S3Bucket: Type: AWS::S3::Bucket Properties: AccessControl: BucketOwnerFullControl
Ajoutez la propriété NotificationConfiguration dans la ressource S3Bucket, puis mettez à jour la pile. Exemple :
Resources: SNSTopic: Type: AWS::SNS::Topic SNSTopicPolicy: Type: AWS::SNS::TopicPolicy Properties: PolicyDocument: Id: MyTopicPolicy Version: '2012-10-17' Statement: - Sid: Statement-id Effect: Allow Principal: Service: s3.amazonaws.com Action: "SNS:Publish" Resource: !Ref SNSTopic Condition: ArnLike: aws:SourceArn: !Join - '' - - 'arn:aws:s3:::' - !Ref S3Bucket Topics: - !Ref SNSTopic S3Bucket: Type: AWS::S3::Bucket Properties: AccessControl: BucketOwnerFullControl NotificationConfiguration: TopicConfigurations: - Topic: !Ref SNSTopic Event: s3:ObjectCreated:Put
Informations connexes
Octroi d’autorisations pour publier des messages de notification d’événements vers une destination
Gestion des ressources AWS en tant qu'unité unique avec les piles AWS CloudFormation
Vidéos associées


Contenus pertinents
- L3 Troubleshooting Workshop - Error when trying to increase the size of the Application settings VHDdemandé il y a un moislg...
- demandé il y a 10 moislg...
- demandé il y a 4 moislg...
- AWS OFFICIELA mis à jour il y a un an