Solucionando problemas de - AWS CodePipeline
Erro de pipeline: Um pipeline configurado comAWS Elastic Beanstalkretorna uma mensagem de erro: “Houve falha na implantação. A função fornecida não tem permissões suficientes: Serviço:AmazonElasticLoadBalancing”Erro de implantação: Um pipeline configurado com umAWS Elastic BeanstalkImplantar trava de ação em vez de falhar, quando a permissão “DescribeEvents” está ausenteErro de pipeline: Uma ação de origem resulta na mensagem de permissões insuficientes: “Não foi possível acessar o repositório CodeCommitrepository-name. Verifique se a função do IAM do pipeline tem permissões suficientes para acessar o repositório"Erro de pipeline: Uma ação de build ou de teste do Jenkins é executada por muito tempo e, em seguida, falha devido a falta de credenciais ou de permissõesErro de pipeline: Um pipeline criado em umAWSRegião usando um bucket criado em outroAWSRegião retorna um “InternalError” com o código “JobFailed”Erro de implantação: Um arquivo ZIP que contém um arquivo WAR é implantado com êxito noAWS Elastic Beanstalk, mas o URL do aplicativo informa um erro “404 Not Found”Os nomes de pasta de artefatos do pipeline parecem estar truncadosAdicione permissões do GitClone do CodeBuild para conexões com o Bitbucket, GitHub ou GitHub Enterprise ServerAdicionar permissões do CodeBuild GitClone para ações de CodeCommit fonte CodeErro de pipeline: Uma implantação com a ação CodeDeployToECS retorna uma mensagem de erro: Exception while using to read the task definition artifact file from: <source artifact name> "(Exceção ao tentar ler o arquivoAção de origem do GitHub versão 1: Lista de repositórios mostra diferentes repositóriosAção de origem do GitHub versão 2: Não foi possível concluir a conexão de um repositório doErro do Amazon S3: CodePipeline <ARN> está obtendo acesso ao S3 negado para o bucket S3 <BucketName>Pipelines com umAmazon S3, o Amazon ECR ou a fonte do CodeCommit não são mais iniciados automaticamentePrecisa de ajuda com outro problema?

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á.

Solucionando problemas de

As informações a seguir podem ajudar a solucionar problemas comuns no AWS CodePipeline.

Tópicos

Erro de pipeline: Um pipeline configurado comAWS Elastic Beanstalkretorna uma mensagem de erro: “Houve falha na implantação. A função fornecida não tem permissões suficientes: Serviço:AmazonElasticLoadBalancing”

Problema: A função de serviço do CodePipeline não tem permissões suficientes paraAWS Elastic Beanstalk, incluindo, mas não limitado a, algumas operações no Elastic Load Balancing. A função de serviço do CodePipeline foi atualizada em 6 de agosto de 2015 para resolver esse problema. Os clientes que criaram a função de serviço antes dessa data devem modificar a declaração de política da função de serviço para adicionar as permissões necessárias.

Correções possíveis: A solução mais fácil é editar a declaração de política para sua função de serviço, conforme detalhado emAdicionar permissões à função de serviço CodePipeline.

Após aplicar a política editada, siga as etapas emIniciar um pipeline manualmentepara executar manualmente novamente todos os pipelines que usam o Elastic Beanstalk.

Dependendo das necessidades de segurança, também é possível modificar as permissões de outras maneiras.

Erro de implantação: Um pipeline configurado com umAWS Elastic BeanstalkImplantar trava de ação em vez de falhar, quando a permissão “DescribeEvents” está ausente

Problema: A função de serviço para o CodePipeline deve incluir o"elasticbeanstalk:DescribeEvents"ação para quaisquer pipelines que usamAWS Elastic Beanstalk. Sem essa permissão, o AWS Elastic Beanstalk implanta ações que ocorrem sem falha nem indicação de erro. Se essa ação não aparecer na sua função de serviço, o CodePipeline não terá permissões para executar a fase de implantação de pipeline noAWS Elastic BeanstalkEm seu nome.

Correções possíveis: Reveja sua função de serviço CodePipeline Se a ação "elasticbeanstalk:DescribeEvents" estiver ausente, use as etapas em Adicionar permissões à função de serviço CodePipeline para adicioná-la usando o recurso Editar política no console do IAM.

Após aplicar a política editada, siga as etapas emIniciar um pipeline manualmentepara executar manualmente novamente todos os pipelines que usam o Elastic Beanstalk.

Erro de pipeline: Uma ação de origem resulta na mensagem de permissões insuficientes: “Não foi possível acessar o repositório CodeCommitrepository-name. Verifique se a função do IAM do pipeline tem permissões suficientes para acessar o repositório"

Problema: A função de serviço do CodePipeline não tem permissões suficientes para CodeCommit e provavelmente foi criada antes de o suporte para o uso dos repositórios CodeCommit ter sido adicionado em 18 de abril de 2016. Os clientes que criaram a função de serviço antes dessa data devem modificar a declaração de política da função de serviço para adicionar as permissões necessárias.

Correções possíveis: Adicione as permissões necessárias para CodeCommit à política da função de serviço CodePipeline do. Para obter mais informações, consulte Adicionar permissões à função de serviço CodePipeline.

Erro de pipeline: Uma ação de build ou de teste do Jenkins é executada por muito tempo e, em seguida, falha devido a falta de credenciais ou de permissões

Problema: Se o servidor Jenkins estiver instalado em uma instância do Amazon EC2, talvez ela não tenha sido criada com uma função de instância que tenha as permissões necessárias para o CodePipeline. Se você estiver usando um usuário do IAM em um servidor Jenkins, em uma instância no local ou em uma instância do Amazon EC2 criados sem a função do IAM do não tem as permissões necessárias ou o servidor Jenkins não consegue acessar essas credenciais por meio do perfil configurado no servidor.

Correções possíveis: Certifique-se de que a função da instância do Amazon EC2 ou o usuário do IAM esteja configurado com oAWSCodePipelineCustomActionAccessou com as permissões equivalentes. Para obter mais informações, consulte AWSPolíticas gerenciadas (predefinidas) pelo CodePipeline.

Se você estiver usando um usuário do IAM, verifique se oAWSO perfil do configurado na instância usa o usuário do IAM configurado com as permissões corretas. Pode ser necessário fornecer as credenciais de usuário do IAM configuradas para a integração entre o Jenkins e o CodePipeline diretamente na UI do Jenkins. Essa não é uma melhor prática recomendada. Se precisar fazer isso, verifique se o servidor Jenkins é seguro a usa HTTPS em vez de HTTP.

Erro de pipeline: Um pipeline criado em umAWSRegião usando um bucket criado em outroAWSRegião retorna um “InternalError” com o código “JobFailed”

Problema: O download de um artefato armazenado em um bucket do Amazon S3 do falhará se o pipeline e o bucket forem criados em diferentesAWSRegiões.

Correções possíveis: Verifique se o bucket do Amazon S3 onde o artefato está armazenado está no mesmoAWSRegião como o pipeline que você criou.

Erro de implantação: Um arquivo ZIP que contém um arquivo WAR é implantado com êxito noAWS Elastic Beanstalk, mas o URL do aplicativo informa um erro “404 Not Found”

Problema: Um arquivo WAR é implantado com êxito em umAWS Elastic Beanstalk, mas o URL do aplicativo resulta em um erro “404 Not Found”.

Correções possíveis: o AWS Elastic Beanstalk pode descompactar um arquivo ZIP, mas não um arquivo WAR que se encontra nesse arquivo. Em vez de especificar um arquivo WAR no arquivo buildspec.yml, especifique uma pasta que contém o conteúdo a ser implantado. Por exemplo:

version: 0.2 phases: post_build: commands: - mvn package - mv target/my-web-app ./ artifacts: files: - my-web-app/**/* discard-paths: yes

Para ver um exemplo, consulteAWS Elastic BeanstalkExemplo para CodeBuild.

Os nomes de pasta de artefatos do pipeline parecem estar truncados

Problema: Quando você visualiza nomes de artefatos de pipeline no CodePipeline, os nomes parecem estar truncados. Isso pode fazer com que os nomes pareçam ser semelhantes ou não conter todo o nome do pipeline.

Explicação: O CodePipeline trunca nomes de artefatos para garantir que o caminho completo do Amazon S3 não exceda os limites de tamanho da política quando o CodePipeline gera credenciais temporárias para operadores de trabalho.

Embora o nome do artefato pareça estar truncado, o CodePipeline mapeia para o bucket de artefato de modo que não seja afetado por artefatos com nomes truncados. O pipeline pode funcionar normalmente. Isso não é um problema com a pasta ou os artefatos. Há um limite de 100 caracteres para nomes de pipelines. Embora o nome da pasta do artefato possa parecer reduzido, ele ainda é exclusivo para o pipeline.

Adicione permissões do GitClone do CodeBuild para conexões com o Bitbucket, GitHub ou GitHub Enterprise Server

Quando você usa uma conexão do AWS CodeStar em uma ação de origem e uma ação CodeBuild, há duas maneiras pelas quais o artefato de entrada pode ser passado para a compilação:

  • O padrão: A ação de origem produz um arquivo zip que contém o código que o obtém por download pelo CodeBuild.

  • Clone Git: O código-fonte pode ser obtido por download diretamente para o ambiente de compilação.

    O modo de clone do Git permite que você interaja com o código-fonte como um repositório Git em funcionamento. Para utilizar este modo, você deve conceder permissões de ambiente CodeBuild para utilizar a conexão.

Para adicionar permissões à política de função de serviço CodeBuild, crie uma política gerenciada pelo cliente anexada à sua função de serviço CodeBuild. As etapas a seguir criam uma política em que a permissão UseConnection é especificada no campo action e o ARN de conexão é especificado no campo Resource.

Para usar o console para adicionar as permissões do UseConnection

  1. Para localizar o ARN de conexão para o pipeline, abra o pipeline e clique no ícone (i) na ação de origem. Você adiciona o ARN de conexão à política de função de serviço CodeBuild.

    Para este exemplo, o ARN de conexão é:

    arn:aws:codestar-connections:eu-central-1:123456789123:connection/sample-1908-4932-9ecc-2ddacee15095
  2. Para localizar sua função de serviço CodeBuild, abra o projeto de compilação usado no pipeline e navegue até aDetalhes da compilaçãoGuia.

  3. Escolha o link Service role (Função de serviço) . Isso abre o console do IAM, onde você pode adicionar uma nova política que concede acesso à sua conexão.

  4. No console do IAM, escolha Attach policies (Anexar políticas) e selecione Create policy (Criar política).

    Use o seguinte exemplo de modelo de política. Adicione seu ARN de conexão no campo Resource, conforme mostrado neste exemplo:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "codestar-connections:UseConnection", "Resource": "insert connection ARN here" } ] }

    Na guia JSON, cole sua política.

  5. Escolha Review policy (Revisar política). Insira um nome para a política (por exemplo, connection-permissions) e escolha Create policy (Criar política).

  6. Retorne à página onde você estava anexando permissões, atualize a lista de políticas e selecione a política que acabou de criar. Escolha Attach policies (Anexar políticas).

