Solução de problemas do CodePipeline - AWS CodePipeline
Erro de pipeline: Um pipeline configurado comAWS Elastic Beanstalkretorna uma mensagem de erro: “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 BeanstalkA ação de implantação do trava 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 CodeCommit repositóriorepository-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 compilação ou de teste do Jenkins é executada por muito tempo e falha devido a falta de credenciais ou permissõesErro de pipeline: Um pipeline criado em umAWSRegião usando um bucket criado em outroAWSRegion 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 BeanstalkMas o URL do aplicativo informam um erro “404 Not Found”Os nomes de pasta de artefatos do pipeline parecem estar truncadosAdicionar CodeBuild Permissões do GitClone para conexões com Bitbucket, GitHub ou GitHub Servidor corporativoAdicionar CodeBuild Permissões do GitClone para ações de origem do CodeCommitErro de pipeline: Uma implantação com a ação CodeDeployToECS retorna uma mensagem de erro: “Exceção ao tentar ler o arquivo de artefato de definição de tarefa de:<source artifact name>”Ação de origem do GitHub versão 1: A lista de repositórios mostra repositórios diferentesAção de origem do GitHub versão 2: Não é possível concluir a conexão de um repositórioErro do Amazon S3: CodePipeline função de serviço <ARN>está obtendo acesso ao S3 negado para o bucket do S3 <BucketName>Pipelines com uma fonte do Amazon S3, Amazon ECR ou 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á.

Solução de problemas do CodePipeline

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: “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 atualizado 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 do CodePipeline.

Após aplicar a política editada, siga as etapas emIniciar um pipeline manualmentepara executar manualmente 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 BeanstalkA ação de implantação do trava em vez de falhar, quando a permissão “DescribeEvents” está ausente

Problema: A função de serviço do 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 do, CodePipeline O não tem permissões para executar o estágio de implantação de pipeline noAWS Elastic BeanstalkEm seu nome.

Correções possíveis: Analisar o CodePipeline Função de serviço. Se a ação "elasticbeanstalk:DescribeEvents" estiver ausente, use as etapas em Adicionar permissões à função de serviço do 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 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 CodeCommit repositóriorepository-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 criado antes que o suporte para o uso dos repositórios do CodeCommit fosse 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 Para o CodePipeline política da função de serviço. Para obter mais informações, consulte Adicionar permissões à função de serviço do CodePipeline.

Erro de pipeline: Uma ação de compilação ou de teste do Jenkins é executada por muito tempo e falha devido a falta de credenciais ou 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 criada sem a função do IAM do necessária, o usuário do IAM não tem as permissões necessárias ou que 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 de instância do Amazon EC2 ou o usuário do IAM esteja configurado com oAWSCodePipelineCustomActionAccesspolítica gerenciada ou com as permissões equivalentes. Para obter mais informações, consulte AWSPolíticas gerenciadas pela para o CodePipeline.

Se você estiver usando um usuário do IAM, certifique-se deAWSO perfil configurado na instância usa o usuário do IAM configurado com as permissões corretas. Talvez você precise fornecer as credenciais de usuário do IAM que você configurou para a integração entre Jenkins e CodePipeline Diretamente para a interface de usuário 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 outroAWSRegion retorna um “InternalError” com o código “JobFailed”

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

Correções possíveis: Verifique se o bucket do Amazon S3 onde seu 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 BeanstalkMas o URL do aplicativo informam um erro “404 Not Found”

Problema: Um arquivo WAR é implantado com sucesso em umAWS Elastic BeanstalkAmbiente, 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 o 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: CodePipeline Trinca nomes de artefatos para garantir que o caminho completo do Amazon S3 não exceda os limites de tamanho da política quando CodePipeline gera credenciais temporárias para trabalhadores de trabalho.

Mesmo que o nome do artefato pareça estar truncado, CodePipeline O mapeia para o bucket de artefatos de maneira que não seja afetada 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.

Adicionar CodeBuild Permissões do GitClone para conexões com Bitbucket, GitHub ou GitHub Servidor corporativo

Quando você usa uma AWS CodeStar conexão em uma ação de origem e um CodeBuild ação, 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 CodeBuild obtém por download.

  • Clonar Git: O código-fonte pode ser obtido por download diretamente no 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 seu CodeBuild permissões de ambiente para utilizar a conexão.

