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 à des appels d'
UpdateService
APICreateService
ou à des appels d'API. -
Chemin asynchrone : erreurs qui apparaissent dans le
statusReason
champ deDescribeServiceDeployments
et entraînent une annulation du déploiement
Problèmes 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.
Lors de la résolution des problèmes liés à l'équilibreur de charge, il est important de comprendre la relation entre les règles relatives aux auditeurs et les groupes cibles. Dans le cadre d'un blue/green déploiement :
-
La règle du récepteur de production dirige le trafic vers la révision du service actuellement active (bleue)
-
La règle de test listener peut être utilisée pour valider la nouvelle révision (verte) du service avant de déplacer le 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 du service bleu à la révision du service vert en ajustant les pondérations des groupes cibles dans les règles d'écoute
Erreurs de configuration des règles du récepteur
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
ettestListenerRule
non un ARN d'écouteur. Pour les équilibreurs de charge réseau, 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 Listeners for your Application Load Balancers dans le Guide de l'utilisateur de l'Application Load Balancer. L'ARN d'une règle est au format suivant
.arn:aws:elasticloadbalancing:region:account-id:listener-rule/app/...
- Utiliser la même règle pour les auditeurs 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 est acheminé vers votre groupe cible de test.
- Règle d'écoute de test manquante pour un Network Load Balancer
-
Message d'erreur :
TestListenerRule is required for NLB with arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/nlb-targetgroup/abc123
Solution : Lorsque vous utilisez un Network Load Balancer, vous devez spécifier à la fois et
productionListenerRule
.testListenerRule
Ajoutez untestListenerRule
avec un ARN d'écouteur valide à votre configuration. Pour plus d'informations, consultez la section Créer un écouteur pour votre Network Load Balancer dans le Guide de l'utilisateur du Network Load Balancer - Groupe cible non associé aux règles de l'écouteur
-
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 de l'écouteur de production ou à la règle de l'écouteur de test. Mettez à jour la configuration de votre équilibreur de charge pour vous assurer que les deux groupes cibles sont correctement associés aux règles de votre écouteur.
- 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 les deux groupes cibles ne sont pas associés à la règle d'écouteur de production, vous devez spécifier une règle d'écouteur de test. Ajoutez un
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 Listeners for your Application Load Balancers dans le Guide de l'utilisateur de l'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 dont le trafic est régi par 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.
- Dupliquer les groupes cibles entre 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 du récepteur 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 du récepteur de production transmet le trafic vers un groupe cible qui n'est pas spécifié dans votre définition de service. Assurez-vous que la règle du récepteur est configurée pour transférer le trafic uniquement vers les groupes cibles spécifiés dans votre définition de service.
Pour plus d'informations, consultez les actions de transfert dans le guide de l'utilisateur d'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 de 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 Balancers sont la précédente génération d'équilibreurs de charge d'Elastic Load Balancing. Nous vous recommandons de migrer vers un équilibreur de charge de génération actuelle. Pour plus d'informations, consultez Migrer votre Classic Load Balancer.
Solution :. Utilisez tous les équilibreurs de charge classiques ou tous les équilibreurs de charge d'application et les équilibreurs de charge réseau.
Pour les équilibreurs de charge d'application et les équilibreurs de charge réseau, spécifiez uniquement le
targetGroupArn
champ. - 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 leadvancedConfiguration
champ. Passez à un Application Load Balancer ou supprimez leadvancedConfiguration
champ. - 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 les définir
advancedConfiguration
pour tous ou pour aucun d'entre eux. 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 le nécessaireadvancedConfiguration
à la configuration de votre équilibreur de charge.
Problèmes d'autorisation
Les problèmes suivants concernent des autorisations insuffisantes pour les blue/green déploiements.
- Politique de confiance 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 politique de confiance. Mettez à jour la politique de confiance du rôle pour permettre au service d'assumer le rôle. La politique de confiance doit inclure :
{ "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 de santé de la cible. Ajoutez l'
elasticloadbalancing:DescribeTargetHealth
autorisation à la politique du rôle. Pour plus d'informations sur les autorisations d'Elastic Load Balancing, consultezRôle IAM de l'infrastructure Amazon ECS pour les équilibreurs de charge. - Autorisations d'écriture manquantes sur 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 l'
elasticloadbalancing:RegisterTargets
autorisation à la politique du rôle. Pour plus d'informations sur les autorisations d'Elastic Load Balancing, consultezRôle IAM de l'infrastructure Amazon ECS pour les équilibreurs de charge. - Autorisation manquante pour modifier les règles de l'écouteur
-
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 l'
elasticloadbalancing:ModifyListener
autorisation à la politique du rôle. Pour plus d'informations sur les autorisations d'Elastic Load Balancing, consultezRôle IAM de l'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 liés au cycle de vie
Les problèmes suivants concernent les crochets liés au cycle de vie dans les blue/green déploiements.
- Politique de confiance 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 du cycle de vie Lambda ne dispose pas de la bonne politique de confiance. Mettez à jour la politique de confiance du rôle pour permettre au service d'assumer le rôle. La politique de confiance doit inclure :
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- Le hook Lambda renvoie le statut FAILED
-
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 du cycle de vie a renvoyé le statut FAILED. 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 gérer correctement l'événement de déploiement.
- Permission manquante pour appeler la 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 du cycle de vie Lambda n'est pas autorisé à appeler la fonction Lambda. Ajoutez l'
lambda:InvokeFunction
autorisation à la politique du rôle pour l'ARN de la fonction Lambda spécifique. Pour plus d'informations sur les autorisations Lambda, consultez. Autorisations requises pour les fonctions Lambda dans les déploiements Amazon ECS blue/green - Expiration de la 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
hookStatus
champ défini sur ouSUCCEEDED
.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 relatifs au cycle de vie pour les déploiements de services Amazon ECS.Exemple de réponse Lambda valide :
{ "hookStatus": "SUCCEEDED", "reason": "Validation passed" }