Como resolvo erros quando excluo um provedor de capacidade no Amazon ECS?

6 minuto de leitura
0

Recebo um erro quando tento excluir um provedor de capacidade do meu cluster do Amazon Elastic Container Service (Amazon ECS).

Breve descrição

Se você usou o comando delete-capacity-provider da AWS Command Line Interface (AWS CLI) ou a API DeleteCapacityProvider, poderá receber um dos seguintes erros:

“updateStatus”: “DELETE_FAILED”

-ou-

“updateStatusReason”: “O provedor de capacidade não pode ser excluído porque está associado ao cluster: nome do cluster. Remova o provedor de capacidade do cluster e tente novamente.”

Se você usou o Console de Gerenciamento da AWS para excluir um provedor de capacidade, poderá receber o seguinte erro:

“Houve um erro ao excluir o provedor de capacidade [Nome do provedor de capacidade]. O provedor de capacidade especificado está em uso e não pode ser removido”

Não é possível excluir um provedor de capacidade associado a um cluster. Para resolver problemas de exclusão, você deve remover o provedor de capacidade do cluster ou excluir o cluster. Em seguida, exclua o provedor de capacidade.

Observação: se você excluir um grupo do Amazon EC2 Auto Scaling, o provedor de capacidade relacionado entrará no estado INATIVO. Não é uma prática recomendada usar provedores de capacidade no estado INATIVO, pois eles podem ser removidos automaticamente a qualquer momento.

Resolução

Observação: se você receber erros ao executar comandos da AWS CLI, consulte Solucionar erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI. Para formatação, instale o jq em Baixar jq no site jq.

Identificar os provedores de capacidade associados ao cluster

Para identificar todos os provedores de capacidade associados a um cluster do Amazon ECS, use o console do Amazon ECS ou a AWS CLI.

Console do Amazon ECS

Conclua as seguintes etapas:

  1. Abra o console do Amazon ECS.
  2. No painel de navegação, escolha Clusters.
  3. Selecione o cluster.
  4. Escolha a guia Infraestrutura.
  5. Escolha Provedores de capacidade.

AWS CLI

Execute o seguinte comando describe-clusters:

aws ecs describe-clusters --cluster your-cluster-name | jq '.clusters[].capacityProviders'

Observação: substitua your-cluster-name pelo nome do cluster.

Verificar se o Amazon ECS não está usando o provedor de capacidade na estratégia do provedor de capacidade

Para visualizar os serviços que usam o provedor de capacidade, execute o seguinte script:

#!/bin/bash
cluster=ClusterName
capacityprovider=CapacityProviderName
services=$(aws ecs list-services --cluster ${cluster} | jq --raw-output '.serviceArns[]')
aws ecs describe-services \
    --cluster ${cluster} \
    --services ${services} \
    | jq -r --arg capacityprovider "${capacityprovider}" \
    '.services[] | select(.capacityProviderStrategy[]?.capacityProvider == $capacityprovider) | .serviceName'

Observação: substitua ClusterName pelo nome do cluster e CapacityProviderName pelo nome do provedor de capacidade. Se o script retornar uma saída em branco, nenhum dos serviços no cluster está usando o provedor de capacidade. Nesse caso, prossiga para a seção Verificar se seu provedor de capacidade está definido na estratégia padrão do provedor de capacidade para o cluster.

Antes de excluir um provedor de capacidade que está em uso, você deve atualizar o Amazon ECS para usar um novo provedor de capacidade. Use o console do Amazon ECS ou a AWS CLI. Ao atualizar o serviço, use Forçar nova implantação para fazer a transição de tarefas que usam a capacidade de instância do Amazon Elastic Compute Cloud (Amazon EC2) entre provedores.

Para usar a AWS CLI para atualizar o provedor de capacidade, conclua as seguintes etapas:

  1. Execute o seguinte comando describe-services para visualizar a estratégia do provedor de capacidade para o serviço:

    aws ecs describe-services --cluster my-cluster --services my-service

    Observação: substitua my-cluster pelo nome do cluster e my-service pelo nome do serviço.

  2. Crie uma nova estratégia de provedor de capacidade que exclua o provedor de capacidade que você deseja remover. Certifique-se de que o peso total dos provedores de capacidade restantes seja 100.

  3. Execute o seguinte comando update-service para atualizar o serviço:

    aws ecs update-service \
      --cluster your-cluster-name \
      --service your-service-name \
      --capacity-provider-strategy capacityProvider=remaining-provider,weight=100 \
      --force-new-deployment

    Observação: substitua your-cluster-name pelo nome do cluster e your-service-name pelo nome do serviço. Além disso, substitua remaining-provider pelo nome do novo provedor de capacidade.

Verificar se o provedor de capacidade está definido na estratégia padrão do cluster

Para encontrar a estratégia padrão do provedor de capacidade do cluster, execute o seguinte comando describe-clusters:

aws ecs describe-clusters --cluster mycluster | jq '.clusters[].defaultCapacityProviderStrategy'

Se o provedor de capacidade que você deseja excluir estiver na saída do comando, você deverá modificar a estratégia padrão do provedor de capacidade. É possível usar o console do Amazon ECS ou a AWS CLI.

Console do Amazon ECS

Conclua as seguintes etapas:

  1. Abra o console do Amazon ECS.
  2. No painel de navegação, escolha Clusters.
  3. Selecione o cluster.
  4. Escolha Atualizar cluster.
  5. Em Configuração do cluster, em Estratégia padrão do provedor de capacidade, escolha Remover para o provedor de capacidade.
  6. Escolha Atualizar.

AWS CLI

Execute o seguinte comando put-cluster-capacity-providers:

aws ecs put-cluster-capacity-providers --cluster ClusterName --capacity-providers [] --default-capacity-provider-strategy []

Observação: substitua ClusterName pelo nome do cluster.

Substitua o provedor de capacidade anterior por um novo antes de excluí-lo. Para substituir o provedor de capacidade, execute o seguinte comando put-cluster-capacity-provider:

aws ecs put-cluster-capacity-providers --cluster ClusterName --capacity-providers UpdatedCapacityProvider --default-capacity-provider-strategy capacityProvider=UpdatedCapacityProvider --region RegionName

Observação: substitua ClusterName pelo nome do cluster, UpdatedCapacityProvider pelo novo provedor de capacidade e RegionName pela sua região da AWS.

Ao executar o comando put-cluster-capacity-providers, você deve incluir todos os provedores de capacidade que deseja manter no cluster. Se você não incluir um provedor de capacidade, o Amazon ECS desassociará o provedor de capacidade do cluster.

Excluir o provedor de capacidade

Para excluir o provedor de capacidade, execute o seguinte comando delete-capacity-provider:

aws ecs delete-capacity-provider --capacity-provider PreviousCapacityProvider

Observação: substitua PreviousCapacityProvider pelo ARN do provedor de capacidade que você deseja excluir.

Para verificar se o provedor de capacidade foi excluído, execute o seguinte comando describe-capacity-providers:

aws ecs describe-capacity-providers --capacity-provider PreviousCapacityProvider

Observação: substitua PreviousCapacityProvider pelo ARN do provedor de capacidade que você excluiu.

Na saída do comando, verifique se o status do provedor de capacidade é INATIVO.

AWS OFICIALAtualizada há 5 meses