Como resolvo o erro "erro ao extrair a configuração da imagem: muitas solicitações" ao usar imagens do Docker no AWS CodeBuild?

5 minuto de leitura
0

Quero resolver o erro "erro ao extrair a configuração da imagem: muitas solicitações" que recebo quando uso imagens do Docker no AWS CodeBuild.

Breve descrição

Se você usa imagens do Docker no CodeBuild, pode experimentar o controle de utilização ao extrair camadas do repositório público do DockerHub.

Para resolver o erro que você recebe quando ocorre o controle de utilização, você deve configurar o CodeBuild para autenticar as extrações de camadas usando suas credenciais de conta do DockerHub.

Importante: Para concluir as etapas a seguir, você deve ter uma conta DockerHub e o nome de usuário e a senha da sua conta.

Resolução

Armazene suas credenciais do DockerHub com o AWS Secrets Manager

1.    Abra o console do AWS Secrets Manager.

2.    Escolha Armazenar um novo segredo.

3.    Na seção Selecionar tipo de segredo, escolha Outro tipo de segredo.

4.    Na seção Especificar os pares de chave/valor a serem armazenados neste segredo, escolha a guia Chave/valor do segredo.

5.    Na primeira caixa de texto, insira o nome de usuário. Na segunda caixa de texto, insira seu nome de usuário do DockerHub. Em seguida, escolha Adicionar linha.

6.    Na primeira caixa de texto da nova linha, digite a senha. Na segunda caixa de texto, digite sua senha do DockerHub. Em seguida, escolha Adicionar linha.

7.    Escolha Próximo.

8.    Em Nome do segredo, insira um nome para seu segredo. Por exemplo: dockerhub

9.    Escolha Próximo.

10.    Confirme se a configuração padrão para Desativar rotação automática está selecionada.

11.    Escolha Próximo.

12.    Escolha Armazenar.

13.    Na coluna Nome do segredo, escolha seu segredo.

14.    Na seção Detalhes do segredo, observe o Amazon Resource Name (ARN) para o ARN do segredo.

Observação: Se você criou um segredo configurado com uma chave de criptografia gerenciada pelo cliente, deverá adicionar permissões para a ação kms:Decrypt usando a chave configurada.

Resolva o controle de utilização que ocorre na fase de PROVISIONAMENTO

1.    Abra o console do CodeBuild.

2.    No painel de navegação, escolha Criar e, em seguida, escolha Criar projetos.

3.    Escolha seu projeto de criação.

4.    Escolha Editar e, em seguida, escolha Ambiente.

5.    Escolha Substituir imagem.

6.    Em Nova imagem do ambiente, escolha Imagem personalizada.

7.    Em Tipo de ambiente, selecione sua imagem personalizada.

8.    Em Registro de imagens, escolha Outro registro.

9.    Em URL de registro externo, insira o nome da sua imagem do Docker.

10.    Em Credencial do registro, insira o ARN do segredo que você anotou anteriormente.

11.    Escolha Atualizar ambiente.

Resolva o controle de utilização que ocorre em outras fases

Importante: Você deve conceder permissões ao AWS Identity and Access Management (IAM) à função de serviço CodeBuild para acessar o segredo.

1.    Abra o console do CodeBuild.

2.    No painel de navegação, escolha Criar e, em seguida, escolha Criar projetos.

3.    Escolha seu projeto de criação.

4.    Escolha a guia Detalhes da criação.

5.    Na seção Ambiente, em Perfil de serviço, escolha o perfil de serviço ARN. Isso abre o console do IAM.

6.    Na guia Permissões, escolha Adicionar política embutida.

7.    Escolha a guia JSON.

8.    Substitua o código do editor de texto pela seguinte política do IAM:

Observação: Substitua YOUR_SECRET_ARN pelo ARN do segredo que você anotou anteriormente.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue"
      ],
      "Resource": [
        "YOUR_SECRET_ARN*"
      ]
    }
  ]
}

9.    Escolha Política de revisão.

10.    Em Nome, insira um nome para a política. Por exemplo: dockerhub_secret_access **Observacão:**Você pode escolher qualquer nome para a política. O nome é apenas para sua referência futura.

11.    Escolha Criar política.

Configure o CodeBuild para recuperar o segredo

1.    Abra o console do CodeBuild.

2.    No painel de navegação, escolha Criar e, em seguida, escolha Criar projetos.

3.    Escolha seu projeto de criação.

4.    Escolha Editar e, em seguida, escolha Ambiente.

5.    Expanda a seção Configuração adicional.

6.    Para adicionar variáveis de ambiente, na seção de variáveis de Ambiente, em Nome, digite DOCKERHUB_USERNAME.

7.    Em Valor, insira o nome do seu segredo, seguido por :username. Por exemplo: dockerhub:username

8.    Em Tipo, escolha Secrets Manager.

9.    Para adicionar a próxima variável de ambiente, escolha Adicionar variável de ambiente.

10.    Em Nome, digite DOCKERHUB_PASSWORD.

11.    Em Valor, insira o nome do seu segredo, seguido por :password. Por exemplo: dockerhub:password

12.    Em Tipo, escolha Secrets Manager.

13.    Escolha Atualizar ambiente.

14.    Modifique seu buildspec e adicione o seguinte comando antes de realizar qualquer outra ação do Docker:

echo "${DOCKERHUB_PASSWORD}" | docker login -u "${DOCKERHUB_USERNAME}" --password-stdin

Aviso: Esse comando pode registrar detalhes do seu nome de usuário e senha de login do docker nos logs de criação. Depois de resolver o erro de controle de utilização, redefina sua senha do docker.

Por exemplo:

version: 0.2

phases:
  install:
    commands:
      - echo "${DOCKERHUB_PASSWORD}" | docker login -u "${DOCKERHUB_USERNAME}" --password-stdin
  build:
    commands:
      - docker pull docker:dind
AWS OFICIAL
AWS OFICIALAtualizada há um ano