Para adicionar permissões ao CodeBuild Política de função de serviço do, crie uma política gerenciada pelo cliente anexada à sua CodeBuild Função de serviço. 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 utilizar o console para adicionar o UseConnection permissões

  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 da conexão ao CodeBuild Política de função de serviço.

    Um exemplo de ARN de conexão é:

    arn:aws:codestar-connections:eu-central-1:123456789123:connection/sample-1908-4932-9ecc-2ddacee15095
  2. Para encontrar o CodeBuild Função de serviço, 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 CodeBuild Permissões do GitClone para ações de origem do CodeCommit

Quando seu pipeline tem um CodeCommit ação de origem, 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 CodeBuild downloads.

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

    OClonar completoA opção permite que você interaja com o código-fonte como um repositório Git em funcionamento. Para utilizar esse modo, adicione permissões ao ambiente do CodeBuild para extrair do repositório do.

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

Para utilizar o console para adicionar o GitPull permissões

  1. Para encontrar o CodeBuild Função de serviço, 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 repositório do.

  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: “Exceção ao tentar ler o arquivo de artefato de definição de tarefa de:<source artifact name>”

Problema:

O arquivo de definição de tarefa é um artefato necessário para o CodePipeline implantar ação para o Amazon ECS por meio de CodeDeploy (oCodeDeployToECSação). O tamanho máximo de ZIP do artefato naCodeDeployToECSa ação de implantação é de 3 MB. A seguinte mensagem de erro é retornada quando o arquivo não é encontrado ou que o tamanho do 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: Certifique-se de que o arquivo de definição de tarefa esteja incluído como um artefato. Se o arquivo já existir, certifique-se de que o tamanho compactado seja menor que 3 MB.

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

Problema:

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

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

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

Problema:

Porque uma conexão com um GitHub O repositório usa oAWSConector do 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 os níveis de permissão para um GitHub repositório, 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 função de serviço <ARN>está obtendo acesso ao S3 negado para o bucket do S3 <BucketName>

Problema:

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

Função de serviço do CodePipeline “arn:aws:iam።AccountID:role/serviço-role/RoleId“está recebendo acesso ao S3 negado para o bucket do S3”BucketName"

O CloudTrail logs para a ação também registram oAccessDenied(Nenhum console do Windows encontrado. Você está executando o cmd.exe?”.

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

  • Para a política anexada à sua CodePipeline função de serviço, adicionars3:ListBucketPara a lista de ações em sua política. Para obter instruções sobre como visualizar sua política de função de serviço, consulteVisualizar o ARN do pipeline e a função de serviço ARN (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 do 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 artefatos, adicione uma instrução para permitir os3:ListBucketpermissão para ser usada pelo seu CodePipeline Função de serviço.

    Para adicionar sua política ao intervalo de artefatos

    1. Siga as etapas emVisualizar o ARN do pipeline e a função de serviço ARN (console)para escolher seu bucket de artefatos no pipelineConfiguraçõesEm 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íticaCampo de texto, insira 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 inserir JSON válido.

      O exemplo a seguir mostra uma instrução de política de bucket para um intervalo de artefatos 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 instrução de política de bucket após a permissão ser adicionada.

      { "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 o pipeline novamente.

Pipelines com uma fonte do Amazon S3, Amazon ECR ou 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 Eventos) para detecção de alterações, o console pode não detectar uma alteração em que os identificadores de gatilho de origem são 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 pequena alteração no final do nome do parâmetro para CodeCommit Estaria mudando o CodeCommit Nome do ramiMyTestBranch-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 a ações de origem que usam eventos CWE para detecção de alterações da seguinte forma:

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

Nome do repositório

Tag da imagem

Amazon S3

Bucket

Chave de objeto S3

CodeCommit

Nome do repositório

Nome do ramo

Correções possíveis:

Execute um destes procedimentos:

  • 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 filialrelease-branchpara2nd-release-branch. Evite uma alteração no fim do nome, comorelease-branch-2.

  • Altere as configurações do CodeCommit/S3/ECR para cada pipeline.

    Exemplo: Alterar o nome da 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 Eventos. 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 Eventos. Para obter instruções sobre como criar regras de eventos para um CodeCommit ação, consulte CodeCommit Ações de origem e CloudWatch Eventos.

Depois de editar a configuração de ação no console, aceite os recursos atualizados de detecção de alteração criados pelo console.

Precisa de ajuda com outro problema?

Veja estes outros recursos: