Como soluciono erros que recebo ao configurar minha implantação azul/verde do Amazon ECS no CloudFormation?
Quando eu configuro uma implantação azul/verde do Amazon Elastic Container Service (Amazon ECS) no AWS CloudFormation, recebo erros.
Resolução
Ao usar o hook AWS::CodeDeploy::BlueGreen no CloudFormation, é possível receber uma mensagem de erro. Para solucionar esse erro, siga as seções de resolução aplicáveis.
Falha ao analisar o erro
Se você não conceder as permissões ou incluir a propriedade Weight no modelo, o AWS CodeDeploy falhará ao analisar a seção Hooks do modelo fornecida. É possível receber a seguinte mensagem de erro:
"'CodeDeployBlueGreenHook' of type AWS::CodeDeploy::BlueGreen failed with message: Internal Failure"
Ao criar um conjunto de alterações que ativa uma implantação azul/verde, você deve anexar o perfil do AWS Identity and Access Management (AWS IAM) do serviço CloudFormation à sua pilha do CloudFormation. Para solucionar esse erro, conceda ao perfil de serviço as permissões necessárias para executar as operações de pilha.
Observação: depois que o CodeDeploy cria a pilha, não é possível remover o perfil de serviço da pilha.
Se você definir a DefaultAction para incluir a propriedade ForwardConfig, mas não incluiu a propriedade Weight em seu tipo de recurso AWS::ElasticLoadBalancingV2::Listener, o hook CodeDeploy apresentará falha. Para solucionar esse erro, certifique-se de incluir a propriedade Weight no seu tipo de recurso.
Erro de recurso adicional
O erro a seguir ocorre quando você inclui atualizações em recursos que iniciam implantações verdes e atualizações em outros recursos na mesma atualização de pilha:
"Additional resource diff other than Amazon ECS application related resource update is detected,CodeDeploy can't perform BlueGreen style update properly. Diff resource logical Ids: []"
Para solucionar esse erro, realize as etapas a seguir:
- Execute duas operações de atualização de pilha separadas.
Observação: uma atualização de pilha deve incluir somente os recursos atualizados que iniciam implantações verdes (AWS::ECS::TaskDefinition e AWS::ECS::TaskSet). A segunda atualização de pilha deve incluir alterações em outros recursos. - Remova as seções Transformar e Hooks do seu modelo do CloudFormation e, em seguida, execute a atualização da pilha. Observação: nesse caso, o CloudFormation não realizará uma implantação verde.
Erro não suportado
As configurações de importação ou exportação no modelo do CloudFormation não são suportadas. Se você declarar Outputs ou usar Fn::ImportValue para importar valores de outras pilhas para modelos que definem implantações azul/verde do Amazon ECS, você receberá o seguinte erro:
"Imports and exports are currently not supported on templates using hooks"
Para solucionar esse erro, não use importações ou exportações em seu modelo.
O CodeDeploy não pode atualizar parâmetros que usam referências dinâmicas para recuperar seus valores de terceiros ou não têm uma definição de atributo NoEcho durante uma implantação verde. Ao usar referências dinâmicas, é possível receber o seguinte erro:
"'CodeDeployBlueGreenHook' of type AWS::CodeDeploy::BlueGreen failed with message: NoEcho parameter Dynamic references is not supported in template when using AWS::CodeDeploy::BlueGreen Hook"
Para solucionar esse erro, não use referências dinâmicas em seu modelo.
Erro do receptor de teste
Se você especificar um receptor de teste que já aponte para o grupo-alvo verde, o hook CodeDeploy falhará e você receberá o seguinte erro:
"'CodeDeployBlueGreenHook' of type AWS::CodeDeploy::BlueGreen failed with message: Replacement target group [ALBTargetGroupGreen] is already serving traffic behind listener [ALBListenerTestTraffic]"
Para solucionar esse erro, certifique-se de que os campos Produção e Receptores de teste tenham o mesmo valor ao fazer o upload do modelo do CloudFormation.
Erro de transformação ausente
Se você não incluir a seção Transformar no modelo atualizado do CloudFormation, a Transformação não será invocada. Se os IDs lógicos do recurso azul/verde não se transformarem, você receberá o seguinte erro:
"'CodeDeployBlueGreenHook' of type AWS::CodeDeploy::BlueGreen failed with message: The submitted template's primary task definition 'BlueTaskDefinition' was never updated. The template's 'AWS::CodeDeployBlueGreen' Transform might be missing or removed"
Para solucionar esse erro, certifique-se de incluir a seção Transformar em seu modelo do CloudFormation antes de atualizar sua pilha do CloudFormation.
Erro do balanceador de carga
O tipo TrafficRoutingconfig deve ser definido como AllAtOnce. Se você incluir um Network Load Balancer em seu modelo e tiver o hook AWS::CodeDeploy::BlueGreen e o tipo TrafficRoutingConfig definido como TimeBasedCanary ou TimeBasedLinear, você receberá o seguinte erro:
"'CodeDeployBlueGreenHook' of type AWS::CodeDeploy::BlueGreen failed with message: Only AllAtOnce traffic routing config type is supported for network load balancers."
Para solucionar esse erro, certifique-se de definir o tipo TrafficRoutingConfig como AllAtOnce.
Se você configurar seu nome do recurso da Amazon (ARN) do balanceador de carga como um Parâmetro e usar !Ref para referenciar a propriedade LoadBalancerArn em AWS::ElasticLoadBalancingV2::Listener, você poderá receber o seguinte erro:
"Transform AWS::CodeDeployBlueGreen failed with: Failed to transform template. Could not find AWS::ElasticLoadBalancingV2::LoadBalancer LoadBalancerArn"
Para solucionar esse erro, crie o recurso de balanceador de carga em seu modelo e faça referência ao ARN em sua propriedade LoadBalancerArn. Ou é possível codificar manualmente o ARN do balanceador de carga em sua propriedade LoadBalancerArn.
Erro no serviço do Amazon ECS
Se você adicionar dois destinos de serviço diferentes do Amazon ECS que compartilham um único Application Load Balancer na propriedade Aplicações de Hooks, poderá receber o seguinte erro:
"'CodeDeployBlueGreenHook' of type AWS::CodeDeploy::BlueGreen failed with message: Handler failed: Applications must have at most one application in AWS::CodeDeploy::BlueGreen Hook"
Para solucionar esse erro, certifique-se de anexar somente um serviço do Amazon ECS ao Application Load Balancer.
- Tópicos
- Management & Governance
- Idioma
- Português

Conteúdo relevante
- feita há 8 meses
- feita há 3 meses
AWS OFICIALAtualizada há um ano