Adicionar permissões do CodeBuild GitClone para ações de CodeCommit fonte Code

Quando seu pipeline tem uma ação de origem CodeCommit, há duas maneiras pelas quais você pode passar o artefato de entrada para a compilação:

  • Padrão— a ação de origem produz um arquivo zip que contém o código que o obtém por download pelo CodeBuild.

  • Clone completo— O código-fonte pode ser obtido por download diretamente para o ambiente de compilação.

    OClone completoPermite que você interaja com o código-fonte como um repositório Git em funcionamento. Para utilizar este modo, você deve adicionar permissões para que seu ambiente CodeBuild obtenha por download do repositório.

Para adicionar permissões à política de função de serviço CodeBuild, crie uma política gerenciada pelo cliente anexada à sua função de serviço CodeBuild. As etapas a seguir criam uma diretiva que especifica ocodecommit:GitPullpermissão noactioncampo.

Para usar o console para adicionar as permissões do GitPull

  1. Para localizar sua função de serviço CodeBuild, abra o projeto de compilação usado no pipeline e navegue até aDetalhes da compilaçãoGuia.

  2. Escolha o link Service role (Função de serviço) . Isso abre o console do IAM, onde você pode adicionar uma nova política que concede acesso ao seu repositório.

  3. No console do IAM, escolha Attach policies (Anexar políticas) e selecione Create policy (Criar política).

  4. NoJSON, cole a seguinte política de exemplo.

    { "Action": [ "codecommit:GitPull" ], "Resource": "*", "Effect": "Allow" },
  5. Escolha Review policy (Revisar política). Insira um nome para a política (por exemplo, codecommit-gitpull) e escolha Create policy (Criar política).

  6. Retorne à página onde você estava anexando permissões, atualize a lista de políticas e selecione a política que acabou de criar. Escolha Attach policies (Anexar políticas).

