Como solucionar o erro “não é possível extrair segredos ou autenticação do registro” no Amazon ECS?

Última atualização: 07/04/2022

Recebi um dos seguintes erros quando iniciei uma tarefa do Amazon Elastic Container Service (Amazon ECS):

ResourceInitializationError: não é possível extrair segredos ou autenticação do registro: o comando pull falhou:: sinal: interrompido

ResourceInitializationError: não é possível extrair segredos ou autenticação do registro: falha na recuperação do recurso de execução: incapaz de recuperar o segredo do asm: a chamada de serviço foi repetida

Breve descrição

A plataforma AWS Fargate versão 1.4.0 usa a interface de rede elástica de tarefas para extrair a imagem e os segredos. Todo o tráfego de rede flui por meio da interface de rede elástica dentro do Amazon Virtual Private Cloud (Amazon VPC). É possível visualizar esse tráfego por meio dos logs de fluxo da Amazon VPC. No entanto, a tarefa usa a configuração de rede em vez de usar as interfaces de rede elásticas de propriedade do Fargate. Isso ocorre porque as interfaces de rede elásticas são colocadas na Amazon VPC.

O agente do contêiner do Amazon ECS usa a função de execução de tarefas do AWS Identity and Access Management (IAM) para obter informações do AWS Systems Manager Parameter Store ou do AWS Secrets Manager. Se você usar uma chave do AWS Key Management Service (AWS KMS) gerenciada pelo cliente para criptografar dados no Systems Manager Parameter Store ou no Secrets Manager, você deve conceder permissões à função do IAM de execução da tarefa para as seguintes ações: ssm:GetParameters, secretsmanager:GetSecretValue e kms:Decrypt.

Resolução

Verifique as rotas das sub-redes para a Internet

Se você tiver uma tarefa do Fargate em uma sub-rede pública, verifique se a tarefa tem um endereço IP público atribuído e uma rota padrão (0.0.0.0/0) para um gateway da Internet. Certifique-se de habilitar a Atribuição automática pública ao iniciar uma nova tarefa ou criar um serviço. Se você usar os endpoints do Secrets Manager ou do Systems Manager VPC em uma sub-rede pública e tiver o AmazonProvidedDNS habilitado na configuração de opções de DHCP da Amazon VPC, o endpoint da Amazon VPC será usado para acessar o Secrets Manager ou o Systems Manager em vez do gateway da Internet na sub-rede pública.

Observação: não é possível habilitar essa opção para tarefas existentes. Para serviços existentes, você não pode habilitar essa opção usando o Console de Gerenciamento da AWS. No entanto, você pode usar a AWS Command Line Interface (AWS CLI) para reconfigurar os serviços existentes. Se você criou o serviço do Amazon ECS usando uma pilha do AWS CloudFormation, você pode atualizar o serviço modificando a propriedade NetworkConfiguration do AWS:ECS:Service.

Se você tiver uma tarefa do Fargate em uma sub-rede privada, verifique se a tarefa tem uma rota padrão (0.0.0.0/0) para um gateway NAT, um AWS PrivateLink ou outra fonte de conectividade com a Internet.

  • Se você usar um gateway NAT, coloque-o em uma sub-rede pública. Para obter mais informações, consulte a Arquitetura com um gateway da internet e um gateway NAT.
  • Se você usa o PrivateLink, certifique-se de que sua infraestrutura do Fargate pode usar os grupos de segurança para seus endpoints da Amazon VPC.
  • Se você usar um servidor de domínio de nome personalizado, certifique-se de que a consulta de DNS tenha acesso de saída na porta 53 usando os protocolos UDP e TCP e acesso HTTPS na porta 443.

Verifique a ACL da rede e as configurações do grupo de segurança

Verifique se a lista de controle de acesso (ACL) à rede e os grupos de segurança não bloqueiam o acesso de saída à porta 443 da sub-rede. Para mais informações, consulte os grupos de segurança da VPC.

