Résolution des problèmes liés aux blue/green déploiements Amazon ECS - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des problèmes liés aux blue/green déploiements Amazon ECS

Ce qui suit fournit des solutions aux problèmes courants que vous pouvez rencontrer lors de l'utilisation de blue/green déploiements avec Amazon ECS. Blue/green des erreurs de déploiement peuvent survenir au cours des phases suivantes :

  • Chemin synchrone : erreurs qui apparaissent immédiatement en réponse aux appels d’API CreateService ou UpdateService.

  • Chemin asynchrone : erreurs qui apparaissent dans le champ statusReason de DescribeServiceDeployments et entraînent une restauration du déploiement

Astuce

Vous pouvez utiliser les assistants Serveur Amazon ECS MCP dotés d'intelligence artificielle pour surveiller les déploiements et résoudre les problèmes de déploiement à l'aide du langage naturel.

Erreurs de configuration de l’équilibreur de charge

La configuration de l'équilibreur de charge est un élément essentiel des blue/green déploiements dans Amazon ECS. Une configuration correcte des règles d’écoute, des groupes cibles et des types d’équilibreurs de charge est essentielle à la réussite des déploiements. Cette section couvre les problèmes courants de configuration des équilibreurs de charge qui peuvent entraîner l'échec blue/green des déploiements.

Pour résoudre les problèmes d’équilibreur de charge, il est important de comprendre la relation entre les règles d’écoute et les groupes cibles. Dans le cadre d'un blue/green déploiement :

  • La règle d’écoute de production dirige le trafic vers la révision de service actuellement active (bleue)

  • La règle d’écoute de test peut être utilisée pour valider la nouvelle révision de service (verte) avant le transfert du trafic de production

  • Les groupes cibles sont utilisés pour enregistrer les instances de conteneur à partir de chaque révision de service

  • Au cours du déploiement, le trafic passe progressivement de la révision de service bleue à la révision de service verte en ajustant les pondérations des groupes cibles dans les règles d’écoute

Erreurs de configuration des règles d’écoute

Les problèmes suivants sont liés à une configuration incorrecte des règles d'écoute pour les blue/green déploiements.

Utilisation d’un ARN d’écouteur Application Load Balancer au lieu d’un ARN de règle d’écoute

Message d’erreur : productionListenerRule has an invalid ARN format. Must be RuleArn for ALB or ListenerArn for NLB. Got: arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-alb/abc123/def456

Solution : lorsque vous utilisez un Application Load Balancer, vous devez spécifier un ARN de règle d’écoute pour productionListenerRule et testListenerRule, et non un ARN d’écouteur. Pour les Network Load Balancer, vous devez utiliser l’ARN de l’écouteur.

Pour plus d’informations sur la manière de trouver l’ARN de l’écouteur, consultez la section Écouteurs pour vos Application Load Balancer dans le Guide de l’utilisateur Application Load Balancer. L’ARN d’une règle a le format arn:aws:elasticloadbalancing:region:account-id:listener-rule/app/....

Utiliser la même règle pour les écouteurs de production et de test

Message d’erreur : The following rules cannot be used as both production and test listener rules: arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-alb/abc123/def456/ghi789

Solution : vous devez utiliser des règles d’écoute différentes pour le trafic de production et de test. Créez une règle d’écoute distincte pour le trafic de test qui achemine le trafic vers votre groupe cible de test.

Groupe cible non associé aux règles d’écoute

Message d’erreur : Service deployment rolled back because of invalid networking configuration: Target group arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/myAlternateTG/abc123 is not associated with either productionListenerRule or testListenerRule.

Solution : le groupe cible principal et le groupe cible secondaire doivent être associés à la règle d’écoute de production ou à la règle d’écoute de test. Mettez à jour la configuration de votre équilibreur de charge pour vous assurer que les deux groupes cibles sont correctement associés à vos règles d’écoute.

Règle d’écoute de test manquante avec un Application Load Balancer

Message d’erreur : For Application LoadBalancer, testListenerRule is required when productionListenerRule is not associated with both targetGroup and alternateTargetGroup

Solution : lorsque vous utilisez un Application Load Balancer, si aucun des deux groupes cibles n’est associé à la règle d’écoute de production, vous devez spécifier une règle d’écoute de test. Ajoutez une testListenerRule à votre configuration et assurez-vous que les deux groupes cibles sont associés à la règle de production ou à la règle d’écoute de test. Pour plus d’informations, consultez la section Écouteurs pour vos Application Load Balancer du Guide de l’utilisateur Application Load Balancer.

Erreurs de configuration du groupe cible

Les problèmes suivants sont liés à une configuration incorrecte du groupe cible pour les blue/green déploiements.

Plusieurs groupes cibles recevant du trafic dans une règle d’écoute

Message d’erreur : Service deployment rolled back because of invalid networking configuration. productionListenerRule arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-alb/abc123/def456/ghi789 should have exactly one target group serving traffic but found 2 target groups which are serving traffic

Solution : Avant de commencer un blue/green déploiement, assurez-vous qu'un seul groupe cible reçoit du trafic (avec une pondération différente de zéro) dans votre règle d'écoute. Mettez à jour la configuration de vos règles d’écoute pour définir le poids à zéro pour tout groupe cible qui ne devrait pas recevoir de trafic.

Groupes cibles en double dans les entrées de l’équilibreur de charge

Message d’erreur : Duplicate targetGroupArn found: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/myecs-targetgroup/abc123

Solution : l’ARN de chaque groupe cible doit être unique pour toutes les entrées de l’équilibreur de charge figurant dans votre définition de service. Passez en revue votre configuration et assurez-vous d’utiliser des groupes cibles différents pour chaque entrée de l’équilibreur de charge.

Groupe cible inattendu dans la règle d’écoute de production

Message d’erreur : Service deployment rolled back because of invalid networking configuration. Production listener rule is forwarding traffic to unexpected target group arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/random-nlb-tg/abc123. Expected traffic to be forwarded to either targetGroupArn: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/nlb-targetgroup/def456 or alternateTargetGroupArn: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/nlb-tg-alternate/ghi789

Solution : la règle d’écoute de production achemine le trafic vers un groupe cible qui n’est pas spécifié dans votre définition de service. Assurez-vous que la règle d’écoute est configurée pour n’acheminer le trafic que vers les groupes cibles spécifiés dans votre définition de service.

Pour plus d’informations, consultez la section Actions de transfert dans le Guide de l’utilisateur Application Load Balancer.

Erreurs de configuration du type d’équilibreur de charge

Les problèmes suivants sont liés à une configuration incorrecte du type d'équilibreur de charge pour les blue/green déploiements.

Combinaison des configurations Classic Load Balancer et Application Load Balancer ou Network Load Balancer

Message d’erreur : All loadBalancers must be strictly either ELBv1 (defining loadBalancerName) or ELBv2 (defining targetGroupArn)

Note

Les Classic Load Balancer correspondent à la génération précédente d’équilibreurs de charge Elastic Load Balancing. Nous vous recommandons de passer à un équilibreur de charge de génération actuelle. Pour plus d’informations, consultez la section Migration de votre Classic Load Balancer.

Solution :. Utilisez soit uniquement des Classic Load Balancer, soit des Application Load Balancer et des Network Load Balancer.

Pour les Application Load Balancer et Network Load Balancer, ne spécifiez que le champ targetGroupArn.

Utilisation d’une configuration avancée avec un Classic Load Balancer

Message d’erreur : advancedConfiguration field is not allowed with ELBv1 loadBalancers

Solution : La configuration avancée pour les blue/green déploiements n'est prise en charge qu'avec les équilibreurs de charge d'application et les équilibreurs de charge réseau. Si vous utilisez un Classic Load Balancer (spécifié avec loadBalancerName), vous ne pouvez pas utiliser le champ advancedConfiguration. Passez à un Application Load Balancer ou supprimez le champ advancedConfiguration.

Configuration avancée incohérente entre les équilibreurs de charge

Message d’erreur : Either all or none of the provided loadBalancers must have advancedConfiguration defined

Solution : si vous utilisez plusieurs équilibreurs de charge, vous devez définir advancedConfiguration soit pour tous, soit pour aucun. Mettez à jour votre configuration pour garantir la cohérence entre toutes les entrées de l’équilibreur de charge.

Configuration avancée manquante lors blue/green du déploiement

Message d’erreur : advancedConfiguration field is required for all loadBalancers when using a non-ROLLING deployment strategy

Solution : Lorsque vous utilisez une stratégie de blue/green déploiement avec des équilibreurs de charge d'application, vous devez spécifier le advancedConfiguration champ pour toutes les entrées de l'équilibreur de charge. Ajoutez l’advancedConfiguration nécessaire à la configuration de votre équilibreur de charge.

Problèmes d’autorisations

Les problèmes suivants concernent des autorisations insuffisantes pour les blue/green déploiements.

Stratégie d’approbation manquante concernant le rôle de l’infrastructure

Message d’erreur : Service deployment rolled back because of invalid networking configuration. ECS was unable to manage the ELB resources due to missing permissions on ECS Infrastructure Role 'arn:aws:iam::123456789012:role/Admin'.

Solution : le rôle IAM spécifié pour gérer les ressources de l’équilibreur de charge ne dispose pas de la bonne stratégie d’approbation. Mettez à jour la stratégie d’approbation du rôle afin de permettre au service d’assumer ce rôle. La stratégie d’approbation doit inclure :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Autorisations de lecture manquantes sur le rôle d’équilibreur de charge

Message d’erreur : service myService failed to describe target health on target-group myTargetGroup with (error User: arn:aws:sts::123456789012:assumed-role/myELBRole/ecs-service-scheduler is not authorized to perform: elasticloadbalancing:DescribeTargetHealth because no identity-based policy allows the elasticloadbalancing:DescribeTargetHealth action)

Solution : le rôle IAM utilisé pour gérer les ressources de l’équilibreur de charge n’est pas autorisé à lire les informations relatives à l’état de la cible. Ajoutez la politique d’autorisation elasticloadbalancing:DescribeTargetHealth au rôle. Pour plus d’informations sur les autorisations Elastic Load Balancing, consultez la section Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge.

Autorisations d’écriture manquantes pour le rôle d’équilibreur de charge

Message d’erreur : service myService failed to register targets in target-group myTargetGroup with (error User: arn:aws:sts::123456789012:assumed-role/myELBRole/ecs-service-scheduler is not authorized to perform: elasticloadbalancing:RegisterTargets on resource: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/myTargetGroup/abc123 because no identity-based policy allows the elasticloadbalancing:RegisterTargets action)

Solution : le rôle IAM utilisé pour gérer les ressources de l’équilibreur de charge n’est pas autorisé à enregistrer des cibles. Ajoutez la politique d’autorisation elasticloadbalancing:RegisterTargets au rôle. Pour plus d’informations sur les autorisations Elastic Load Balancing, consultez la section Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge.

Autorisation manquante pour modifier les règles d’écoute

Message d’erreur : Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. User: arn:aws:sts::123456789012:assumed-role/myELBRole/ECSNetworkingWithELB is not authorized to perform: elasticloadbalancing:ModifyListener on resource: arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-alb/abc123/def456 because no identity-based policy allows the elasticloadbalancing:ModifyListener action

Solution : le rôle IAM utilisé pour gérer les ressources de l’équilibreur de charge n’est pas autorisé à modifier les écouteurs. Ajoutez la politique d’autorisation elasticloadbalancing:ModifyListener au rôle. Pour plus d’informations sur les autorisations Elastic Load Balancing, consultez la section Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge.

Pour les blue/green déploiements, nous vous recommandons d'associer la politique AmazonECS-ServiceLinkedRolePolicy gérée à votre rôle d'infrastructure, qui inclut toutes les autorisations nécessaires à la gestion des ressources de l'équilibreur de charge.

Problèmes de hook de cycle de vie

Les problèmes suivants concernent les crochets liés au cycle de vie dans les blue/green déploiements.

Stratégie d’approbation incorrecte sur le rôle du hook Lambda

Message d’erreur : Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. ECS was unable to assume role arn:aws:iam::123456789012:role/Admin

Solution : le rôle IAM spécifié pour le hook de cycle de vie Lambda ne dispose pas de la bonne stratégie d’approbation. Mettez à jour la stratégie d’approbation du rôle afin de permettre au service d’assumer ce rôle. La stratégie d’approbation doit inclure :

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
Le hook Lambda renvoie le statut ÉCHEC

Message d’erreur : Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. Lifecycle hook target arn:aws:lambda:us-west-2:123456789012:function:myHook returned FAILED status.

Solution : la fonction Lambda spécifiée en tant que hook de cycle de vie a renvoyé un statut ÉCHEC. Consultez les journaux des fonctions Lambda dans les CloudWatch journaux Amazon pour déterminer la raison de l'échec, et mettez à jour la fonction pour qu'elle gère correctement l'événement de déploiement.

Autorisation manquante pour invoquer une fonction Lambda

Message d’erreur : Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. ECS was unable to invoke hook target arn:aws:lambda:us-west-2:123456789012:function:myHook due to User: arn:aws:sts::123456789012:assumed-role/myLambdaRole/ECS-Lambda-Execution is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-west-2:123456789012:function:myHook because no identity-based policy allows the lambda:InvokeFunction action

Solution : le rôle IAM utilisé pour le hook de cycle de vie Lambda n’est pas autorisé à appeler la fonction Lambda. Ajoutez l’autorisation lambda:InvokeFunction à la politique du rôle pour l’ARN de la fonction Lambda spécifique. Pour plus d’informations sur les autorisations Lambda, consultez la section Autorisations requises pour les fonctions Lambda dans les déploiements Amazon ECS blue/green.

Délai d’expiration d’une fonction Lambda ou réponse non valide

Message d’erreur : Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. ECS was unable to parse the response from arn:aws:lambda:us-west-2:123456789012:function:myHook due to HookStatus must not be null

Solution : la fonction Lambda a expiré ou a renvoyé une réponse non valide. Assurez-vous que votre fonction Lambda renvoie une réponse valide avec un champ hookStatus défini sur SUCCEEDED ou FAILED. Vérifiez également que le délai d’expiration de la fonction Lambda est défini de manière appropriée pour votre logique de validation. Pour de plus amples informations, veuillez consulter Hooks de cycle de vie pour les déploiements de service Amazon ECS.

Exemple de réponse Lambda valide :

{ "hookStatus": "SUCCEEDED", "reason": "Validation passed" }