Erro de pipeline: Uma implantação com a ação CodeDeployToECS retorna uma mensagem de erro: Exception while using to read the task definition artifact file from: <source artifact name> "(Exceção ao tentar ler o arquivo

Problema:

O tamanho máximo do ZIP do artefato na ação de implantação do CodePipeline no ECS por meio do CodeDeploy (a ação CodeDeployToECS) é de 3 MB. A seguinte mensagem de erro é retornada quando o tamanho de um artefato excede 3 MB:

Exception while trying to read the task definition artifact file from: <source artifact name> (Exceção ao tentar ler o arquivo de artefato de definição de tarefa de: <nome do artefato de origem>)

Correções possíveis: Crie um artefato com um tamanho compactado menor que 3 MB.

Ação de origem do GitHub versão 1: Lista de repositórios mostra diferentes repositórios

Problema:

Após uma autorização bem-sucedida para uma ação do GitHub versão 1 no console do CodePipeline, você pode escolher em uma lista de repositórios do GitHub. Se a lista não incluir os repositórios que você esperava ver, você poderá solucionar problemas da conta usada para autorização.

Correções possíveis: A lista de repositórios fornecida no console do CodePipeline é baseada na organização do GitHub à qual a conta autorizada pertence. Verifique se a conta que você está usando para autorizar com o GitHub é a conta associada à organização do GitHub onde seu repositório foi criado.

