Solução de problemas de AWS CodeBuild
Use as informações neste tópico para ajudá-lo a identificar, diagnosticar e resolver problemas. Para saber como registrar em log e monitorar compilações do CodeBuild para solucionar problemas, consulte Registrar em log e monitoramento.
Tópicos
- Artefatos de referência de compilações Apache Maven do repositório errado
- Comandos de compilação executados como raiz por padrão
- As compilações podem falhar quando nomes de arquivos têm caracteres que não sejam do inglês.
- As compilações podem falhar ao obter parâmetros do Amazon EC2 Parameter Store
- Não é possível acessar o filtro de ramificação de acesso no console do CodeBuild.
- Não é possível visualizar o êxito ou a falha de compilação
- Status de compilação não comunicado ao provedor de origem
- Não é possível localizar e selecionar a imagem de base da plataforma Windows Server Core 2019.
- Comandos anteriores em arquivos buildspec não são reconhecidos por comandos posteriores
- Erro: "acesso negado" ao tentar fazer download do cache
- Erro: "BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE" ao usar uma imagem de compilação personalizada
- Erro: contêiner de compilação encontrado desativado antes de concluir a compilação. O contêiner de compilação foi desativado porque estava sem memória ou a imagem de Docker não é compatível. ErrorCode: 500"
- Erro: “Cannot connect to the Docker daemon (Não é possível conectar-se ao daemon do Docker)” ao executar uma compilação
- Erro: “O CodeBuild não está autorizado a realizar: sts:AssumeRole” ao criar ou atualizar um projeto de compilação
- Erro: "erro ao chamar o GetBucketAcl: o proprietário do bucket foi alterado ou a função de serviço não tem mais permissão para chamar o s3:GetBucketAcl"
- Erro: "Failed to upload artifacts: Invalid arn (Falha ao fazer upload de artefatos: arn inválido)” ao executar uma compilação
- Erro: "falha do clone do Git: não é possível acessar 'your-repository-URL': problema de certificado SSL: certificado autoassinado"
- Erro: "The bucket you are attempting to access must be addressed using the specified endpoint (O bucket que você está tentando acessar deve ser endereçado usando o endpoint especificado)" ao executar uma compilação
- Erro: "This build image requires selecting at least one runtime version" (Esta imagem de compilação requer a seleção de pelo menos um tempo de execução)
- Erro: "QUEUED: INSUFFICIENT_SUBNET" quando ocorre uma falha em uma compilação em uma fila de compilação
- Erro: "não é possível baixar o cache: RequestError: falha ao enviar solicitação causada por: x509: falha ao carregar raízes do sistema e nenhuma raiz fornecida"
- Erro: "Não foi possível fazer download do certificado do S3. AccessDenied"
- Erro: "não foi possível localizar as credenciais"
- Erro de tempo limite RequestError ao executar o CodeBuild em um servidor de proxy
- O bourne shell (sh) deve existir em imagens de compilação
- Aviso: "ignorando a instalação de tempos de execução. A seleção de versão de tempo de execução não é compatível com esta imagem de compilação” ao executar uma compilação
- Erro: “Não foi possível verificar a identidade do JobWorker” ao abrir o console do CodeBuild
- Falha ao iniciar a compilação
- Acessar metadados do GitHub em compilações armazenadas em cache localmente
- AccessDenied: o proprietário do bucket do grupo de relatórios não corresponde ao proprietário do bucket do S3...
Artefatos de referência de compilações Apache Maven do repositório errado
Problema: ao usar o Maven com um ambiente de compilação Java fornecido no AWS CodeBuild, o Maven chama as dependências de plugin e compilação do repositório central seguro Maven em https://repo1.maven.org/maven2pom.xml
do seu projeto de build declara explicitamente outros locais de uso.
Possível causa: os ambientes de compilação Java fornecidos pelo CodeBuild incluem um arquivo denominado settings.xml
pré-instalado no diretório /root/.m2
do ambiente de compilação. Esse arquivo settings.xml
contém as seguintes declarações, que instruem o Maven para sempre chamar as dependências de plugin e build do repositório central seguro Maven em https://repo1.maven.org/maven2
<settings> <activeProfiles> <activeProfile>securecentral</activeProfile> </activeProfiles> <profiles> <profile> <id>securecentral</id> <repositories> <repository> <id>central</id> <url>https://repo1.maven.org/maven2</url> <releases> <enabled>true</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>https://repo1.maven.org/maven2</url> <releases> <enabled>true</enabled> </releases> </pluginRepository> </pluginRepositories> </profile> </profiles> </settings>
Solução recomendada: Faça o seguinte:
-
Adicione um arquivo
settings.xml
ao seu código-fonte. -
Nesse arquivo
settings.xml
, use o formatosettings.xml
precedente como guia para declarar os repositórios de onde deseja que o Maven chame as dependências de plugin e build. -
Na fase
install
do projeto de compilação, instrua o CodeBuild para copiar o arquivosettings.xml
para o diretório/root/.m2
do ambiente de compilação. Por exemplo, considere o seguinte trecho de um arquivobuildspec.yml
que demonstre esse comportamento.version 0.2 phases: install: commands: - cp ./settings.xml /root/.m2/settings.xml
Comandos de compilação executados como raiz por padrão
Problema: o AWS CodeBuild executa os comandos de compilação como o usuário raiz. Isso acontecerá mesmo se o Dockerfile da imagem de compilação relacionado definir a instrução USER
como um usuário diferente.
Causa: por padrão, o CodeBuild executa todos os comandos de compilação como o usuário raiz.
Solução recomendada: nenhuma.
As compilações podem falhar quando nomes de arquivos têm caracteres que não sejam do inglês.
Problema: ao executar uma compilação que use arquivos com nomes que contenham caracteres que não sejam do inglês (por exemplo, caracteres chineses), a compilação falha.
Possível causa: ambientes de compilação fornecidos pelo AWS CodeBuild têm a localidade padrão definida como POSIX
. As configurações de localização de POSIX
são menos compatíveis com o CodeBuild e nomes de arquivos que contenham caracteres que não sejam do inglês e podem causar a falha das compilações relacionadas.
Solução recomendada: adicione os comandos a seguir à seção pre_build
do arquivo buildspec. Esses comandos fazem o ambiente de compilação usar UTF-8 para inglês dos EUA como as configurações de localização, o que é mais compatível com o CodeBuild e os nomes de arquivo que não contêm caracteres que não sejam do inglês.
Para ambientes de compilação com base no Ubuntu:
pre_build: commands: - export LC_ALL="en_US.UTF-8" - locale-gen en_US en_US.UTF-8 - dpkg-reconfigure locales
Para ambientes de compilação com base no Amazon Linux:
pre_build: commands: - export LC_ALL="en_US.utf8"
As compilações podem falhar ao obter parâmetros do Amazon EC2 Parameter Store
Problema: quando uma compilação tenta obter o valor de um ou mais parâmetros armazenados no Amazon EC2 Parameter Store, ela falha na fase DOWNLOAD_SOURCE
com o erro Parameter does not
exist
.
Possível causa: a função de serviço da qual o projeto de compilação depende não tem permissão para chamar a ação ssm:GetParameters
ou o projeto de compilação usa uma função de serviço gerada pelo AWS CodeBuild e permite chamar a ação ssm:GetParameters
, mas os parâmetros têm nomes que não começam com /CodeBuild/
.
Soluções recomendadas:
-
Se o perfil de serviço não tiver sido gerada pelo CodeBuild, atualize a definição para permitir que o CodeBuild chame a ação
ssm:GetParameters
. Por exemplo, a seguinte declaração de política permite chamar a açãossm:GetParameters
para obter parâmetros com nomes que comecem com/CodeBuild/
:{ "Version": "2012-10-17", "Statement": [ { "Action": "ssm:GetParameters", "Effect": "Allow", "Resource": "arn:aws:ssm:
REGION_ID
:ACCOUNT_ID
:parameter/CodeBuild/*" } ] } -
Se o perfil de serviço tiver sido gerado pelo CodeBuild, atualize a definição para permitir que ele acesse parâmetros no Amazon EC2 Parameter Store com nomes diferentes daqueles que comecem com
/CodeBuild/
. Por exemplo, a seguinte declaração de política permite chamar a açãossm:GetParameters
para obter parâmetros com o nome especificado:{ "Version": "2012-10-17", "Statement": [ { "Action": "ssm:GetParameters", "Effect": "Allow", "Resource": "arn:aws:ssm:
REGION_ID
:ACCOUNT_ID
:parameter/PARAMETER_NAME
" } ] }
Não é possível acessar o filtro de ramificação de acesso no console do CodeBuild.
Problema: a opção de filtro da ramificação não está disponível no console ao criar ou atualizar um projeto do AWS CodeBuild.
Possível causa: a opção de filtro da ramificação está suspensa. Ela foi substituída por grupos de filtros de webhook, que fornecem mais controle sobre os eventos de webhook que acionam uma nova compilação no CodeBuild.
Solução recomendada: para migrar um filtro de ramificação criado antes da introdução dos filtros de webhook, crie um grupo de filtro de webhook com um filtro HEAD_REF
com a expressão regular ^refs/heads/
. Por exemplo, se sua expressão regular do filtro de ramificação era branchName
$^branchName$
, então a expressão regular que você colocar no filtro HEAD_REF
será ^refs/heads/branchName$
. Para obter mais informações, consulte Filtrar eventos de webhook do Bitbucket e Filtrar eventos de webhook do GitHub (console).
Não é possível visualizar o êxito ou a falha de compilação
Problema: você não consegue ver o êxito ou a falha de uma nova tentativa de compilação.
Possível causa: a opção para informar o status da compilação não está habilitada.
Soluções recomendadas: habilite Informar status da compilação ao criar ou atualizar um projeto do CodeBuild. Essa opção instrui o CodeBuild a informar o status quando você acionar uma compilação. Para obter mais informações, consulte reportBuildStatus na Referência da API do AWS CodeBuild.
Status de compilação não comunicado ao provedor de origem
Problema: depois de permitir o relatório do status da compilação para um provedor de origem, como o GitHub ou o Bitbucket, o status da compilação não é atualizado.
Possível causa: o usuário associado ao provedor de origem não tem acesso de gravação ao repositório.
Soluções recomendadas: para poder comunicar o status da compilação ao provedor de origem, o usuário associado ao provedor de origem deve ter acesso de gravação ao repositório. Se o usuário não tiver acesso de gravação, o status de compilação não poderá ser atualizado. Para obter mais informações, consulte Acesso do provedor de origem.
Não é possível localizar e selecionar a imagem de base da plataforma Windows Server Core 2019.
Problema: não é possível localizar nem selecionar a imagem de base da plataforma Windows Server Core 2019.
Possível causa: você está usando uma região da AWS que não é compatível com essa imagem.
Soluções recomendadas: use uma das seguintes regiões da AWS com a qual a imagem base da plataforma Windows Server Core 2019 é compatível:
-
Leste dos EUA (N. da Virgínia)
-
Leste dos EUA (Ohio)
-
Oeste dos EUA (Oregon)
-
Europa (Irlanda)
Comandos anteriores em arquivos buildspec não são reconhecidos por comandos posteriores
Problema: Os resultados de um ou mais comandos em seu arquivo buildspec não são reconhecidos por comandos posteriores no mesmo arquivo buildspec. Por exemplo, um comando pode definir uma variável de ambiente local, mas um comando executado posteriormente falha em obter o valor da variável de ambiente local.
Possível causa: no arquivo buildspec versão 0.1, o AWS CodeBuild executa cada comando em uma instância à parte do shell padrão no ambiente de compilação. Isso significa que cada comando é executado isoladamente em relação aos outros comandos. Por padrão, então, você não pode executar um comando que dependa do estado de quaisquer comandos anteriores.
Soluções recomendadas: recomendamos usar a especificação de compilação versão 0.2, que resolve o problema. Se você precisa usar o buildspec versão 0.1, recomendamos que use o operador de encadeamento de comandos do shell (por exemplo, &&
no Linux) para combinar vários comandos em um só. Ou inclua no código-fonte um script de shell que contenha vários comandos e, em seguida, chame o script de shell de um único comando no arquivo buildspec. Para obter mais informações, consulte Shells e comandos em ambientes de compilação e Variáveis de ambiente em ambientes de compilação.
Erro: "acesso negado" ao tentar fazer download do cache
Problema: ao tentar fazer download do cache em um projeto de compilação que tenha cache habilitado, você recebe um erro Access denied
.
Causas possíveis:
-
Você acabou de configurar o armazenamento em cache como parte do projeto de compilação.
-
O cache foi invalidado recentemente por meio da API
InvalidateProjectCache
. -
A função de serviço que está sendo usada pelo CodeBuild não tem permissões
s3:GetObject
es3:PutObject
para o bucket do S3 que está mantendo o cache.
Solução recomendada: para uso pela primeira vez, é normal ver isso logo depois da atualização da configuração do cache. Caso esse erro persista, é necessário verificar se a função de serviço tem permissões s3:GetObject
e s3:PutObject
para o bucket do S3 que está mantendo o cache. Para obter mais informações, consulte Specifying S3 permissions no Guia do desenvolvedor do Amazon S3.
Erro: "BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE" ao usar uma imagem de compilação personalizada
Problema: durante a tentativa de executar uma compilação que use uma imagem de compilação personalizada, a compilação falha com o erro BUILD_CONTAINER_UNABLE_TO_PULL_IMAGE
.
- Possível causa: o tamanho descompactado geral da imagem de compilação é maior que o espaço em disco disponível do tipo de computação do ambiente de compilação. Para verificar o tamanho da imagem da compilação, use o Docker para executar o comando
docker images
. Para obter uma lista de espaço em disco disponível por tipo de computação, consulte Modos e tipos de computação do ambiente de compilação.REPOSITORY
:TAG
-
Solução recomendada: use um tipo de computação maior com mais espaço em disco disponível ou reduza o tamanho da imagem de compilação personalizada.
- Possível causa: o AWS CodeBuild não tem permissão para extrair a imagem da compilação do Amazon Elastic Container Registry (Amazon ECR).
-
Solução recomendada: atualize as permissões no repositório no Amazon ECR de maneira que o CodeBuild possa enviar a imagem de compilação personalizada ao ambiente de compilação. Para obter mais informações, consulte Exemplo do Amazon ECR.
- Possível causa: a imagem do Amazon ECR solicitada não está disponível na região da AWS usada pela conta da AWS.
-
Solução recomendada: use uma imagem do Amazon ECR que esteja na mesma região da AWS usada pela sua conta da AWS.
- Possível causa: você está usando um registro privado em uma VPC que não tem acesso público à internet. O CodeBuild não consegue extrair uma imagem de um endereço IP privado em uma VPC. Para obter mais informações, consulte Registro privado com exemplo do AWS Secrets Manager para CodeBuild.
-
Solução recomendada: se você usar um registro privado em uma VPC, verifique se a VPC tem acesso público à internet.
- Possível causa: se a mensagem de erro contiver “toomanyrequests“ e a imagem for obtida do Docker Hub, esse erro significa que o limite de extração do Docker Hub foi atingido.
-
Solução recomendada: use um registro privado do Docker Hub ou obtenha a imagem do Amazon ECR. Para obter mais informações sobre como usar um registro privado, consulte Registro privado com exemplo do AWS Secrets Manager para CodeBuild. Para obter mais informações sobre como usar o Amazon ECR, consulte Exemplo do Amazon ECR para CodeBuild .
Erro: contêiner de compilação encontrado desativado antes de concluir a compilação. O contêiner de compilação foi desativado porque estava sem memória ou a imagem de Docker não é compatível. ErrorCode: 500"
Problema: quando você tenta usar um contêiner do Microsoft Windows ou do Linux no AWS CodeBuild, esse erro ocorre durante a fase de PROVISIONAMENTO.
Causas possíveis:
-
A versão do SO do contêiner não é compatível com o CodeBuild.
-
HTTP_PROXY
,HTTPS_PROXY
ou ambos são especificados no contêiner.
Soluções recomendadas:
-
Para o Microsoft Windows, use um contêiner do Windows com uma versão de SO do contêiner microsoft/windowsservercore:10.0.x (por exemplo, microsoft/windowsservercore:10.0.14393.2125).
-
Para o Linux, desmarque as configurações
HTTPS_PROXY
eHTTP_PROXY
em sua imagem do Docker ou especifique a configuração da VPC no projeto de compilação.
Erro: “Cannot connect to the Docker daemon (Não é possível conectar-se ao daemon do Docker)” ao executar uma compilação
Problema: sua compilação falha e você recebe um erro semelhante a Cannot connect to the Docker daemon
at unix:/var/run/docker.sock. Is the docker daemon running?
no log da compilação.
Causa possível: sua compilação não está sendo executada no modo privilegiado.
Solução recomendada: para corrigir esse erro, você deve ativar o modo privilegiado e atualizar o buildspec usando as instruções a seguir.
Para executar a compilação no modo privilegiado, siga estas etapas:
-
Abra o console do CodeBuild em https://console.aws.amazon.com/codebuild/
. -
No painel de navegação, escolha Projetos de compilação e selecione o projeto de compilação.
-
Em Edit (Editar), escolha Environment (Ambiente).
-
Escolha Additional configuration (Configuração adicional).
-
Em Privilegiado, selecione Ativar este sinalizador se quiser criar imagens do Docker ou desejar que suas compilações obtenham privilégios elevados.
-
Selecione Update environment (Atualizar ambiente).
-
Selecione Start build (Iniciar compilação) para tentar novamente.
Você também precisará iniciar o daemon do Docker dentro do contêiner. A fase install
do buildspec pode ser semelhante a esta.
phases: install: commands: - nohup /usr/local/bin/dockerd --host=unix:///var/run/docker.sock --host=tcp://127.0.0.1:2375 --storage-driver=overlay2 & - timeout 15 sh -c "until docker info; do echo .; sleep 1; done"
Para obter mais informações sobre o driver de armazenamento OverlayFS mencionado no arquivo buildspec, consulte Usar o driver de armazenamento OverlayFS
nota
Caso o sistema operacional base seja o Alpine Linux, no arquivo buildspec.yml
adicione o argumento -t
em timeout
:
- timeout -t 15 sh -c "until docker info; do echo .; sleep 1; done"
Para saber mais sobre como compilar e executar uma imagem do Docker usando o AWS CodeBuild, consulte Docker no exemplo de imagem personalizada para o CodeBuild.
Erro: “O CodeBuild não está autorizado a realizar: sts:AssumeRole” ao criar ou atualizar um projeto de compilação
Problema: ao tentar criar ou atualizar um projeto de compilação, você recebe o erro Code:InvalidInputException,
Message:CodeBuild is not authorized to perform: sts:AssumeRole on
arn:aws:iam::
.account-ID
:role/service-role-name
Causas possíveis:
-
O AWS Security Token Service (AWS STS) foi desativado para a região AWS onde você tentava criar ou atualizar o projeto de build.
-
O perfil de serviço do AWS CodeBuild associado ao projeto de compilação não existe ou não tem permissões suficientes para confiar no CodeBuild.
Soluções recomendadas:
-
Confirme se AWS STS está ativado para a região AWS onde você tentava criar ou atualizar o projeto de build. Para ter mais informações, consulte Ativar e desativar o AWS STS em uma AWS região da no Manual do usuário do IAM.
-
Verifique se o perfil de serviço do CodeBuild de destino existe na conta da AWS. Se você não estiver usando o console, certifique-se de que não soletrou erradamente o Amazon Resource Name (ARN) da função de serviço quando criou ou atualizou o projeto de build.
-
Garanta que o perfil de serviço do CodeBuild de destino tem permissões suficientes para confiar no CodeBuild. Para obter mais informações, consulte a declaração de políticas de relacionamento de confiança em Permitir que o CodeBuild interaja com outros serviços da AWS.
Erro: "erro ao chamar o GetBucketAcl: o proprietário do bucket foi alterado ou a função de serviço não tem mais permissão para chamar o s3:GetBucketAcl"
Problema: ao executar uma compilação, você recebe um erro sobre a mudança de propriedade de um bucket do S3 e as permissões GetBucketAcl
.
Possível causa: você adicionou as permissões s3:GetBucketAcl
e s3:GetBucketLocation
ao perfil do IAM. Essa permissões protegem o bucket do S3 de seu projeto e garantem que só você pode acessá-lo. Depois de adicionar essas permissões, o proprietário do bucket do S3 foi alterado.
Solução recomendada: verifique se você é proprietário do bucket do S3 e adicione permissões ao perfil do IAM novamente. Para obter mais informações, consulte Acesso seguro aos buckets do S3.
Erro: "Failed to upload artifacts: Invalid arn (Falha ao fazer upload de artefatos: arn inválido)” ao executar uma compilação
Problema: ao executar uma compilação, a fase UPLOAD_ARTIFACTS
de compilação falha com o erro Failed to
upload artifacts: Invalid arn
.
Possível causa: o bucket de saída do S3 (o bucket no qual o AWS CodeBuild armazena a saída da compilação) está em uma região da AWS diferente daquela do projeto de compilação do CodeBuild.
Solução recomendada: atualize as configurações do projeto de compilação para apontar para um bucket de saída que esteja na mesma região da AWS que o projeto de compilação.
Erro: "falha do clone do Git: não é possível acessar 'your-repository-URL'
: problema de certificado SSL: certificado autoassinado"
Problema: ao tentar executar um projeto de compilação, a compilação falha com esse erro.
Possível causa: seu repositório de origem tem um certificado autoassinado, mas você não optou por instalar o certificado a partir de seu bucket do S3 como parte do projeto de compilação.
Soluções recomendadas:
-
Edite o projeto. Em Certificate, escolha Install certificate from S3. Em Bucket de certificado, selecione o bucket do S3 onde o certificado SSL está armazenado. Em Chave de objeto de certificado, insira o nome da chave do objeto do S3.
-
Edite o projeto. Selecione SSL inseguro para ignorar os avisos do SSL ao conectar-se ao seu repositório do projeto do GitHub Enterprise Server.
nota
Recomendamos usar Insecure SSL somente para teste. Ele não deve ser usado em um ambiente de produção.
Erro: "The bucket you are attempting to access must be addressed using the specified endpoint (O bucket que você está tentando acessar deve ser endereçado usando o endpoint especificado)" ao executar uma compilação
Problema: ao executar uma compilação, a fase DOWNLOAD_SOURCE
de compilação falha com o erro The bucket you
are attempting to access must be addressed using the specified endpoint. Please send
all future requests to this endpoint
.
Causa possível: seu código-fonte pré-criado é armazenado em um bucket do S3 e esse bucket está em uma região da AWS diferente do projeto de compilação do AWS CodeBuild.
Solução recomendada: atualize as configurações do projeto de compilação para apontar para um bucket que contenha o código-fonte preexistente. Garanta que o bucket esteja na mesma região da AWS que o projeto de compilação.
Erro: "This build image requires selecting at least one runtime version" (Esta imagem de compilação requer a seleção de pelo menos um tempo de execução)
Problema: ao executar uma compilação, a fase DOWNLOAD_SOURCE
de compilação falha com o erro YAML_FILE_ERROR:
This build image requires selecting at least one runtime version
.
Possível causa: a compilação usa a versão 1.0 ou posterior da imagem padrão do Amazon Linux 2 (AL2) ou a versão 2.0 ou posterior da imagem padrão do Ubuntu, e um tempo de execução não foi especificado no arquivo buildspec.
Solução recomendada: se você usar a imagem gerenciada aws/codebuild/standard:2.0
do CodeBuild, é necessário especificar uma versão de runtime na seção runtime-versions
do arquivo buildspec. Por exemplo, você pode usar o seguinte arquivo buildspec para um projeto que usa PHP:
version: 0.2 phases: install: runtime-versions: php: 7.3 build: commands: - php --version artifacts: files: - README.md
nota
Se você especificar uma seção runtime-versions
e usar uma imagem diferente do Ubuntu Standard Image 2.0 ou posterior, ou da imagem padrão do Amazon Linux 2 (AL2) 1.0 ou posterior, a compilação emitirá o aviso “Skipping install of runtimes. Runtime version selection is not supported by this build image
”.
Para obter mais informações, consulte Specify runtime versions in the buildspec file.
Erro: "QUEUED: INSUFFICIENT_SUBNET" quando ocorre uma falha em uma compilação em uma fila de compilação
Problema: ocorreu uma falha em uma compilação em uma fila de compilação com um erro semelhante a QUEUED: INSUFFICIENT_SUBNET
.
Causas possíveis: o bloco CIDR IPv4 especificado para sua VPC usa um endereço IP reservado. Os primeiros quatro endereços IP e o último endereço IP em cada bloco CIDR de sub-rede não estão disponíveis para você usar e não podem ser atribuídos a uma instância. Por exemplo, em uma sub-rede com bloco CIDR 10.0.0.0/24
, os seguintes cinco endereços IP são reservados:
-
10.0.0.0:
endereço de rede. -
10.0.0.1
: Reservado pela AWS para o roteador da VPC. -
10.0.0.2
: Reservado pela AWS. O endereço IP do servidor DNS é sempre a base do intervalo da rede VPC mais dois; no entanto, também reservamos a base de cada intervalo de sub-rede mais dois. Para VPCs com vários blocos CIDR, o endereço IP de servidor de DNS está localizado no CIDR principal. Para ter mais informações, consulte Amazon DNS server no Manual do usuário da Amazon VPC. -
10.0.0.3
: Reservado pela AWS para uso futuro. -
10.0.0.255
: Endereço de transmissão de rede. Não oferecemos suporte à transmissão em uma VPC. Este endereço está reservado.
Soluções recomendadas: verifique se a VPC usa um endereço IP reservado. Substitua o endereço IP reservado por um que não esteja reservado. Para obter mais informações, consulte Dimensionamento da VPC e da sub-rede no Guia do usuário da Amazon VPC.
Erro: "não é possível baixar o cache: RequestError: falha ao enviar solicitação causada por: x509: falha ao carregar raízes do sistema e nenhuma raiz fornecida"
Problema: ao tentar executar um projeto de compilação, a compilação falha com esse erro.
Possível causa: você configurou o armazenamento em cache como parte do projeto de compilação e está usando uma imagem de docker mais antiga que inclui um certificado raiz expirado.
Solução recomendada: atualize a imagem de docker que está sendo usada em seu projeto do AWS CodeBuild. Para obter mais informações, consulte Imagens do Docker fornecidas pelo CodeBuild.
Erro: "Não foi possível fazer download do certificado do S3. AccessDenied"
Problema: ao tentar executar um projeto de compilação, a compilação falha com esse erro.
Causas possíveis:
-
Você escolheu o bucket do S3 errado para o seu certificado.
-
Você digitou a chave de objeto errada para o seu certificado.
Soluções recomendadas:
-
Edite o projeto. Em Bucket de certificado, selecione o bucket do S3 onde o certificado SSL está armazenado.
-
Edite o projeto. Em Chave de objeto de certificado, insira o nome da chave do objeto do S3.
Erro: "não foi possível localizar as credenciais"
Problema: ao tentar executar o AWS CLI, usar um AWS SDK ou chamar outro componente semelhante como parte de um build, você recebe erros de build que são diretamente relacionados à AWS CLI, ao AWS SDK ou ao componente. Por exemplo, é possível obter um erro de compilação, como Unable to locate credentials
.
Causas possíveis:
-
A versão da AWS CLI, do AWS SDK ou do componente no ambiente de compilação é incompatível com o AWS CodeBuild.
-
Você está executando um contêiner do Docker dentro de um ambiente de compilação que usa o Docker, e o contêiner não tem acesso às credenciais da AWS por padrão.
Soluções recomendadas:
-
Certifique-se de que o ambiente de compilação tenha a versão a seguir ou superior da AWS CLI, do AWS SDK ou do componente.
-
AWS CLI: 1.10.47
-
AWS SDK for C++: 0.2.19
-
AWS SDK for Go: 1.2.5
-
AWS SDK for Java: 1.11.16
-
AWS SDK for JavaScript: 2.4.7
-
AWS SDK for PHP: 3.18.28
-
AWS SDK for Python (Boto3): 1.4.0
-
AWS SDK for Ruby: 2.3.22
-
Botocore: 1.4.37
-
CoreCLR: 3.2.6-beta
-
Node.js: 2.4.7
-
-
Se precisar executar um contêiner do Docker em um contêiner de compilação, e o contêiner exigir credenciais da AWS, será necessário passar as credenciais do ambiente de compilação para o contêiner. No arquivo buildspec, inclua um comando
run
do Docker como o seguinte. Este exemplo usa o comandoaws s3 ls
para listar seus buckets do S3 disponíveis. A opção AWS passa as variáveis de ambiente necessárias para o contêiner a fim de acessar credenciais da-e
.docker run -e AWS_DEFAULT_REGION -e AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
your-image-tag
aws s3 ls -
Se estiver criando uma imagem do Docker e a compilação exigir credenciais da AWS (por exemplo, para baixar um arquivo do Amazon S3), você deverá transmitir as credenciais do ambiente de compilação para o processo de compilação do Docker da maneira a seguir.
-
No Dockerfile do código-fonte da imagem de Docker, especifique as instruções
ARG
a seguir.ARG AWS_DEFAULT_REGION ARG AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
-
No arquivo buildspec, inclua um comando
build
do Docker como o seguinte. As opções--build-arg
definem as variáveis de ambiente necessárias para o processo de compilação do Docker acessar as credenciais da AWS.docker build --build-arg AWS_DEFAULT_REGION=$AWS_DEFAULT_REGION --build-arg AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI -t
your-image-tag
.
-
Erro de tempo limite RequestError ao executar o CodeBuild em um servidor de proxy
Problema: você recebe um erro RequestError
semelhante a um dos seguintes:
-
RequestError: send request failed caused by: Post https://logs.<your-region>.amazonaws.com/: dial tcp 52.46.158.105:443: i/o timeout
do CloudWatch Logs. -
Error uploading artifacts: RequestError: send request failed caused by: Put https://
do Amazon S3.your-bucket
.s3.your-aws-region
.amazonaws.com/*: dial tcp 52.219.96.208:443: connect: connection refused
Causas possíveis:
-
O
ssl-bump
não está configurado corretamente. -
A política de segurança da sua organização não permite que você use
ssl_bump
. -
Seu arquivo buildspec não tem configurações de proxy especificadas usando um elemento
proxy
.
Soluções recomendadas:
-
Certifique-se de que o
ssl-bump
está configurado corretamente. Se você usar o Squid para seu servidor de proxy, consulte Configurar o Squid como um servidor de proxy explícito. -
Siga estas etapas para usar endpoints privados para o Amazon S3 e o CloudWatch Logs:
-
Na tabela de roteamento da sua sub-rede privada, remova a regra que você adicionou para rotear o tráfego destinado à Internet para o seu servidor de proxy. Para obter informações, consulte Creating a subnet in your VPC no Guia do usuário da Amazon VPC.
-
Crie um endpoint privado do Amazon S3 e um endpoint do CloudWatch Logs e os associe à sub-rede privada da Amazon VPC. Para obter informações, consulte VPC endpoint services no Guia do usuário da Amazon VPC.
-
Confirme que Habilitar nome de DNS privado na Amazon VPC está selecionada. Para mais informações, consulte Criar um endpoint de interface no Guia do usuário da Amazon VPC.
-
-
Se você não usar o
ssl-bump
para um servidor de proxy explícito, adicione uma configuração de proxy ao arquivo buildspec usando um elementoproxy
. Para obter mais informações, consulte Executar o CodeBuild em um servidor de proxy explícito e Sintaxe de buildspec.version: 0.2 proxy: upload-artifacts: yes logs: yes phases: build: commands:
O bourne shell (sh) deve existir em imagens de compilação
Problema: você está usando uma imagem de compilação não fornecida pelo AWS CodeBuild, e há falha nas compilações com a mensagem Build container found
dead before completing the build
.
Possível causa: o Bourne Shell (sh
) não está incluído na imagem de compilação. O CodeBuild precisa de sh
para executar comandos e scripts de compilação.
Solução recomendada: se sh
não estiver presente na imagem de compilação, não se esqueça de incluí-lo antes de iniciar qualquer outra compilação que use a imagem. (O CodeBuild já inclui sh
nas imagens de compilação.)
Aviso: "ignorando a instalação de tempos de execução. A seleção de versão de tempo de execução não é compatível com esta imagem de compilação” ao executar uma compilação
Problema: ao executar uma compilação, o log de compilação contém este aviso.
Possível causa: a compilação não usa a versão 1.0 ou posterior da imagem padrão do Amazon Linux 2 (AL2) ou a versão 2.0 ou posterior da imagem padrão do Ubuntu, e um runtime foi especificado em uma seção runtime-versions
no arquivo buildspec.
Solução recomendada: certifique-se de que seu arquivo buildspec não contenha uma seção runtime-versions
. A seção runtime-versions
só será necessária se você usar a imagem padrão do Amazon Linux 2 (AL2) ou posterior ou a imagem padrão do Ubuntu versão 2.0 ou posterior.
Erro: “Não foi possível verificar a identidade do JobWorker” ao abrir o console do CodeBuild
Problema: quando você abre o console do CodeBuild, uma mensagem de erro “Não foi possível verificar a identidade do JobWorker” é exibida.
Possível causa: o perfil do IAM usado para acesso ao console tem uma tag com jobId
como chave. Essa chave de tag é reservada para o CodeBuild e causará esse erro se estiver presente.
Solução recomendada: altere todas as tags personalizadas do perfil do IAM que têm a chave jobId
para ter uma chave diferente, como jobIdentifier
.
Falha ao iniciar a compilação
Problema: ao iniciar uma compilação, você recebe uma mensagem de erro de falha ao iniciar a compilação.
Possível causa: o número de compilações simultâneas foi atingido.
Soluções recomendadas: espere até que outras compilações sejam concluídas ou aumente o limite de compilação simultânea para o projeto e inicie a compilação novamente. Para obter mais informações, consulte Configuração de projetos.
Acessar metadados do GitHub em compilações armazenadas em cache localmente
Problema: em alguns casos, o diretório .git em uma compilação em cache é um arquivo de texto e não um diretório.
Possíveis causas: quando o cache de origem local está habilitado para uma compilação, o CodeBuild cria um gitlink para o diretório .git
. Isso significa que o diretório é .git
, na verdade, um arquivo de texto que contém o caminho para o diretório.
Soluções recomendadas: em todos os casos, use o comando a seguir para obter o diretório de metadados do Git. Esse comando funcionará independentemente do formato de .git
:
git rev-parse --git-dir
AccessDenied: o proprietário do bucket do grupo de relatórios não corresponde ao proprietário do bucket do S3...
Problema: ao fazer upload dos dados de teste em um bucket do Amazon S3, o CodeBuild não consegue gravar os dados de teste no bucket.
Causas possíveis:
-
A conta especificada para o proprietário do bucket do grupo de relatórios não corresponde ao proprietário do bucket do Amazon S3.
-
O perfil de serviço não tem acesso de gravação ao bucket.
Soluções recomendadas:
-
Altere o proprietário do bucket do grupo de relatórios para corresponder ao proprietário do bucket do Amazon S3.
-
Modifique o perfil de serviço para conceder acesso de gravação ao bucket do Amazon S3.