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á.
Para atualizar um pipeline de sondagem para usar a detecção de alterações baseada em eventos, consulte .
O AWS CodePipeline oferece suporte completo à entrega contínua, o qual inclui o início do pipeline sempre que houver uma alteração no código. Há duas maneiras de iniciar o pipeline após uma alteração no código: Recomendamos usar a detecção de alterações baseada em eventos para pipelines.
Use os procedimentos incluídos aqui para migrar (atualizar) seus pipelines de enquete para o método de detecção de alterações baseado em eventos do seu pipeline.
O método recomendado de detecção de alterações baseado em eventos para pipelines é determinado pela fonte do pipeline, como o CodeCommit. Nesse caso, por exemplo, o pipeline de pesquisa precisaria migrar para a detecção de alterações baseada em eventos com o EventBridge.
Como migrar os pipelines de votação
Para migrar os pipelines de sondagem, determine seus pipelines de sondagem e, em seguida, determine o método recomendado de detecção de alterações baseado em eventos:
-
Use as etapas Visualizar os pipelines de votação em sua conta para determinar seus canais de votação.
-
Na tabela, encontre o tipo de origem do pipeline e escolha o procedimento com a implementação que você deseja usar para migrar o pipeline de sondagem. Cada seção contém vários métodos de migração, como o uso da CLI ou. AWS CloudFormation
Como migrar pipelines para o método de detecção de alterações recomendado | ||
---|---|---|
Fonte do pipeline | Método recomendado de detecção baseado em eventos | Procedimentos de migração |
AWS CodeCommit | EventBridge (recomendado). | Consulte Migre pipelines de pesquisa com uma fonte do CodeCommit. |
Amazon S3 | EventBridge e bucket habilitados para notificações de eventos (recomendado). | Consulte Migre pipelines de votação com uma fonte S3 habilitada para eventos. |
Amazon S3 | EventBridge e uma AWS CloudTrail trilha. | Consulte Migre pipelines de votação com uma fonte do S3 e uma trilha do CloudTrail. |
GitHub versão 1 | Conexões (recomendadas) | Consulte Migre os pipelines de enquete de uma ação de origem do GitHub versão 1 para conexões. |
GitHub versão 1 | Webhooks | Consulte Migre os pipelines de enquete de uma ação de origem do GitHub versão 1 para webhooks. |
Importante
Para atualizações de configuração de ações de pipeline aplicáveis, como pipelines com uma ação do GitHub versão 1, você deve definir explicitamente PollForSourceChanges
o parâmetro como false na configuração da sua ação Source para interromper a pesquisa de um pipeline. Como resultado, é possível configurar um pipeline de forma errada com detecção de alterações com base em eventos e sondagem, por exemplo, configurando uma regra do e também omitindo o parâmetro . Isso resulta em execuções de pipeline duplicadas, e o pipeline é contabilizado em relação ao limite no número total de pipelines de sondagem, que, por padrão é muito inferior aos pipelines com base em eventos. Para obter mais informações, consulte Cotas no AWS CodePipeline.
Visualizar os pipelines de votação em sua conta
Como primeira etapa, use um dos scripts a seguir para determinar quais pipelines em sua conta estão configurados para votação. Esses são os canais para migrar para a detecção de alterações baseada em eventos.
Visualizar pipelines de votação em sua conta (script)
Siga estas etapas para usar um script para determinar os pipelines em sua conta que estão usando enquetes.
-
Abra o Mail e execute uma das seguintes ações:
-
Execute o comando a seguir para criar um novo script chamado PollingPipelinesExtractor.sh.
vi PollingPipelinesExtractor.sh
-
Para usar um script python, execute o comando a seguir para criar um novo script python chamado PollingPipelinesExtractor.py.
vi PollingPipelinesExtractor.py
-
-
Copie o código a seguir no script PollingPipelinesExtractor. Faça um dos seguintes procedimentos:
-
Copie o código a seguir no script PollingPipelinesExtractor.sh.
#!/bin/bash set +x POLLING_PIPELINES=() LAST_EXECUTED_DATES=() NEXT_TOKEN=null HAS_NEXT_TOKEN=true if [[ $# -eq 0 ]] ; then echo 'Please provide region name' exit 0 fi REGION=$1 while [ "$HAS_NEXT_TOKEN" != "false" ]; do if [ "$NEXT_TOKEN" != "null" ]; then LIST_PIPELINES_RESPONSE=$(aws codepipeline list-pipelines --region $REGION --next-token $NEXT_TOKEN) else LIST_PIPELINES_RESPONSE=$(aws codepipeline list-pipelines --region $REGION) fi LIST_PIPELINES=$(jq -r '.pipelines[].name' <<< "$LIST_PIPELINES_RESPONSE") NEXT_TOKEN=$(jq -r '.nextToken' <<< "$LIST_PIPELINES_RESPONSE") if [ "$NEXT_TOKEN" == "null" ]; then HAS_NEXT_TOKEN=false fi for pipline_name in $LIST_PIPELINES do PIPELINE=$(aws codepipeline get-pipeline --name $pipline_name --region $REGION) HAS_POLLABLE_ACTIONS=$(jq '.pipeline.stages[].actions[] | select(.actionTypeId.category == "Source") | select(.actionTypeId.owner == ("ThirdParty","AWS")) | select(.actionTypeId.provider == ("GitHub","S3","CodeCommit")) | select(.configuration.PollForSourceChanges == ("true",null))' <<< "$PIPELINE") if [ ! -z "$HAS_POLLABLE_ACTIONS" ]; then POLLING_PIPELINES+=("$pipline_name") PIPELINE_EXECUTIONS=$(aws codepipeline list-pipeline-executions --pipeline-name $pipline_name --region $REGION) LAST_EXECUTION=$(jq -r '.pipelineExecutionSummaries[0]' <<< "$PIPELINE_EXECUTIONS") if [ "$LAST_EXECUTION" != "null" ]; then LAST_EXECUTED_TIMESTAMP=$(jq -r '.startTime' <<< "$LAST_EXECUTION") LAST_EXECUTED_DATE="$(date -r ${LAST_EXECUTED_TIMESTAMP%.*})" else LAST_EXECUTED_DATE="Not executed in last year" fi LAST_EXECUTED_DATES+=("$LAST_EXECUTED_DATE") fi done done fileName=$REGION-$(date +%s) printf "| %-30s | %-30s |\n" "Polling Pipeline Name" "Last Executed Time" printf "| %-30s | %-30s |\n" "_____________________" "__________________" for i in "${!POLLING_PIPELINES[@]}"; do printf "| %-30s | %-30s |\n" "${POLLING_PIPELINES[i]}" "${LAST_EXECUTED_DATES[i]}" printf "${POLLING_PIPELINES[i]}," >> $fileName.csv done printf "\nSaving Polling Pipeline Names to file $fileName.csv."
-
Copie o código a seguir no script PollingPipelinesExtractor.py.
import boto3 import sys import time import math hasNextToken = True nextToken = "" pollablePipelines = [] lastExecutedTimes = [] if len(sys.argv) == 1: raise Exception("Please provide region name.") session = boto3.Session(profile_name='default', region_name=sys.argv[1]) codepipeline = session.client('codepipeline') def is_pollable_action(action): actionTypeId = action['actionTypeId'] configuration = action['configuration'] return actionTypeId['owner'] in {"AWS", "ThirdParty"} and actionTypeId['provider'] in {"GitHub", "CodeCommit", "S3"} and ('PollForSourceChanges' not in configuration or configuration['PollForSourceChanges'] == 'true') def has_pollable_actions(pipeline): hasPollableAction = False pipelineDefinition = codepipeline.get_pipeline(name=pipeline['name'])['pipeline'] for action in pipelineDefinition['stages'][0]['actions']: hasPollableAction = is_pollable_action(action) if hasPollableAction: break return hasPollableAction def get_last_executed_time(pipelineName): pipelineExecutions=codepipeline.list_pipeline_executions(pipelineName=pipelineName)['pipelineExecutionSummaries'] if pipelineExecutions: return pipelineExecutions[0]['startTime'].strftime("%A %m/%d/%Y, %H:%M:%S") else: return "Not executed in last year" while hasNextToken: if nextToken=="": list_pipelines_response = codepipeline.list_pipelines() else: list_pipelines_response = codepipeline.list_pipelines(nextToken=nextToken) if 'nextToken' in list_pipelines_response: nextToken = list_pipelines_response['nextToken'] else: hasNextToken= False for pipeline in list_pipelines_response['pipelines']: if has_pollable_actions(pipeline): pollablePipelines.append(pipeline['name']) lastExecutedTimes.append(get_last_executed_time(pipeline['name'])) fileName="{region}-{timeNow}.csv".format(region=sys.argv[1],timeNow=math.trunc(time.time())) file = open(fileName, 'w') print ("{:<30} {:<30} {:<30}".format('Polling Pipeline Name', '|','Last Executed Time')) print ("{:<30} {:<30} {:<30}".format('_____________________', '|','__________________')) for i in range(len(pollablePipelines)): print("{:<30} {:<30} {:<30}".format(pollablePipelines[i], '|', lastExecutedTimes[i])) file.write("{pipeline},".format(pipeline=pollablePipelines[i])) file.close() print("\nSaving Polling Pipeline Names to file {fileName}".format(fileName=fileName))
-
-
Para cada região em que você tem pipelines, você deve executar o script para essa região. Para executar o script, faça o seguinte:
-
Execute o comando a seguir para executar o script chamado PollingPipelinesExtractor.sh. Neste exemplo, a região é definida como us-west-2.
./PollingPipelinesExtractor.sh us-west-2
-
Para o script python, execute o comando a seguir para executar o script python chamado PollingPipelinesExtractor.py. Neste exemplo, a região é definida como us-west-2.
python3 PollingPipelinesExtractor.py us-west-2
No exemplo de saída do script a seguir, a Região us-west-2 retornou uma lista de pipelines de sondagem e mostra o horário da última execução de cada pipeline.
% ./pollingPipelineExtractor.sh us-west-2 | Polling Pipeline Name | Last Executed Time | | _____________________ | __________________ | | myCodeBuildPipeline | Wed Mar 8 09:35:49 PST 2023 | | myCodeCommitPipeline | Mon Apr 24 22:32:32 PDT 2023 | | TestPipeline | Not executed in last year | Saving list of polling pipeline names to us-west-2-1682496174.csv...%
Analise a saída do script e, para cada pipeline na lista, atualize a fonte de pesquisa para o método recomendado de detecção de alterações baseado em eventos.
nota
Seus pipelines de pesquisa são determinados pela configuração de ação do pipeline para o
PollForSourceChanges
parâmetro. Se a configuração da fonte do pipeline tiver oPollForSourceChanges
parâmetro omitido, o CodePipeline usará como padrão pesquisar alterações na fonte em seu repositório. Esse comportamento será o mesmo quando o estiver incluído e definido como . Para obter mais informações, consulte os parâmetros de configuração da ação de origem do seu pipeline, como os parâmetros de configuração da ação de origem do Amazon S3 em. Ação de origem do Amazon S3Observe que esse script também gera um arquivo.csv contendo a lista de canais de pesquisa em sua conta e salva o arquivo.csv na pasta de trabalho atual.
-
Migre pipelines de pesquisa com uma fonte do CodeCommit
Você pode migrar seu pipeline de votação para usar o EventBridge para detectar alterações no seu repositório de origem do CodeCommit ou no seu bucket de origem do Amazon S3.
CodeCommit -- Para um pipeline com uma fonte do CodeCommit, modifique o pipeline para que a detecção de alterações seja automatizada por meio do EventBridge. Escolha um dos seguintes métodos para implementar a migração:
Migrar canais de votação (fonte do CodeCommit ou Amazon S3) (console)
Você pode usar o console do para atualizar seu pipeline para usar o para detectar alterações em seu repositório de origem do ou em seu bucket de origem do .
nota
Ao usar o console para editar um pipeline que tem um repositório de origem do ou um bucket de origem do , a regra e a função do IAM são criadas para você. Se usar a para editar o pipeline, você mesmo deverá criar a regra do e a função do IAM. Para obter mais informações, consulte CodeCommit ações de origem e EventBridge.
Siga essas etapas para editar um pipeline que conduz verificações periódicas. Se você deseja criar um pipeline, consulte Crie um pipeline em CodePipeline.
Para editar o estágio de origem do pipeline
-
Faça login no console em AWS Management Consolehttp://console.aws.amazon.com/codesuite/codepipeline/home.
Os nomes de todos os pipelines associados à sua conta da AWS são exibidos.
-
Em Nome, selecione o nome do pipeline que você deseja editar. Isso abrirá um visão detalhada do pipeline, incluindo o estado de cada uma das ações em cada estágio do pipeline.
-
Na página de detalhes do pipeline, selecione Editar.
-
Em Edit stage (Editar estágio), selecione o ícone de edição na ação de origem.
-
Expanda Change Detection Options (Opções de detecção de alterações) e selecione Use CloudWatch Events to automatically start my pipeline when a change occurs (recommended) (Usar o CloudWatch Events para iniciar automaticamente o pipeline quando ocorrer uma alteração (recomendado)).
É exibida uma mensagem que mostra a regra do a ser criada para esse pipeline. Escolha Atualizar.
Se estiver atualizando um pipeline que tem uma origem do , você verá a mensagem a seguir. Escolha Atualizar.
-
Quando terminar de editar seu pipeline, selecione Salvar alterações do pipeline para voltar à página de resumo.
Uma mensagem exibe o nome da regra do a ser criada para o pipeline. Escolha Save and continue.
-
Para testar a ação, utilize a AWS CLI para confirmar uma mudança à origem especificada no estágio de origem do pipeline para que seja possível liberar uma alteração.
Migrar pipelines de pesquisa (fonte do CodeCommit) (CLI)
Siga essas etapas para fazer com que um pipeline que conduz sondagem (verificações periódicas) passe a utilizar uma regra do para iniciar o pipeline. Se você deseja criar um pipeline, consulte Crie um pipeline em CodePipeline.
Para criar um pipeline baseado em eventos com o , edite o parâmetro de seu pipeline e crie os seguintes recursos:
-
Eventos EventBridge
-
Função do IAM para permitir que esse evento inicie o pipeline
Editar o parâmetro PollForSourceChanges do pipeline
Importante
Ao criar um pipeline com esse método, o parâmetro PollForSourceChanges
é padronizado como verdadeiro se não for explicitamente definido como falso. Ao adicionar a detecção de alterações baseada em eventos, é necessário adicionar o parâmetro a sua saída e defini-lo como falso para desativar a sondagem. Caso contrário, o pipeline inicia duas vezes para uma única alteração de origem. Para obter mais detalhes, consulte Configurações padrão do parâmetro PollForSourceChanges.
-
Execute o get-pipeline comando para copiar a estrutura do pipeline em um arquivo JSON. Por exemplo, para um pipeline nomeado
MyFirstPipeline
, execute o seguinte comando:aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
Este comando retorna nada, mas o arquivo que você criou deve aparecer no diretório onde você executou o comando.
-
Abra o arquivo JSON em qualquer editor de texto plano e altere o
PollForSourceChanges
parâmetrofalse
para editar o estágio de origem, como mostrado no exemplo a seguir.Por que estou fazendo essa alteração? A alteração deste parâmetro para
false
desativa as verificações periódicas para que você possa utilizar apenas a detecção de alterações baseada em eventos."configuration": {
"PollForSourceChanges": "false",
"BranchName": "main", "RepositoryName": "MyTestRepo" }, -
Se você estiver trabalhando com a estrutura do pipeline recuperada por meio do comando get-pipeline, remova as linhas
metadata
do arquivo JSON. Caso contrário, o comando update-pipeline não é capaz de utilizá-la. Remova as linhas"metadata": { }
,"created"
,"pipelineARN"
e os campos"updated"
.Por exemplo, remova as seguintes linhas da estrutura:
"metadata": { "pipelineArn": "arn:aws:codepipeline:
region
:account-ID
:pipeline-name
", "created": "date
", "updated": "date
" },Salve o arquivo.
-
Para aplicar suas alterações, execute o comando update-pipeline especificando o arquivo JSON do pipeline:
Importante
Não se esqueça de incluir
file://
antes do nome de arquivo. Ele é obrigatório nesse comando.aws codepipeline update-pipeline --cli-input-json file://
pipeline.json
Este comando retorna toda a estrutura do pipeline editado.
nota
O comando update-pipeline interrompe o pipeline. Se uma revisão estiver sendo executada pelo pipeline quando você executar o comando update-pipeline, essa execução será interrompida. Você deve iniciar manualmente o pipeline para executar a revisão através do pipeline atualizado. Use o comando
start-pipeline-execution
para iniciar manualmente o pipeline.
Para criar uma regra do com como origem do evento e como destino
-
Adicionar permissões para o usar o para chamar a regra. Para obter mais informações sobre como usar políticas baseadas em recursos para o , consulte o .
-
Use o exemplo a seguir para criar a política de confiança que permite ao assumir a função de serviço. Nomeie a política de confiança
trustpolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Use o comando a seguir para criar a função
Role-for-MyRule
e anexar a política de confiança.aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
-
Crie o JSON de política de permissões, conforme mostrado neste exemplo, para o pipeline denominado
MyFirstPipeline
. Nomeie a politica de permissõespermissionspolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
-
Use o comando a seguir para anexar a política de permissões
CodePipeline-Permissions-Policy-for-EB
à funçãoRole-for-MyRule
.Por que estou fazendo essa alteração? A adição dessa política à função cria permissões para .
aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
-
-
Use o comando put-rule e inclua os parâmetros
--name
,--event-pattern
e--role-arn
.Por que estou fazendo essa alteração? Esse comando permite que o AWS CloudFormation crie o evento.
O comando de exemplo a seguir cria uma regra chamada
MyCodeCommitRepoRule
.aws events put-rule --name "MyCodeCommitRepoRule" --event-pattern "{\"source\":[\"aws.codecommit\"],\"detail-type\":[\"CodeCommit Repository State Change\"],\"resources\":[\"
repository-ARN
\"],\"detail\":{\"referenceType\":[\"branch\"],\"referenceName\":[\"main
\"]}}" --role-arn "arn:aws:iam::ACCOUNT_ID
:role/Role-for-MyRule" -
Para adicionar o como destino, chame o comando e inclua os seguintes parâmetros:
-
O parâmetro
--rule
é usado comrule_name
criado por meio de put-rule. -
O parâmetro
--targets
é usado com oId
da lista do destino na lista de destinos e oARN
do pipeline de destino.
O exemplo de comando a seguir especifica que, para a regra chamada
MyCodeCommitRepoRule
, oId
do destino é composto do número um, indicando que, em uma lista de destinos para a regra, esse é o destino 1. O exemplo de comando também especifica um exemploARN
para o pipeline. O pipeline é iniciado quando uma alteração é feita no repositório.aws events put-targets --rule MyCodeCommitRepoRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
-
Migrar pipelines de pesquisa (fonte do CodeCommit) (modelo) AWS CloudFormation
Para criar um pipeline baseado em eventos do AWS CodeCommit, edite o parâmetro PollForSourceChanges
de seu pipeline e adicione os seguintes recursos em seu modelo:
-
Regras do EventBridge
-
Uma função do IAM para a regra do CloudWatch Events
Ao utilizar o AWS CloudFormation para criar e gerenciar seus pipelines, o modelo inclui um conteúdo semelhante ao seguinte:
nota
A propriedade Configuration
no estágio de origem denominado PollForSourceChanges
. Se essa propriedade não estiver incluída em seu modelo, PollForSourceChanges
será definido como true
por padrão.
Atualizar o modelo do do pipeline e criar a regra do
-
No modelo, em
Resources
, use o recursoAWS::IAM::Role
do AWS CloudFormation para configurar a função do IAM que habilita o evento a iniciar seu pipeline. Essa entrada cria uma função que utiliza duas políticas:-
A primeira política permite que a função seja assumida.
-
A segunda política fornece permissões para iniciar o pipeline.
Por que estou fazendo essa alteração? A adição do recurso
AWS::IAM::Role
possibilita que o crie permissões para . Esse recurso é adicionado à sua pilha do AWS CloudFormation. -
-
No modelo, em
Resources
, utilize o recursoAWS::Events::Rule
do para adicionar uma regra do . Esse padrão de evento cria um evento que monitora as alterações push no seu repositório. Quando o EventBridge detecta uma alteração no estado do repositório, a regra éStartPipelineExecution
invocada em seu pipeline de destino.Por que estou fazendo essa alteração? A adição do recurso
AWS::Events::Rule
permite que o AWS CloudFormation crie o evento. Esse recurso é adicionado à sua pilha do AWS CloudFormation. -
Salve o modelo atualizado em seu computador local e abra o console do AWS CloudFormation.
-
Selecione sua pilha e clique em Create Change Set for Current Stack (Criar conjunto de alterações para a pilha atual).
-
Carregue o modelo e visualize as alterações listadas no AWS CloudFormation. Essas são as alterações a serem feitas na pilha. Seus novos recursos devem ser exibidos na lista.
-
Escolha Executar.
Editar o parâmetro PollForSourceChanges do pipeline
Importante
Em muitos casos, o parâmetro PollForSourceChanges
é padronizado como verdadeiro ao criar um pipeline. Ao adicionar a detecção de alterações baseada em eventos, é necessário adicionar o parâmetro a sua saída e defini-lo como falso para desativar a sondagem. Caso contrário, o pipeline inicia duas vezes para uma única alteração de origem. Para obter mais detalhes, consulte Configurações padrão do parâmetro PollForSourceChanges.
-
No modelo, altere
PollForSourceChanges
parafalse
. Se você não incluirPollForSourceChanges
na sua definição de pipeline, adicione-o e configure parafalse
.Por que estou fazendo essa alteração? A alteração deste parâmetro para
false
desativa as verificações periódicas para que você possa utilizar apenas a detecção de alterações baseada em eventos.
Ao criar esses recursos com o AWS CloudFormation, o pipeline é acionado quando os arquivos presentes no repositório são criados ou atualizados. Aqui está o trecho do modelo final:
Migre pipelines de votação com uma fonte S3 habilitada para eventos
Para um pipeline com uma fonte do Amazon S3, modifique o pipeline para que a detecção de alterações seja automatizada por meio do EventBridge e com um bucket de origem habilitado para notificações de eventos. Esse é o método recomendado se você estiver usando a CLI ou AWS CloudFormation para migrar seu pipeline.
nota
Isso inclui o uso de um bucket habilitado para notificações de eventos, onde você não precisa criar uma trilha separada do CloudTrail. Se você estiver usando o console, uma regra de evento e uma trilha do CloudTrail estão configuradas para você. Para a etapa líquida, consulte Migre pipelines de votação com uma fonte do S3 e uma trilha do CloudTrail.
Migre pipelines de pesquisa com uma fonte S3 habilitada para eventos (CLI)
Siga essas etapas para fazer com que um pipeline que conduz sondagem (verificações periódicas) passe a utilizar um evento no . Se você deseja criar um pipeline, consulte Crie um pipeline em CodePipeline.
Para criar um pipeline baseado em eventos com o , edite o parâmetro de seu pipeline e crie os seguintes recursos:
-
Regra de evento do EventBridge
-
Função do IAM para permitir que o evento do inicie o pipeline
Para criar uma regra do com o como origem do evento e o como o destino e aplicar as políticas de permissões
-
Conceda ao as permissões necessárias para usar o para invocar a regra. Para obter mais informações sobre como usar políticas baseadas em recursos para o , consulte o .
-
Use o exemplo a seguir para criar a política de confiança que permita ao assumir a função de serviço. Chame-o de
trustpolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Use o comando a seguir para criar a função
Role-for-MyRule
e anexar a política de confiança.Por que estou fazendo essa alteração? A adição dessa política de confiança à função cria permissões para .
aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
-
Crie o JSON da política de permissões, conforme mostrado aqui para o pipeline chamado
MyFirstPipeline
. Nomeie a politica de permissõespermissionspolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
-
Use o comando a seguir para anexar a nova política de permissões
CodePipeline-Permissions-Policy-for-EB
à funçãoRole-for-MyRule
criada.aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
-
-
Use o comando put-rule e inclua os parâmetros
--name
,--event-pattern
e--role-arn
.O exemplo de comando a seguir cria uma regra chamada
EnabledS3SourceRule
.aws events put-rule --name "EnabledS3SourceRule" --event-pattern "{\"source\":[\"aws.s3\"],\"detail-type\":[\"Object Created\"],\"detail\":{\"bucket\":{\"name\":[\"my-bucket\"]}}}" --role-arn "arn:aws:iam::
ACCOUNT_ID
:role/Role-for-MyRule" -
Para adicionar o put-targets como destino, use o comando
--rule
e inclua os parâmetros e .O comando a seguir especifica que, para a regra denominada
EnabledS3SourceRule
, oId
do destino é composto do número um, indicando que, em uma lista de destinos para a regra, esse é o destino 1. O comando também especifica umARN
de exemplo para o pipeline. O pipeline é iniciado quando uma alteração é feita no repositório.aws events put-targets --rule EnabledS3SourceRule --targets Id=codepipeline-AppPipeline,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
Editar o parâmetro PollForSourceChanges do pipeline
Importante
Ao criar um pipeline com esse método, o parâmetro PollForSourceChanges
é padronizado como verdadeiro se não for explicitamente definido como falso. Ao adicionar a detecção de alterações baseada em eventos, é necessário adicionar o parâmetro a sua saída e defini-lo como falso para desativar a sondagem. Caso contrário, o pipeline inicia duas vezes para uma única alteração de origem. Para obter mais detalhes, consulte Configurações padrão do parâmetro PollForSourceChanges.
-
Execute o get-pipeline comando para copiar a estrutura do pipeline em um arquivo JSON. Por exemplo, para um pipeline nomeado
MyFirstPipeline
, execute o seguinte comando:aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
Este comando retorna nada, mas o arquivo que você criou deve aparecer no diretório onde você executou o comando.
-
Abra o arquivo JSON em qualquer editor de texto plano e, para editar o estágio de origem, altere o parâmetro
PollForSourceChanges
de um bucket denominadostorage-bucket
parafalse
, conforme mostrado neste exemplo.Por que estou fazendo essa alteração? A configuração deste parâmetro para
false
desativa as verificações periódicas para que você possa utilizar apenas a detecção de alterações baseada em eventos."configuration": { "S3Bucket": "storage-bucket",
"PollForSourceChanges": "false",
"S3ObjectKey": "index.zip" }, -
Se você estiver trabalhando com a estrutura do pipeline recuperada por meio do comando get-pipeline, é necessário remover as linhas
metadata
do arquivo JSON. Caso contrário, o comando update-pipeline não é capaz de utilizá-la. Remova as linhas"metadata": { }
,"created"
,"pipelineARN"
e os campos"updated"
.Por exemplo, remova as seguintes linhas da estrutura:
"metadata": { "pipelineArn": "arn:aws:codepipeline:
region
:account-ID
:pipeline-name
", "created": "date
", "updated": "date
" },Salve o arquivo.
-
Para aplicar suas alterações, execute o comando update-pipeline especificando o arquivo JSON do pipeline:
Importante
Não se esqueça de incluir
file://
antes do nome de arquivo. Ele é obrigatório nesse comando.aws codepipeline update-pipeline --cli-input-json file://
pipeline.json
Este comando retorna toda a estrutura do pipeline editado.
nota
O comando update-pipeline interrompe o pipeline. Se uma revisão estiver sendo executada pelo pipeline quando você executar o comando update-pipeline, essa execução será interrompida. Você deve iniciar manualmente o pipeline para executar a revisão através do pipeline atualizado. Use o comando start-pipeline-execution para iniciar manualmente o pipeline.
Migre pipelines de votação com uma fonte S3 habilitada para eventos (modelo) AWS CloudFormation
Esse procedimento é para um pipeline em que o bucket de origem tem eventos ativados.
Use estas etapas para alterar o pipeline com uma origem do da sondagem para a detecção de alterações baseada em eventos.
Para criar um pipeline baseado em eventos do , edite o parâmetro de seu pipeline e adicione os seguintes recursos em seu modelo:
-
A regra do e a função do IAM para permitir que esse evento inicie o pipeline.
Ao utilizar o AWS CloudFormation para criar e gerenciar seus pipelines, o modelo inclui um conteúdo semelhante ao seguinte:
nota
A propriedade Configuration
no estágio de origem denominado PollForSourceChanges
. Se o seu modelo não inclui essa propriedade, PollForSourceChanges
é definido como true
por padrão.
Para criar uma regra do com o como origem do evento e o como o destino e aplicar as políticas de permissões
-
No modelo, em
Resources
, use o recursoAWS::IAM::Role
do AWS CloudFormation para configurar a função do IAM que habilita o evento a iniciar seu pipeline. Essa entrada cria uma função que utiliza duas políticas:-
A primeira política permite que a função seja assumida.
-
A segunda política fornece permissões para iniciar o pipeline.
Por que estou fazendo essa alteração? A adição do recurso
AWS::IAM::Role
permite que o crie permissões para . Esse recurso é adicionado à sua pilha do AWS CloudFormation. -
-
Use o
AWS::Events::Rule
AWS CloudFormation recurso para adicionar uma regra do EventBridge. Esse padrão de evento cria um evento que monitora a criação ou exclusão de objetos em seu bucket de origem do Amazon S3. Além disso, inclua um destino de seu pipeline. Quando um objeto é criado, essa regra é invocadaStartPipelineExecution
em seu pipeline de destino.Por que estou fazendo essa alteração? A adição do recurso
AWS::Events::Rule
permite que o AWS CloudFormation crie o evento. Esse recurso é adicionado à sua pilha do AWS CloudFormation. -
Salve o modelo atualizado no computador local e abra o console do AWS CloudFormation.
-
Selecione sua pilha e clique em Create Change Set for Current Stack (Criar conjunto de alterações para a pilha atual).
-
Carregue o modelo atualizado e, em seguida, visualize as alterações listadas no AWS CloudFormation. Essas são as alterações que serão feitas na pilha. Seus novos recursos devem ser exibidos na lista.
-
Escolha Executar.
Editar o parâmetro PollForSourceChanges do pipeline
Importante
Ao criar um pipeline com esse método, o parâmetro PollForSourceChanges
é padronizado como verdadeiro se não for explicitamente definido como falso. Ao adicionar a detecção de alterações baseada em eventos, é necessário adicionar o parâmetro a sua saída e defini-lo como falso para desativar a sondagem. Caso contrário, o pipeline inicia duas vezes para uma única alteração de origem. Para obter mais detalhes, consulte Configurações padrão do parâmetro PollForSourceChanges.
-
No modelo, altere
PollForSourceChanges
parafalse
. Se você não incluirPollForSourceChanges
na sua definição de pipeline, adicione-o e configure parafalse
.Por que estou fazendo essa alteração? A alteração de
PollForSourceChanges
parafalse
desativa as verificações periódicas para que você possa utilizar apenas a detecção de alterações baseada em eventos.
Ao utilizar o AWS CloudFormation para criar esses recursos, o pipeline é acionado quando os arquivos presentes no repositório são criados ou atualizados.
nota
Não pare por aqui. Embora o pipeline seja criado, você deve gerar um segundo modelo do para o seu pipeline do . Se você não criar o segundo modelo, o pipeline não apresentará funcionalidades de detecção de alterações.
Migre pipelines de votação com uma fonte do S3 e uma trilha do CloudTrail
Para um pipeline com uma fonte do Amazon S3, modifique o pipeline para que a detecção de alterações seja automatizada por meio do EventBridge. Escolha um dos seguintes métodos para implementar a migração:
Migre pipelines de votação com uma fonte do S3 e uma trilha do CloudTrail (CLI)
Siga essas etapas para fazer com que um pipeline que conduz sondagem (verificações periódicas) passe a utilizar um evento no . Se você deseja criar um pipeline, consulte Crie um pipeline em CodePipeline.
Para criar um pipeline baseado em eventos com o , edite o parâmetro de seu pipeline e crie os seguintes recursos:
-
A trilha, o bucket e a política de bucket do AWS CloudTrail que o Amazon S3 pode usar para registrar em log os eventos que ocorrem.
-
Eventos EventBridge
-
Função do IAM para permitir que o evento do inicie o pipeline
Para criar uma trilha do AWS CloudTrail e habilitar o registro em log
Para usar a AWS CLI para criar uma trilha, chame o comando create-trail, especificando:
-
O nome da trilha.
-
O bucket ao qual você já aplicou a política de bucket do AWS CloudTrail.
Para obter mais informações, consulte Criar uma trilha com a interface de linha de comando da AWS.
-
Use o comando create-trail e inclua os parâmetros
--name
e--s3-bucket-name
.Por que estou fazendo essa alteração? Isso cria a trilha do CloudTrail necessária para o bucket de origem do S3.
O comando a seguir usa
--name
e--s3-bucket-name
para criar uma trilha denominadamy-trail
e um bucket chamado demyBucket
.aws cloudtrail create-trail --name my-trail --s3-bucket-name myBucket
-
Use o comando start-logging e inclua o parâmetro
--name
.Por que estou fazendo essa alteração? Esse comando inicia o registro em log do para o bucket de origem e envia eventos ao .
Exemplo:
O comando a seguir utiliza
--name
para iniciar o registro em log em uma trilha denominadamy-trail
.aws cloudtrail start-logging --name my-trail
-
Use o comando put-event-selectors e inclua os parâmetros
--trail-name
e--event-selectors
. Use seletores de eventos para especificar que você deseja que a trilha registre em log os eventos de dados para o bucket de origem e envie os eventos para a regra do .Por que estou fazendo essa alteração? Esse comando filtra eventos.
Exemplo:
O comando a seguir utiliza
--trail-name
e--event-selectors
para especificar eventos de dados para um bucket de origem e prefixo denominadomyBucket/myFolder
.aws cloudtrail put-event-selectors --trail-name
my-trail
--event-selectors '[{ "ReadWriteType": "WriteOnly", "IncludeManagementEvents":false, "DataResources": [{ "Type": "AWS::S3::Object", "Values": ["arn:aws:s3:::myBucket/myFolder/file.zip"] }] }]'
Para criar uma regra do com o como origem do evento e o como o destino e aplicar as políticas de permissões
-
Conceda ao as permissões necessárias para usar o para invocar a regra. Para obter mais informações sobre como usar políticas baseadas em recursos para o , consulte o .
-
Use o exemplo a seguir para criar a política de confiança que permita ao assumir a função de serviço. Chame-o de
trustpolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Use o comando a seguir para criar a função
Role-for-MyRule
e anexar a política de confiança.Por que estou fazendo essa alteração? A adição dessa política de confiança à função cria permissões para .
aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
-
Crie o JSON da política de permissões, conforme mostrado aqui para o pipeline chamado
MyFirstPipeline
. Nomeie a politica de permissõespermissionspolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
-
Use o comando a seguir para anexar a nova política de permissões
CodePipeline-Permissions-Policy-for-EB
à funçãoRole-for-MyRule
criada.aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
-
-
Use o comando put-rule e inclua os parâmetros
--name
,--event-pattern
e--role-arn
.O exemplo de comando a seguir cria uma regra chamada
MyS3SourceRule
.aws events put-rule --name "MyS3SourceRule" --event-pattern "{\"source\":[\"aws.s3\"],\"detail-type\":[\"AWS API Call via CloudTrail\"],\"detail\":{\"eventSource\":[\"s3.amazonaws.com\"],\"eventName\":[\"CopyObject\",\"PutObject\",\"CompleteMultipartUpload\"],\"requestParameters\":{\"bucketName\":[\"my-bucket\"],\"key\":[\"my-key\"]}}} --role-arn "arn:aws:iam::
ACCOUNT_ID
:role/Role-for-MyRule" -
Para adicionar o put-targets como destino, use o comando
--rule
e inclua os parâmetros e .O comando a seguir especifica que, para a regra denominada
MyS3SourceRule
, oId
do destino é composto do número um, indicando que, em uma lista de destinos para a regra, esse é o destino 1. O comando também especifica umARN
de exemplo para o pipeline. O pipeline é iniciado quando uma alteração é feita no repositório.aws events put-targets --rule MyS3SourceRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
Editar o parâmetro PollForSourceChanges do pipeline
Importante
Ao criar um pipeline com esse método, o parâmetro PollForSourceChanges
é padronizado como verdadeiro se não for explicitamente definido como falso. Ao adicionar a detecção de alterações baseada em eventos, é necessário adicionar o parâmetro a sua saída e defini-lo como falso para desativar a sondagem. Caso contrário, o pipeline inicia duas vezes para uma única alteração de origem. Para obter mais detalhes, consulte Configurações padrão do parâmetro PollForSourceChanges.
-
Execute o get-pipeline comando para copiar a estrutura do pipeline em um arquivo JSON. Por exemplo, para um pipeline nomeado
MyFirstPipeline
, execute o seguinte comando:aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
Este comando retorna nada, mas o arquivo que você criou deve aparecer no diretório onde você executou o comando.
-
Abra o arquivo JSON em qualquer editor de texto plano e, para editar o estágio de origem, altere o parâmetro
PollForSourceChanges
de um bucket denominadostorage-bucket
parafalse
, conforme mostrado neste exemplo.Por que estou fazendo essa alteração? A configuração deste parâmetro para
false
desativa as verificações periódicas para que você possa utilizar apenas a detecção de alterações baseada em eventos."configuration": { "S3Bucket": "storage-bucket",
"PollForSourceChanges": "false",
"S3ObjectKey": "index.zip" }, -
Se você estiver trabalhando com a estrutura do pipeline recuperada por meio do comando get-pipeline, é necessário remover as linhas
metadata
do arquivo JSON. Caso contrário, o comando update-pipeline não é capaz de utilizá-la. Remova as linhas"metadata": { }
,"created"
,"pipelineARN"
e os campos"updated"
.Por exemplo, remova as seguintes linhas da estrutura:
"metadata": { "pipelineArn": "arn:aws:codepipeline:
region
:account-ID
:pipeline-name
", "created": "date
", "updated": "date
" },Salve o arquivo.
-
Para aplicar suas alterações, execute o comando update-pipeline especificando o arquivo JSON do pipeline:
Importante
Não se esqueça de incluir
file://
antes do nome de arquivo. Ele é obrigatório nesse comando.aws codepipeline update-pipeline --cli-input-json file://
pipeline.json
Este comando retorna toda a estrutura do pipeline editado.
nota
O comando update-pipeline interrompe o pipeline. Se uma revisão estiver sendo executada pelo pipeline quando você executar o comando update-pipeline, essa execução será interrompida. Você deve iniciar manualmente o pipeline para executar a revisão através do pipeline atualizado. Use o comando start-pipeline-execution para iniciar manualmente o pipeline.
Migre pipelines de votação com uma fonte do S3 e uma trilha do CloudTrail (modelo) AWS CloudFormation
Use estas etapas para alterar o pipeline com uma origem do da sondagem para a detecção de alterações baseada em eventos.
Para criar um pipeline baseado em eventos do , edite o parâmetro de seu pipeline e adicione os seguintes recursos em seu modelo:
-
O exige que todos os eventos do sejam registrados em log. Você deve criar uma trilha, um bucket e uma política de bucket do que o pode usar para registrar em log os eventos que ocorrem. Para obter mais informações, consulte Registrar em log dados e eventos de gerenciamento para trilhas.
-
A regra do e a função do IAM para permitir que esse evento inicie o pipeline.
Ao utilizar o AWS CloudFormation para criar e gerenciar seus pipelines, o modelo inclui um conteúdo semelhante ao seguinte:
nota
A propriedade Configuration
no estágio de origem denominado PollForSourceChanges
. Se o seu modelo não inclui essa propriedade, PollForSourceChanges
é definido como true
por padrão.
Para criar uma regra do com o como origem do evento e o como o destino e aplicar as políticas de permissões
-
No modelo, em
Resources
, use o recursoAWS::IAM::Role
do AWS CloudFormation para configurar a função do IAM que habilita o evento a iniciar seu pipeline. Essa entrada cria uma função que utiliza duas políticas:-
A primeira política permite que a função seja assumida.
-
A segunda política fornece permissões para iniciar o pipeline.
Por que estou fazendo essa alteração? A adição do recurso
AWS::IAM::Role
permite que o crie permissões para . Esse recurso é adicionado à sua pilha do AWS CloudFormation. -
-
Use o
AWS::Events::Rule
AWS CloudFormation recurso para adicionar uma regra do EventBridge. Esse padrão de evento cria um evento que monitoraCopyObject
,PutObject
e em seu bucket de origem do . Além disso, inclua um destino de seu pipeline. QuandoCopyObject
,PutObject
ouCompleteMultipartUpload
ocorrer, essa regra invocaStartPipelineExecution
em seu pipeline de destino.Por que estou fazendo essa alteração? A adição do recurso
AWS::Events::Rule
permite que o AWS CloudFormation crie o evento. Esse recurso é adicionado à sua pilha do AWS CloudFormation. -
Adicione este trecho ao primeiro modelo para permitir a funcionalidade de pilha cruzada:
-
Salve o modelo atualizado no computador local e abra o console do AWS CloudFormation.
Selecione sua pilha e clique em Create Change Set for Current Stack (Criar conjunto de alterações para a pilha atual).
Carregue o modelo atualizado e, em seguida, visualize as alterações listadas no AWS CloudFormation. Essas são as alterações que serão feitas na pilha. Seus novos recursos devem ser exibidos na lista.
Escolha Executar.
Editar o parâmetro PollForSourceChanges do pipeline
Importante
Ao criar um pipeline com esse método, o parâmetro PollForSourceChanges
é padronizado como verdadeiro se não for explicitamente definido como falso. Ao adicionar a detecção de alterações baseada em eventos, é necessário adicionar o parâmetro a sua saída e defini-lo como falso para desativar a sondagem. Caso contrário, o pipeline inicia duas vezes para uma única alteração de origem. Para obter mais detalhes, consulte Configurações padrão do parâmetro PollForSourceChanges.
-
No modelo, altere
PollForSourceChanges
parafalse
. Se você não incluirPollForSourceChanges
na sua definição de pipeline, adicione-o e configure parafalse
.Por que estou fazendo essa alteração? A alteração de
PollForSourceChanges
parafalse
desativa as verificações periódicas para que você possa utilizar apenas a detecção de alterações baseada em eventos.
Criar um segundo modelo para os recursos do do pipeline do
-
Em um modelo separado, em
Resources
, use os recursosAWS::S3::Bucket
,AWS::S3::BucketPolicy
eAWS::CloudTrail::Trail
do AWS CloudFormation para fornecer uma definição de bucket simples e uma trilha para o CloudTrail.Por que estou fazendo essa alteração? Considerando o limite atual de cinco trilhas por conta, a trilha do precisa ser criada e gerenciada separadamente. (Consulte Limites em AWS CloudTrail.) No entanto, você pode incluir vários buckets do em uma única trilha, para que você possa criar a trilha uma vez e adicionar buckets do para outros pipelines, conforme for necessário. Cole o seguinte no arquivo do segundo modelo de exemplo.
Ao utilizar o AWS CloudFormation para criar esses recursos, o pipeline é acionado quando os arquivos presentes no repositório são criados ou atualizados.
nota
Não pare por aqui. Embora o pipeline seja criado, você deve gerar um segundo modelo do para o seu pipeline do . Se você não criar o segundo modelo, o pipeline não apresentará funcionalidades de detecção de alterações.
Migre os pipelines de enquete de uma ação de origem do GitHub versão 1 para conexões
Você pode migrar uma ação de origem do GitHub versão 1 para usar conexões para seu repositório externo. Esse é o método de detecção de alterações recomendado para pipelines com uma ação de origem do GitHub versão 1.
Para um pipeline com uma ação de origem do GitHub versão 1, recomendamos modificar o pipeline para usar uma ação do GitHub versão 2 para que a detecção de alterações seja automatizada por meio do CodeStar Connections. AWS Para obter mais informações sobre como trabalhar com o ConfigMap, consulte GitHub conexões.
Criar uma conexão com o GitHub (console)
Você pode usar a () para criar uma conexão com o GitHub.
Etapa 1: Substituir sua ação do GitHub da versão 1
Use a página de edição do pipeline para substituir sua ação do GitHub da versão 1 por uma ação do GitHub da versão 2.
Para substituir sua ação do GitHub de versão 1
-
Faça login no console do CodePipeline.
-
Selecione o pipeline e escolha Edit (Editar). No estágio de origem, clique em Edit stage (Editar estágio). É exibida uma mensagem recomendando que você atualize sua ação.
-
Em Provedor de ação, escolha GitHub (versão 2).
-
Faça um dos seguintes procedimentos:
-
Em Conexão, se você ainda não criou uma conexão com seu provedor, escolha Conectar ao GitHub. Prossiga para a Etapa 2: criar uma conexão com o GitHub.
-
Em Conexão, se você já criou uma conexão com seu provedor, escolha a conexão. Vá para a Etapa 3: Salve a ação de origem para sua conexão.
-
Criar uma conexão com o GitHub
Depois de escolher criar a conexão, a página Connect to GitHub é exibida.
Para criar uma conexão com o GitHub
-
Em GitHub connection settings (Configurações de conexão do GitHub), o nome da conexão aparece em Connection name (Nome da conexão).
Em GitHub apps (Aplicações do GitHub), escolha uma instalação de aplicação ou Install a new app (Instalar uma nova aplicação) para criar uma.
nota
Você instala uma aplicação para todas as suas conexões com um provedor específico. Se você já instalou a aplicação Connector para GitHub, selecione-a e ignore esta etapa.
-
Se a página de login do Bitbucket for exibida, faça login com suas credenciais e escolha a opção de continuar.
-
Na página de instalação do aplicativo, uma mensagem mostra que o aplicativo do AWS CodeStar está tentando se conectar à sua conta do Bitbucket.
nota
A aplicação é instalada apenas uma vez para cada conta do GitHub. Se você instalou a aplicação anteriormente, poderá escolher Configure (Configurar) para prosseguir para uma página de modificação para a instalação da aplicação ou usar o botão Back (Voltar) para retornar ao console.
-
Na AWS CodeStar página Instalar, escolha Instalar.
-
Na página Connect to GitHub (Conexão ao GitHub) o ID de conexão da sua nova instalação é exibido em GitHub Apps (Aplicações do GitHub). Selecione Connect (Conectar).
Etapa 3: Salve sua ação de origem do GitHub
Conclua suas atualizações na página Editar ação para salvar sua nova ação de origem.
Para salvar sua ação de origem do GitHub
-
Em Repository name (Nome do repositório), escolha o nome do repositório de terceiros. Em Branch name (Nome da ramificação), escolha a ramificação onde deseja que o pipeline detecte alterações de origem.
nota
No Repositório, digite
owner-name/repository-name
conforme mostrado neste exemplo:my-account/my-repository
-
Em Output artifact format (Formato de artefato de saída), você deve escolher o formato para seus artefatos.
-
Para armazenar artefatos de saída da ação do Bitbucket usando o método padrão, escolha CodePipeline default (Padrão CodePipeline). A ação acessa os arquivos do repositório Bitbucket e armazena os artefatos em um arquivo ZIP no armazenamento de artefatos do pipeline.
-
Para armazenar um arquivo JSON que contém uma referência de URL ao repositório para que as ações downstream possam executar comandos Git diretamente, escolha Full clone (Clone completo). Esta opção só pode ser usada por ações downstream do .
Se você escolher essa opção, precisará atualizar as permissões para sua função de serviço do projeto CodeBuild, conforme mostrado em. Adicione CodeBuild GitClone permissões para conexões com o Bitbucket GitHub, GitHub Enterprise Server ou .com GitLab Para um tutorial que mostra como usar a opção de clonagem completa do, consulteTutorial: Usar o clone completo com uma origem de pipeline do GitHub.
-
-
Em Artefatos de saída, você pode manter o nome do artefato de saída para essa ação, como.
SourceArtifact
Escolha Concluído para fechar a página Editar ação. -
Escolha Concluído para fechar a página de edição do palco. Escolha Salvar para fechar a página de edição do pipeline.
Criar uma conexão com o GitHub (CLI)
Você pode usar a AWS Command Line Interface (AWS CLI) para criar uma conexão com o GitHub.
Para fazer isso, use o comando create-connection.
Importante
Uma conexão criada por meio da AWS CLI ou do AWS CloudFormation permanece no status PENDING
por padrão. Depois de criar uma conexão com a CLI ou o AWS CloudFormation, use o console para editar a conexão e tornar seu status AVAILABLE
.
Para criar uma conexão com o GitHub
-
Abra um terminal (Linux, macOS ou Unix) ou um prompt de comando (Windows). Use a AWS CLI para executar o comando create-connection, especificando o
--provider-type
e o--connection-name
para sua conexão. Neste exemplo, o nome do provedor de terceiros éGitHub
e o nome da conexão especificada éMyConnection
.aws codestar-connections create-connection --provider-type GitHub --connection-name MyConnection
Se tiver êxito, esse comando gerará as informações do ARN de conexão semelhantes às seguintes.
{ "ConnectionArn": "arn:aws:codestar-connections:us-west-2:
account_id
:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f" } -
Use o console para concluir a conexão.
Migre os pipelines de enquete de uma ação de origem do GitHub versão 1 para webhooks
Você pode usar o console do para atualizar seu pipeline para usar os webhooks para detectar alterações em seu repositório de origem do . Essa migração para webhooks é somente para a ação da versão 1 do GitHub.
-
Console do Migrar pipelines de enquete para webhooks (ações de origem do GitHub versão 1) (console)
-
CLIMigre pipelines de enquete para webhooks (ações de origem do GitHub versão 1) (CLI)
-
AWS CloudFormation: Atualizar os pipelines para o envio de eventos (origem do GitHub) (modelo do AWS CloudFormation)
Migrar pipelines de enquete para webhooks (ações de origem do GitHub versão 1) (console)
Você pode usar o console do para atualizar seu pipeline para usar os webhooks para detectar alterações em seu repositório de origem do .
Siga essas etapas para fazer com que um pipeline que conduz sondagem (verificações periódicas) passe a utilizar um evento no . Se você deseja criar um pipeline, consulte Crie um pipeline em CodePipeline.
Ao utilizar o console, o parâmetro PollForSourceChanges
para o seu pipeline é alterado. O webhook do GitHub será criado e registrado para você.
Para editar o estágio de origem do pipeline
-
Faça login no console em AWS Management Consolehttp://console.aws.amazon.com/codesuite/codepipeline/home.
Os nomes de todos os pipelines associados à sua conta da AWS são exibidos.
-
Em Nome, selecione o nome do pipeline que você deseja editar. Isso abrirá um visão detalhada do pipeline, incluindo o estado de cada uma das ações em cada estágio do pipeline.
-
Na página de detalhes do pipeline, selecione Editar.
-
Em Edit stage (Editar estágio), selecione o ícone de edição na ação de origem.
-
Expanda Change detection options (Opções de detecção de alterações) e selecione Use Amazon CloudWatch Events to automatically start my pipeline when a change occurs (recommended) (Usar o Amazon CloudWatch Events para iniciar automaticamente o pipeline quando ocorrer uma alteração (recomendado)).
É exibida uma mensagem para informar que o AWS cria um webhook no GitHub para detectar alterações de origem. Você pode optar por não participar nas opções abaixo. Escolha Atualizar. Além do webhook, o cria o seguinte:
-
Um segredo, gerado aleatoriamente e utilizado para autorizar a conexão com o GitHub.
-
O URL do webhook, gerado por meio do uso do endpoint público da região.
O registra o webhook com o GitHub. Isso inscreve o URL para receber eventos de repositório.
-
-
Quando terminar de editar seu pipeline, selecione Salvar alterações do pipeline para voltar à página de resumo.
Uma mensagem exibe o nome do webhook a ser criado para o pipeline. Escolha Save and continue.
-
Para testar a ação, utilize a AWS CLI para confirmar uma mudança à origem especificada no estágio de origem do pipeline para que seja possível liberar uma alteração.
Migre pipelines de enquete para webhooks (ações de origem do GitHub versão 1) (CLI)
Siga essas etapas para fazer com que um pipeline que conduz sondagem (verificações periódicas) passe a utilizar um webhook. Se você deseja criar um pipeline, consulte Crie um pipeline em CodePipeline.
Para criar um pipeline baseado em eventos, edite o parâmetro PollForSourceChanges
de seu pipeline e crie os seguintes recursos manualmente:
-
Parâmetros de autorização e webhook do GitHub
Para criar e registrar seu webhook
nota
Ao usar a CLI ou o AWS CloudFormation para criar um pipeline e adicionar um webhook, é necessário desativar as verificações periódicas. Para desativar as verificações periódicas, é necessário adicionar explicitamente o parâmetro PollForSourceChanges
e defini-lo como falso, conforme descrito no procedimento final abaixo. Caso contrário, o padrão para um pipeline da CLI ou do AWS CloudFormation é que PollForSourceChanges
seja padronizado como verdadeiro e não seja exibido na saída da estrutura de pipeline. Para obter mais informações sobre os padrões de PollForSourceChanges, consulte Configurações padrão do parâmetro PollForSourceChanges.
-
Em um editor de texto, crie e salve um arquivo JSON para o webhook que deseja criar. Use esse exemplo de arquivo para um webhook denominado
my-webhook
:{ "webhook": { "name": "my-webhook", "targetPipeline": "
pipeline_name
", "targetAction": "source_action_name
", "filters": [{ "jsonPath": "$.ref", "matchEquals": "refs/heads/{Branch}" }], "authentication": "GITHUB_HMAC", "authenticationConfiguration": { "SecretToken": "secret
" } } } -
Use o comando put-webhook e inclua os parâmetros
--cli-input
e--region
.O exemplo de comando a seguir cria um webhook com o arquivo JSON
webhook_json
.aws codepipeline put-webhook --cli-input-json file://webhook_json.json --region "eu-central-1"
-
Na saída mostrada neste exemplo, a URL e o ARN são retornados para um webhook denominado
my-webhook
.{ "webhook": { "url": "https://webhooks.
domain
.com/trigger111111111EXAMPLE11111111111111111", "definition": { "authenticationConfiguration": { "SecretToken": "secret
" }, "name": "my-webhook", "authentication": "GITHUB_HMAC", "targetPipeline": "pipeline_name
", "targetAction": "Source", "filters": [ { "jsonPath": "$.ref", "matchEquals": "refs/heads/{Branch}" } ] }, "arn": "arn:aws:codepipeline:eu-central-1:ACCOUNT_ID
:webhook:my-webhook" }, "tags": [{ "key": "Project", "value": "ProjectA" }] }Este exemplo adiciona tags ao webhook incluindo a chave de tag
Project
e o valorProjectA
no webhook. Para obter mais informações sobre a como marcar recursos do , consulte Tags no . -
Use o comando register-webhook-with-third-party e inclua o parâmetro
--webhook-name
.O exemplo de comando a seguir registra um webhook denominado
my-webhook
.aws codepipeline register-webhook-with-third-party --webhook-name my-webhook
Editar o parâmetro PollForSourceChanges do pipeline
Importante
Ao criar um pipeline com esse método, o parâmetro PollForSourceChanges
é padronizado como verdadeiro se não for explicitamente definido como falso. Ao adicionar a detecção de alterações baseada em eventos, é necessário adicionar o parâmetro a sua saída e defini-lo como falso para desativar a sondagem. Caso contrário, o pipeline inicia duas vezes para uma única alteração de origem. Para obter mais detalhes, consulte Configurações padrão do parâmetro PollForSourceChanges.
-
Execute o get-pipeline comando para copiar a estrutura do pipeline em um arquivo JSON. Por exemplo, para um pipeline chamado
MyFirstPipeline
, você deve digitar o seguinte comando:aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
Este comando retorna nada, mas o arquivo que você criou deve aparecer no diretório onde você executou o comando.
-
Abra o arquivo JSON em qualquer editor de texto plano e altere ou adicione o parâmetro
PollForSourceChanges
para editar o estágio de origem. Neste exemplo, para um repositório denominadoUserGitHubRepo
, o parâmetro é definido comofalse
.Por que estou fazendo essa alteração? A alteração deste parâmetro para desativa as verificações periódicas para que você possa utilizar apenas a detecção de alterações baseada em eventos.
"configuration": { "Owner": "
name
", "Repo": "UserGitHubRepo","PollForSourceChanges": "false",
"Branch": "main", "OAuthToken": "****" }, -
Se você estiver trabalhando com a estrutura de pipeline recuperada por meio do comando get-pipeline, é necessário editar a estrutura no arquivo JSON por meio da remoção das linhas
metadata
do arquivo. Caso contrário, o comando update-pipeline não é capaz de utilizá-la. Remova a seção"metadata"
da estrutura do pipeline no arquivo JSON, incluindo os campos:{ }
,"created"
,"pipelineARN"
e"updated"
.Por exemplo, remova as seguintes linhas da estrutura:
"metadata": { "pipelineArn": "arn:aws:codepipeline:
region
:account-ID
:pipeline-name
", "created": "date
", "updated": "date
" },Salve o arquivo.
-
Para aplicar suas alterações, execute o comando update-pipeline, especificando o pipeline do arquivo JSON, de modo semelhante ao seguinte:
Importante
Não se esqueça de incluir
file://
antes do nome de arquivo. Ele é obrigatório nesse comando.aws codepipeline update-pipeline --cli-input-json file://
pipeline.json
Este comando retorna toda a estrutura do pipeline editado.
nota
O comando update-pipeline interrompe o pipeline. Se uma revisão estiver sendo executada pelo pipeline quando você executar o comando update-pipeline, essa execução será interrompida. Você deve iniciar manualmente o pipeline para executar a revisão através do pipeline atualizado. Use o comando start-pipeline-execution para iniciar manualmente o pipeline.
Atualizar os pipelines para o envio de eventos (origem do GitHub) (modelo do AWS CloudFormation)
Siga estas etapas para atualizar o pipeline (com uma origem do GitHub) de verificações periódicas (sondagem) para detecção de alterações baseada em eventos usando webhooks.
Para criar um pipeline baseado em eventos do AWS CodeCommit, edite o parâmetro PollForSourceChanges
de seu pipeline e adicione os seguintes recursos em seu modelo:
Ao utilizar o AWS CloudFormation para criar e gerenciar seus pipelines, o modelo apresenta um conteúdo semelhante ao seguinte:
nota
Observe a propriedade de configuração PollForSourceChanges
no estágio de origem. Se o seu modelo não inclui essa propriedade, PollForSourceChanges
é definido como true
por padrão.
Como adicionar parâmetros e criar um webhook em seu modelo
É altamente recomendável que você use o AWS Secrets Manager para armazenar suas credenciais. Se você usar o Secrets Manager, já terá configurado e armazenado seus parâmetros secretos no Secrets Manager. Este exemplo usa referências dinâmicas ao AWS Secrets Manager usando credenciais do GitHub para o webhook. Para obter mais informações, consulte Usar referências dinâmicas para especificar valores de modelo.
Importante
Ao transmitir parâmetros secretos, não insira o valor diretamente no modelo. O valor é renderizado como texto sem formatação e, portanto, é legível. Por motivos de segurança, não use texto sem formatação no modelo do AWS CloudFormation para armazenar suas credenciais.
Ao usar a CLI ou o AWS CloudFormation para criar um pipeline e adicionar um webhook, é necessário desativar as verificações periódicas.
nota
Para desativar as verificações periódicas, é necessário adicionar explicitamente o parâmetro PollForSourceChanges
e defini-lo como falso, conforme descrito no procedimento final abaixo. Caso contrário, o padrão para um pipeline da CLI ou do AWS CloudFormation é que PollForSourceChanges
seja padronizado como verdadeiro e não seja exibido na saída da estrutura de pipeline. Para obter mais informações sobre os padrões de PollForSourceChanges, consulte Configurações padrão do parâmetro PollForSourceChanges.
-
No modelo, em
Resources
, adicione os parâmetros: -
Utilize o recurso
AWS::CodePipeline::Webhook
do AWS CloudFormation para adicionar um webhook.nota
O
TargetAction
especificado deve corresponder à propriedade deName
da ação de origem definida no pipeline.Se
RegisterWithThirdParty
estiver definido comotrue
, verifique se o usuário associado aoOAuthToken
pode definir os escopos necessários no GitHub. O token e o webhook requerem os seguintes escopos do GitHub:-
repo
– usado para se obter o controle total para ler e efetuar pull de artefatos de repositórios públicos e privados para um pipeline. -
admin:repo_hook
– usado para se obter o controle total dos ganchos do repositório.
Caso contrário, o GitHub retornará um 404. Para obter mais informações sobre o 404 retornado, consulte https://help.github.com/articles/about-webhooks
. -
-
Salve o modelo atualizado em seu computador local e abra o console do AWS CloudFormation.
-
Selecione sua pilha e clique em Create Change Set for Current Stack (Criar conjunto de alterações para a pilha atual).
-
Carregue o modelo e visualize as alterações listadas no AWS CloudFormation. Essas são as alterações a serem feitas na pilha. Seus novos recursos devem ser exibidos na lista.
-
Escolha Executar.
Editar o parâmetro PollForSourceChanges do pipeline
Importante
Ao criar um pipeline com esse método, o parâmetro PollForSourceChanges
é padronizado como verdadeiro se não for explicitamente definido como falso. Ao adicionar a detecção de alterações baseada em eventos, é necessário adicionar o parâmetro a sua saída e defini-lo como falso para desativar a sondagem. Caso contrário, o pipeline inicia duas vezes para uma única alteração de origem. Para obter mais detalhes, consulte Configurações padrão do parâmetro PollForSourceChanges.
-
No modelo, altere
PollForSourceChanges
parafalse
. Se você não incluirPollForSourceChanges
na sua definição de pipeline, adicione-o e configure para falso.Por que estou fazendo essa alteração? A alteração deste parâmetro para
false
desativa as verificações periódicas para que você possa utilizar apenas a detecção de alterações baseada em eventos.
Ao criar esses recursos com o AWS CloudFormation, o webhook definido é criado no repositório GitHub especificado. Seu pipeline é acionado durante a confirmação.