Ação de origem do GitHub versão 2: Não foi possível concluir a conexão de um repositório do

Problema:

Como uma conexão com um repositório do GitHub usa oAWSConector para GitHub, você precisa de permissões de proprietário da organização ou permissões de administrador para o repositório para criar a conexão.

Correções possíveis: Para obter informações sobre níveis de permissão para um repositório GitHub, consultehttps://docs.github.com/en/free-pro-team@latest/github/setting-up-and-managing-organizations-and-teams/permission-levels-for-an-organization.

Erro do Amazon S3: CodePipeline <ARN> está obtendo acesso ao S3 negado para o bucket S3 <BucketName>

Problema:

Enquanto estiver em andamento, a ação CodeCommit no CodePipeline verifica se o bucket de artefato de pipeline existe. Se a ação não tiver permissão para verificar, umAccessDeniedocorre no Amazon S3 e a seguinte mensagem de erro é exibida no CodePipeline:

CodePipeline “arn:aws:iam።AccountID:função/função de serviço/RoleId“está obtendo acesso ao S3 negado para o bucket S3”BucketName"

Os logs do CloudTrail para a ação também registram oAccessDeniedERROR.

Correções possíveis: Faça o seguinte:

  • Para a política anexada à função de serviço CodePipeline, adiciones3:ListBucketPara a lista de ações em sua política. Para obter instruções sobre como exibir sua política de função de serviço, consulteVisualizar o ARN do pipeline e o ARN da função de serviço (console). Edite a declaração de política para sua função de serviço conforme detalhado emAdicionar permissões à função de serviço CodePipeline.

  • Para a política baseada em recursos anexada ao bucket de artefatos do Amazon S3 para seu pipeline, também chamada depolítica de bucket de artefato, adicione uma instrução para permitir que os3:ListBucketa ser usada pela função de serviço do CodePipeline.

    Para adicionar sua política ao bucket de artefatos

    1. Siga as etapas emVisualizar o ARN do pipeline e o ARN da função de serviço (console)para escolher seu bucket de artefato no pipelineConfiguraçõese, em seguida, visualize-a no console do Amazon S3.

    2. Escolha Permissions (Permissões).

    3. Em Bucket policy (Política de bucket), escolha Edit (Editar).

    4. NoPolíticaInsira uma nova política de bucket ou edite a política existente, conforme mostrado no exemplo a seguir. A política de bucket é um arquivo JSON, portanto, você deve informar JSON válido.

      O exemplo a seguir mostra uma instrução de política de bucket para um bucket de artefato em que o ID de função de exemplo para a função de serviço éAROAEXAMPLEID.

      { "Effect": "Allow", "Principal": "*", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::BucketName", "Condition": { "StringLike": { "aws:userid": "AROAEXAMPLEID:*" } } }

      O exemplo a seguir mostra a mesma declaração de política de bucket após a adição da permissão.

      { "Version": "2012-10-17", "Id": "SSEAndSSLPolicy", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890", "Condition": { "StringLike": { "aws:userid": "AROAEXAMPLEID:*" } } }, { "Sid": "DenyUnEncryptedObjectUploads", "Effect": "Deny", "Principal": "*", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890/*", "Condition": { "StringNotEquals": { "s3:x-amz-server-side-encryption": "aws:kms" } } }, { "Sid": "DenyInsecureConnections", "Effect": "Deny", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::codepipeline-us-east-2-1234567890/*", "Condition": { "Bool": { "aws:SecureTransport": false } } } ] }

      Para obter mais informações, consulte as etapas em http://aws.amazon.com/blogs/security/writing-iam-policies-how-to-grant-access-to-an-amazon-s3-bucket/.

    5. Escolha Save (Salvar).

Após aplicar a política editada, siga as etapas emIniciar um pipeline manualmentepara executar manualmente novamente o pipeline.

Pipelines com umAmazon S3, o Amazon ECR ou a fonte do CodeCommit não são mais iniciados automaticamente

Problema:

Depois de fazer uma alteração nas configurações de uma ação que usa regras de evento (EventBridge ou CloudWatch Events) para detecção de alterações, o console pode não detectar uma alteração em que os identificadores de gatilho de origem sejam semelhantes e tenham caracteres iniciais idênticos. Como a nova regra de evento não é criada pelo console, o pipeline não é mais iniciado automaticamente.

Um exemplo de uma alteração menor no final do nome do parâmetro para CodeCommit seria alterar o nome da ramificação CodeCommitMyTestBranch-1paraMyTestBranch-2. Como a alteração está no final do nome da ramificação, a regra de evento para a ação de origem pode não atualizar ou criar uma regra para as novas configurações de origem.

Isso se aplica às ações de origem que usam eventos CWE para detecção de alterações da seguinte maneira:

Ação de origem Parâmetros/identificadores de gatilho (console)
Amazon ECR

Nome do repositório

Tag de imagem

Amazon S3

Bucket

S3 object key

CodeCommit

Nome do repositório

Nome da ramificação

Correções possíveis:

DOUma dasOs seguintes exemplos de:

  • Altere as configurações de CodeCommit/S3/ECR para que as alterações sejam feitas na parte inicial do valor do parâmetro.

    Exemplo: Alterar o nome da sua filialrelease-branchpara2nd-release-branch. Evite uma alteração no fim do nome, comorelease-branch-2.

  • Altere as definições de configuração CodeCommit/S3/ECR para cada pipeline.

    Exemplo: Alterar o nome da sua filialmyRepo/myBranchparamyDeployRepo/myDeployBranch. Evite uma alteração no fim do nome, comomyRepo/myBranch2.

  • Em vez do console, use a CLI ouAWS CloudFormationpara criar e atualizar suas regras de evento de detecção de alterações. Para obter instruções sobre como criar regras de evento para uma ação de origem do S3, consulteAções de origem do Amazon S3 e CloudWatch Events. Para obter instruções sobre como criar regras de evento para uma ação do Amazon ECR, consulte Ações de origem do Amazon ECR e CloudWatch Events. Para obter instruções sobre como criar regras de evento para uma ação CodeCommit, consulte Ações de origem do CodeCommit e CloudWatch Events.

Depois de vocêeditar sua configuração de ação no console,aceitar os recursos atualizados de detecção de alterações criados pelo console.

Precisa de ajuda com outro problema?

Veja estes outros recursos: