As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Solucionar problemas de implantação do Amazon ECS
Tópicos
Ocorre um tempo limite enquanto se aguarda o conjunto de tarefas de substituição
Ocorre um limite de tempo enquanto se aguarda a continuação de uma notificação
A implantação atingiu o tempo limite enquanto aguardava um retorno de chamada de status
A implantação falhou porque uma ou mais funções de validação de evento do ciclo de vida falharam
Às vezes, minha implantação falha ao usar o ajuste de escala automático
Posso conectar vários balanceadores de carga a um grupo de implantação?
Posso realizar implantações em CodeDeploy azul/verde sem um balanceador de carga?
Como posso atualizar meu serviço Amazon ECS com novas informações durante uma implantação?
Ocorre um tempo limite enquanto se aguarda o conjunto de tarefas de substituição
Problema: Você vê a seguinte mensagem de erro ao implantar seu aplicativo Amazon ECS usando: CodeDeploy
The deployment timed out while waiting for the replacement task set to become
healthy. This time out period is 60 minutes.
Possível causa: esse erro pode ocorrer se houver um erro no arquivo de definição de tarefas ou em outros arquivos relacionados à implantação. Por exemplo, se houver um erro de digitação no campo image
do seu arquivo de definição de tarefa, o Amazon ECS tentará extrair a imagem errada do contêiner e falhará continuamente, causando esse erro.
Possíveis correções e próximas etapas:
-
Corrija erros tipográficos e problemas de configuração no arquivo de definição de tarefas e em outros arquivos.
-
Confira o evento relacionado ao serviço Amazon ECS e descubra por que as tarefas de substituição não estão ficando íntegras. Para mais informações sobre eventos do Amazon ECS, consulte Eventos do Amazon ECS no Guia do desenvolvedor do Amazon Elastic Container Service.
-
Consulte a seção de Solução de problemas do Amazon ECS no Guia do desenvolvedor do Amazon Elastic Container Service para ver se há erros relacionados às mensagens do evento.
Ocorre um limite de tempo enquanto se aguarda a continuação de uma notificação
Problema: Você vê a seguinte mensagem de erro ao implantar seu aplicativo Amazon ECS usando: CodeDeploy
The deployment timed out while waiting for a notification to continue. This time out
period is
n
minutes.
Possível causa: esse erro pode ocorrer se você especificou um tempo de espera no campo Especificar quando redirecionar o tráfego ao criar seu grupo de implantação, mas a implantação não pôde ser concluída antes que o tempo de espera expirasse.
Possíveis correções e próximas etapas:
-
Em seu grupo de implantação, defina Especificar quando redirecionar o tráfego para um período maior e reimplante. Para ter mais informações, consulte Criar um grupo de implantação para uma implantação do Amazon ECS (console).
-
Em seu grupo de implantação, altere Especificar quando redirecionar o tráfego para Redirecionar o tráfego imediatamente e reimplante. Para ter mais informações, consulte Criar um grupo de implantação para uma implantação do Amazon ECS (console).
-
Reimplante e execute o
aws deploy continue-deployment
AWS CLI comando com a--deployment-wait-type
opção definida como.READY_WAIT
Certifique-se de executar esse comando antes que o horário especificado em Especificar quando redirecionar o tráfego expire.
O perfil do IAM não tem permissões suficientes
Problema: Você vê a seguinte mensagem de erro ao implantar seu aplicativo Amazon ECS usando: CodeDeploy
The IAM role
role-arn
does not give you permission to
perform operations in the following AWS service: AWSLambda.
Possível causa: Esse erro pode ocorrer se você especificou uma função Lambda na Hooksseção do AppSpec arquivo, mas não deu CodeDeploy permissão ao serviço Lambda.
Possível correção: adicione a lambda:InvokeFunction
permissão à função CodeDeploy de serviço. Para adicionar essa permissão, adicione uma das seguintes políticas gerenciadas pela AWS ao perfil: AWSCodeDeployRoleForECS
ou AWSCodeDeployRoleForECSLimited
. Para obter informações sobre essas políticas e como adicioná-las à função CodeDeploy de serviço, consulteEtapa 2: criar uma função de serviço para CodeDeploy.
A implantação atingiu o tempo limite enquanto aguardava um retorno de chamada de status
Problema: Você vê a seguinte mensagem de erro ao implantar seu aplicativo Amazon ECS usando: CodeDeploy
The deployment timed out while waiting for a status callback. CodeDeploy expects a status
callback within one hour after a deployment hook is invoked.
Possível causa: esse erro pode ocorrer se você especificar uma função Lambda na Hooksseção do AppSpec arquivo, mas a função Lambda não conseguiu chamar a PutLifecycleEventHookExecutionStatus
API necessária para retornar um Succeeded
status ou para. Failed
CodeDeploy
Possíveis correções e próximas etapas:
-
Adicione a
codedeploy:putlifecycleEventHookExecutionStatus
permissão à função de execução do Lambda usada pela função Lambda que você especificou no arquivo. AppSpec Essa permissão concede à função Lambda a capacidade de retornar um status deSucceeded
ouFailed
para. CodeDeploy Para obter informações sobre funções de execução do Lambda, consulte Função de execução do Lambda no Guia do usuário do AWS Lambda . -
Verifique o código da função Lambda e os registros de execução para garantir que sua função Lambda esteja chamando a
PutLifecycleEventHookExecutionStatus
API CodeDeploy do Lambda para informar se o teste de validação do ciclo CodeDeploy de vida é ou não.Succeeded
Failed
Para obter informações sobre aputlifecycleEventHookExecutionStatus
API, consulte PutLifecycleEventHookExecutionStatusa Referência AWS CodeDeploy da API. Para obter informações sobre os registros de execução do Lambda, consulte Acessando os CloudWatch registros da Amazon para. AWS Lambda
A implantação falhou porque uma ou mais funções de validação de evento do ciclo de vida falharam
Problema: Você vê a seguinte mensagem de erro ao implantar seu aplicativo Amazon ECS usando: CodeDeploy
The deployment failed because one or more of the lifecycle event validation
functions failed.
Possível causa: esse erro pode ocorrer se você especificou uma função Lambda na Hooksseção do AppSpec arquivo, mas a função Lambda retornou Failed
quando foi chamada. CodeDeploy PutLifecycleEventHookExecutionStatus
Essa falha indica CodeDeploy que o teste de validação do ciclo de vida falhou.
Próxima etapa possível: verifique seus logs de execução do Lambda para ver por que o código do teste de validação está falhando. Para obter informações sobre os registros de execução do Lambda, consulte Acessando os CloudWatch registros da Amazon para. AWS Lambda
Não foi possível atualizar o ELB devido ao seguinte erro: o grupo de destino do conjunto de tarefas primário deve estar atrás do receptor
Problema: Você vê a seguinte mensagem de erro ao implantar seu aplicativo Amazon ECS usando: CodeDeploy
The ELB could not be updated due to the following error: Primary taskset target
group must be behind listener
Possível causa: esse erro pode ocorrer se você tiver configurado um receptor de teste opcional, e ele estiver configurado com o grupo de destino errado. Para obter mais informações sobre o ouvinte de teste em CodeDeploy, consulte Antes de começar uma ECS implantação da Amazon e. O que acontece durante uma ECS implantação da Amazon Para obter mais informações sobre conjuntos de tarefas, consulte TaskSetna Referência de API do Amazon Elastic Container Service e describe-task-setna seção Amazon ECS da Referência de AWS CLI Comandos.
Possível correção: certifique-se de que o receptor de produção e o receptor de teste do Elastic Load Balancing estejam apontando para o grupo de destino que atualmente atende aos seus workloads. Há três lugares para verificar:
-
No Amazon EC2, nas configurações de Receptores e regras do seu balanceador de carga. Para obter mais informações, consulte Receptores para o seu Application Load Balancer, no Guia do usuário do Application Load Balancers, e Receptores para o seu Network Load Balancer ,no Guia do usuário do Network Load Balancer.
-
No Amazon ECS, no seu cluster, na configuração de Rede do seu serviço. Para obter mais informações, consulte as considerações sobre o Application Load Balancer e o Network Load Balancer no Guia do Desenvolvedor do Amazon Elastic Container Service.
-
Em CodeDeploy, nas configurações do seu grupo de implantação. Para ter mais informações, consulte Criar um grupo de implantação para uma implantação do Amazon ECS (console).
Às vezes, minha implantação falha ao usar o ajuste de escala automático
Problema: Você está usando o Auto Scaling com CodeDeploy e percebe que suas implantações ocasionalmente falham. Para obter mais informações sobre os sintomas desse problema, consulte o tópico que diz Para serviços configurados para usar o ajuste de escala automático de serviço e o tipo de implantação azul/verde, o ajuste de escala automático não é bloqueado durante uma implantação, mas a implantação pode apresentar falha em algumas circunstâncias no Guia do desenvolvedor do Amazon Elastic Container Service.
Possível causa: Esse problema pode ocorrer se CodeDeploy os processos do Auto Scaling entrarem em conflito.
Possível correção: suspender e retomar os processos do Auto Scaling durante CodeDeploy a implantação usando RegisterScalableTarget
a API (ou o comando register-scalable-target
AWS CLI correspondente). Para obter mais informações, consulte Suspender e retomar o ajuste de escala do ajuste de escala automático do aplicativo no Guia do usuário do ajuste de escala automático do aplicativo.
nota
CodeDeploy não consigo ligar RegisterScaleableTarget
diretamente. Para usar essa API, você deve configurar CodeDeploy para enviar uma notificação ou evento para o Amazon Simple Notification Service (ou Amazon CloudWatch). Em seguida, você deve configurar o Amazon SNS (ou CloudWatch) para chamar uma função Lambda e configurar a função Lambda para chamar a API. RegisterScalableTarget
A API RegisterScalableTarget
deve ser chamada com o parâmetro SuspendedState
definido como true
, para suspender as operações de ajuste de escala automático, e como false
, para retomá-las.
A notificação ou evento CodeDeploy enviado deve ocorrer quando uma implantação é iniciada (para acionar as operações de suspensão do Auto Scaling) ou quando uma implantação é bem-sucedida, falha ou é interrompida (para acionar a retomada das operações do Auto Scaling).
Para obter informações sobre como configurar CodeDeploy para gerar notificações ou CloudWatch eventos do Amazon SNS, consulteMonitoramento de implantações com Amazon Events CloudWatch . e. Monitoring Deployments with Amazon SNS Event Notifications
Somente o ALB oferece suporte ao roteamento gradual de tráfego; em vez disso, use o roteamento de AllAtOnce tráfego ao criar/atualizar o grupo de implantação
Problema: Você vê a seguinte mensagem de erro ao criar ou atualizar um grupo de implantação em CodeDeploy:
Only ALB supports gradual traffic routing, use AllAtOnce Traffic routing instead when
you create/update Deployment group.
Possível causa: esse erro pode ocorrer se você estiver usando um Network Load Balancer e tentar usar uma configuração de implantação predefinida diferente de CodeDeployDefault.ECSAllAtOnce
.
Correções possíveis:
-
Altere sua configuração de implantação predefinida para
CodeDeployDefault.ECSAllAtOnce
. Essa é a única configuração de implantação predefinida permitida pelo Network Load Balancers.Para obter mais informações sobre configurações de implantação pré-definidas, consulte Configurações de implantação predefinidas para uma plataforma de computação do Amazon ECS.
-
Mude seu balanceador de carga para um Application Load Balancer. O Application Load Balancer é compatível com todas as configurações de implantação predefinidas. Para obter mais informações sobre como criar um Application Load Balancer, consulte Configure um balanceador de carga, grupos-alvo e ouvintes para implantações do CodeDeploy Amazon ECS.
Embora minha implantação tenha sido bem-sucedida, o conjunto de tarefas de substituição falha nas verificações de integridade do Elastic Load Balancing, e meu aplicativo está inativo
Problema: Embora CodeDeploy indique que minha implantação foi bem-sucedida, o conjunto de tarefas de substituição falha nas verificações de saúde do Elastic Load Balancing e meu aplicativo está inativo.
Possível causa: Esse problema pode ocorrer se você executou uma CodeDeploy all-at-once implantação e seu conjunto de tarefas de substituição (verde) contém um código incorreto que está causando a falha nas verificações de integridade do Elastic Load Balancing. Com a configuração de all-at-once implantação, as verificações de integridade do balanceador de carga começam a ser executadas no conjunto de tarefas de substituição depois que o tráfego é transferido para ele (ou seja, após a ocorrência CodeDeploy do evento do AllowTraffic
ciclo de vida). É por isso que você verá as verificações de integridade falharem no conjunto de tarefas de substituição após a mudança de tráfego, mas não antes. Para obter informações sobre os eventos do ciclo de vida que são CodeDeploy gerados, consulte. O que acontece durante uma ECS implantação da Amazon
Correções possíveis:
-
Altere sua configuração de implantação all-at-once de canária ou linear. Em uma configuração linear ou canária, as verificações de integridade do balanceador de carga começam a ser executadas no conjunto de tarefas de substituição durante a CodeDeploy instalação do aplicativo no ambiente de substituição e antes do deslocamento do tráfego (ou seja, durante o evento do
Install
ciclo de vida e antes do evento).AllowTraffic
Ao permitir que as verificações sejam executadas durante a instalação do aplicativo, mas antes que o tráfego seja transferido, um código incorreto do aplicativo será detectado e causará falhas na implantação antes que o aplicativo se torne disponível publicamente.Para obter informações sobre como configurar implantações canário ou lineares, consulte Altere as configurações do grupo de implantação com CodeDeploy.
Para obter informações sobre eventos de CodeDeploy ciclo de vida que são executados durante uma implantação do Amazon ECS, consulte. O que acontece durante uma ECS implantação da Amazon
nota
As configurações de implantação canário e linear são compatíveis somente com Application Load Balancers.
-
Se você quiser manter sua configuração de all-at-once implantação, configure um ouvinte de teste e verifique o status de integridade do conjunto de tarefas de substituição com o gancho de
BeforeAllowTraffic
ciclo de vida. Para ter mais informações, consulte Lista de ganchos de eventos de ciclo de vida para uma implantação da Amazon ECS.
Posso conectar vários balanceadores de carga a um grupo de implantação?
Não. Se você quiser usar vários Application Load Balancers ou Network Load Balancers, use as atualizações contínuas do Amazon ECS em vez de CodeDeploy implantações azul/verdes. Para obter mais informações sobre as atualizações contínuas, consulte Atualização contínua no Guia do desenvolvedor do Amazon Elastic Container Service. Para obter mais informações sobre o uso de vários balanceadores de carga com o Amazon ECS, consulte Registrar vários grupos de destino com um serviço no Guia do desenvolvedor do Amazon Elastic Container Service.
Posso realizar implantações em CodeDeploy azul/verde sem um balanceador de carga?
Não, você não pode realizar implantações em CodeDeploy azul/verde sem um balanceador de carga. Se você não conseguir usar um balanceador de carga, use o atributo de atualizações contínuas do Amazon ECS. Para obter mais informações sobre as atualizações contínuas do Amazon ECS, consulte Atualização contínua no Guia do desenvolvedor do Amazon Elastic Container Service.
Como posso atualizar meu serviço Amazon ECS com novas informações durante uma implantação?
Para CodeDeploy atualizar seu serviço Amazon ECS com um novo parâmetro enquanto ele conduz uma implantação, especifique o parâmetro na resources
seção do AppSpec arquivo. Somente alguns parâmetros do Amazon ECS são compatíveis CodeDeploy, como o arquivo de definição da tarefa e os parâmetros do nome do contêiner. Para obter uma lista completa dos parâmetros do Amazon ECS que CodeDeploy podem ser atualizados, consulte AppSpec seção 'recursos' para ECS implantações da Amazon.
nota
Se você precisar atualizar seu serviço Amazon ECS com um parâmetro que não é suportado pelo CodeDeploy, conclua estas tarefas:
-
Chame a API
UpdateService
do Amazon ECS com o parâmetro que você deseja atualizar. Para obter uma lista completa dos parâmetros que podem ser atualizados, consulte UpdateServicea Amazon Elastic Container Service API Reference. -
Para aplicar a alteração às tarefas, crie uma nova implantação azul/verde do Amazon ECS. Para ter mais informações, consulte Crie uma implantação da Amazon ECS Compute Platform (console).