Observação: as tarefas do Fargate devem ter acesso de saída à porta 443 para permitir o tráfego de saída e acessar os endpoints do Amazon ECS.

Verifique os endpoints da Amazon VPC

Se você usa o PrivateLink, certifique-se de ter criado os endpoints necessários.

Os endpoints necessários para as versões 1.4.0 ou posteriores da plataforma Fargate são os seguintes:

  • com.amazonaws.region.ecr.dkr
  • com.amazonaws.region.ecr.api
  • Endpoint do S3 gateway
  • com.amazonaws.region.logs

Para obter mais informações, consulte Considerações sobre os endpoints da VPC do Amazon ECR.

Observação: se a definição da tarefa usar o Secrets Manager, os parâmetros do Systems Manager ou o Amazon CloudWatch Logs, pode ser necessário definir endpoints. Para obter mais informações, consulte Usar o Secrets Manager com endpoints de VPC, Criar os endpoints de VPC para o Amazon ECS e Usar o CloudWatch Logs com endpoints de VPC de interface.

Se você usar o PrivateLink, certifique-se de que o grupo de segurança anexado ao endpoint da Amazon VPC permita o tráfego do grupo de segurança de tarefas do Fargate ou do intervalo CIDR da VPC da tarefa do Fargate na porta TCP 443.

Verifique as políticas de endpoint da VPC e as políticas de endpoint da Amazon Simple Storage Solution (Amazon S3) para ter certeza de que a infraestrutura do Fargate tem permissão para acessar os serviços.

Verifique as permissões e funções do IAM

A função de execução de tarefas concede as permissões necessárias ao contêiner do Amazon ECS e aos agentes do Fargate para fazer chamadas de API para a tarefa. Essa função é exigida pelo Fargate quando você faz o seguinte:

  • Puxe uma imagem de contêiner do Amazon Elastic Container Registry (Amazon ECR).
  • Use o driver de log awslogs.
  • Use a autenticação com registro privado.
  • Faça referência aos dados sigilosos usando os segredos do Secrets Manager ou os parâmetros do Systems Manager Parameter Store.

Se o seu caso de uso envolver qualquer um dos cenários anteriores, certifique-se de ter as permissões necessárias definidas na função de execução da tarefa. Para obter uma lista completa das permissões necessárias, consulte a Função do IAM de execução de tarefas do Amazon ECS.

Verifique as informações confidenciais referenciadas na definição de tarefa do Amazon ECS

Verifique se os nomes de segredos/parâmetros correspondem aos nomes referenciados na definição de tarefa do Amazon ECS. Em seguida, verifique se os valores na definição de contêiner na sua definição de tarefa estão correspondendo aos valores na sua definição de tarefa do Amazon ECS. Para obter mais informações, consulte Como passar segredos ou informações confidenciais com segurança para contêineres em uma tarefa do Amazon ECS?

Se o parâmetro Armazenamento de parâmetros do Systems Manager existir na mesma região da tarefa que você está iniciando, será possível usar o ARN completo ou o nome do segredo. Se o parâmetro existir em uma região diferente, o ARN completo deverá ser especificado.

Para verificar o ARN e o nome do parâmetro do System Manager, faça o seguinte:

1.    Abra o console do AWS Systems Manager.

2.    No painel de navegação, escolha Parameter Store (Armazenamento de parâmetros) e confirme o valor de Parameter store name (Nome do repositório de parâmetros).

3.    Em seguida, para obter informações de ARN sobre o parâmetro, use a AWS Command Line Interface (AWS CLI) e execute o seguinte comando:
Observação: Substitua nome_do_segredo_do_armazenamento_de_parâmetros pelo nome do segredo do armazenamento de parâmetros.

$ aws ssm get-parameter —name <name_of_parameter_store_secret> —with-decryption

Observação: os parâmetros que fazem referência a segredos do Secrets Manager não podem usar recursos de versionamento ou histórico do Parameter Store. Para obter mais informações, consulte Restrições.


Este artigo ajudou?


Precisa de ajuda com faturamento ou suporte técnico?