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á.
Migrar pipelines de sondagem para usar a detecção de alterações baseada em eventos
AWS CodePipeline oferece suporte à entrega completa e end-to-end contínua, o que inclui iniciar seu 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: detecção de alterações baseada em eventos e sondagem. 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 sondagem para o método de detecção de alterações baseada em eventos do seu pipeline.
O método recomendado de detecção de alterações baseado em eventos para tubulações é determinado pela fonte da tubulação, como. CodeCommit Nesse caso, por exemplo, o pipeline de pesquisa precisaria migrar para a detecção de alterações baseada em eventos com. EventBridge
Como migrar os pipelines de sondagem
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 baseada em eventos:
-
Use as etapas em Visualizar os pipelines de sondagem em sua conta para determinar seus canais de sondagem.
-
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 usar o CLI ou AWS CloudFormation.
Como migrar pipelines para o método de detecção de alterações recomendado | ||
---|---|---|
Origem do pipeline | Método recomendado de detecção baseada em eventos | Procedimentos de migração |
AWS CodeCommit | EventBridge (recomendado). | Consulte Migre os pipelines de votação com uma fonte CodeCommit . |
Amazon S3 | EventBridge e bucket habilitado para notificações de eventos (recomendado). | Consulte Migrar pipelines de sondagem com uma origem do S3 habilitada para eventos. |
Amazon S3 | EventBridge e uma AWS CloudTrail trilha. | Consulte Migre os pipelines de votação com uma fonte e uma trilha do S3 CloudTrail . |
GitHub versão 1 | Conexões (recomendadas) | Consulte Migre os pipelines de pesquisa para uma ação de origem da GitHub versão 1 para as conexões. |
GitHub versão 1 | Webhooks | Consulte Migre os pipelines de pesquisa para uma ação de origem da 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 de GitHub versão 1, você deve definir explicitamente o PollForSourceChanges
parâmetro como false na configuração da ação Source para impedir a pesquisa de um pipeline. Como resultado, é possível configurar erroneamente um pipeline com detecção de alterações baseada em eventos e pesquisa, por exemplo, configurando uma EventBridge regra e também omitindo o parâmetro. PollForSourceChanges
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 em AWS CodePipeline.
Visualizar os pipelines de sondagem em sua conta
Como primeira etapa, use um dos scripts a seguir para determinar quais pipelines em sua conta estão configurados para sondagem. Esses são os pipelines 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 sondagem.
-
Abra uma janela de terminal 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 e cole o código a seguir no PollingPipelinesExtractorscript. Execute um destes procedimentos:
-
Copie e cole o código a seguir no PollingPipelinesExtractorscript.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 e cole o código a seguir no PollingPipelinesExtractorscript.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 é 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 é 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 sondagem para o método recomendado de detecção de alterações baseada em eventos.
nota
Seus pipelines de sondagem são determinados pela configuração de ação do pipeline para o parâmetro
PollForSourceChanges
. Se a configuração da fonte do pipeline tiver oPollForSourceChanges
parâmetro omitido, o CodePipeline padrão será pesquisar seu repositório em busca de alterações na fonte. Esse comportamento será o equivalente a terPollForSourceChanges
incluído e definido como true. 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 Referência de ação de origem do Amazon S3.Observe que esse script também gera um arquivo.csv contendo a lista de pipelines de sondagem em sua conta e salva o arquivo.csv na pasta de trabalho atual.
-
Migre os pipelines de votação com uma fonte CodeCommit
Você pode migrar seu pipeline de votação EventBridge para usá-lo na detecção de alterações em seu repositório de CodeCommit origem ou em seu bucket de origem do Amazon S3.
CodeCommit-- Para um pipeline com uma CodeCommit fonte, modifique o pipeline para que a detecção de alterações seja automatizada EventBridge. Escolha um dos seguintes métodos para implementar a migração:
Migre canais de votação (ou fonte do Amazon CodeCommit S3) (console)
Você pode usar o CodePipeline console para atualizar seu pipeline e usá-lo EventBridge para detectar alterações em seu repositório de CodeCommit origem ou em seu bucket de origem do Amazon S3.
nota
Quando você usa o console para editar um pipeline que tem um repositório de CodeCommit origem ou um bucket de origem do Amazon S3, a regra IAM e a função são criadas para você. Se você usar o AWS CLI para editar o pipeline, você mesmo deverá criar a EventBridge regra e a IAM função. 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, estágios e ações.
Para editar o estágio de origem do pipeline
-
Faça login no AWS Management Console e abra o CodePipeline console em http://console.aws.amazon.com/codesuite/codepipeline/home
. Os nomes de todos os pipelines associados à sua AWS conta 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 as Opções de detecção de alterações e escolha Usar CloudWatch eventos para iniciar automaticamente meu pipeline quando ocorrer uma alteração (recomendado).
É exibida uma mensagem mostrando a EventBridge regra a ser criada para esse pipeline. Selecione Atualizar.
Se estiver atualizando um pipeline que tem uma origem do Amazon S3, você verá a mensagem a seguir. Selecione 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 EventBridge regra a ser criada para seu funil. Escolha Save and continue.
-
Para testar sua ação, libere uma alteração usando o AWS CLI para confirmar uma alteração na fonte especificada no estágio de origem do pipeline.
Migrar canais de pesquisa (CodeCommit fonte) () CLI
Siga estas etapas para editar um pipeline que está usando sondagens (verificações periódicas) para usar uma EventBridge regra para iniciar o pipeline. Se você deseja criar um pipeline, consulte Crie um pipeline, estágios e ações.
Para criar um pipeline orientado por eventos com CodeCommit, você edita o PollForSourceChanges
parâmetro do seu pipeline e, em seguida, cria os seguintes recursos:
-
EventBridge evento
-
IAMfunção para permitir que esse evento inicie seu funil
Para editar o PollForSourceChanges parâmetro do seu funil
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 detalhes, consulte Configurações válidas para o PollForSourceChanges parâmetro.
-
Execute o get-pipeline comando para copiar a estrutura do pipeline em um JSON arquivo. 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 JSON arquivo em qualquer editor de texto simples e edite o estágio de origem alterando o
PollForSourceChanges
parâmetro parafalse
, conforme mostrado neste exemplo.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 usando o get-pipeline comando, remova as
metadata
linhas do JSON arquivo. 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 update-pipeline comando, especificando o JSON arquivo 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 EventBridge regra com CodeCommit como origem do evento e CodePipeline como destino
-
Adicione permissões para usar EventBridge CodePipeline para invocar a regra. Para obter mais informações, consulte Uso de políticas baseadas em recursos para a Amazon. EventBridge
-
Use o exemplo a seguir para criar a política de confiança que permite assumir EventBridge 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 a política de permissõesJSON, conforme mostrado neste exemplo, 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 política de permissões
CodePipeline-Permissions-Policy-for-EB
à funçãoRole-for-MyRule
.Por que estou fazendo essa alteração? Adicionar essa política à função cria permissões para EventBridge.
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 CodePipeline como destino, chame o put-targets 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 canais de votação (CodeCommit fonte) (modelo)AWS CloudFormation
Para criar um pipeline orientado por eventos com AWS CodeCommit, você edita o PollForSourceChanges
parâmetro do seu pipeline e, em seguida, adiciona os seguintes recursos ao seu modelo:
-
Uma EventBridge regra
-
Um IAM papel para sua EventBridge regra
Se você usa AWS CloudFormation para criar e gerenciar seus pipelines, seu modelo inclui conteúdo como o 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.
Para atualizar seu AWS CloudFormation modelo de funil e criar uma EventBridge regra
-
No modelo, em
Resources
, use oAWS::IAM::Role
AWS CloudFormation recurso para configurar a IAM função que permite que seu evento inicie 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? Adicionar o
AWS::IAM::Role
recurso permite AWS CloudFormation criar permissões para EventBridge. Esse recurso é adicionado à sua AWS CloudFormation pilha. -
-
No modelo, em
Resources
, use oAWS::Events::Rule
AWS CloudFormation recurso para adicionar uma EventBridge regra. Esse padrão de evento cria um evento que monitora as alterações por push no seu repositório. Quando EventBridge detecta uma alteração no estado do repositório, a regra é invocadaStartPipelineExecution
em seu pipeline de destino.Por que estou fazendo essa alteração? Adicionar o
AWS::Events::Rule
recurso permite AWS CloudFormation criar o evento. Esse recurso é adicionado à sua AWS CloudFormation pilha. -
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.
-
Clique em Executar.
Para editar o PollForSourceChanges parâmetro do seu funil
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 detalhes, consulte Configurações válidas para o PollForSourceChanges parâmetro.
-
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.
Quando você cria esses recursos com AWS CloudFormation, seu pipeline é acionado quando os arquivos no seu repositório são criados ou atualizados. Aqui está o trecho do modelo final:
Migrar pipelines de sondagem com uma origem do 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 de EventBridge e com um bucket de origem habilitado para notificações de eventos. Esse é o método recomendado se você estiver usando o 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 CloudTrail trilha separada. Se você estiver usando o console, uma regra de evento e uma CloudTrail trilha serão configuradas para você. Para obter essas etapas, consulte Migre os pipelines de votação com uma fonte e uma trilha do S3 CloudTrail .
Migre pipelines de votação com uma fonte S3 habilitada para eventos () CLI
Siga estas etapas para editar um pipeline que está usando enquetes (verificações periódicas) para usar um evento em EventBridge vez disso. Se você deseja criar um pipeline, consulte Crie um pipeline, estágios e ações.
Para criar um pipeline baseado em eventos com o Amazon S3, edite o parâmetro PollForSourceChanges
de seu pipeline e crie os seguintes recursos:
-
EventBridge regra do evento
-
IAMfunção para permitir que o EventBridge evento inicie seu funil
Para criar uma EventBridge regra com o Amazon S3 como fonte e destino do evento e CodePipeline aplicar a política de permissões
-
Conceda permissões EventBridge para usar CodePipeline para invocar a regra. Para obter mais informações, consulte Uso de políticas baseadas em recursos para a Amazon. EventBridge
-
Use o exemplo a seguir para criar a política de confiança que permita assumir EventBridge 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? Adicionar essa política de confiança à função cria permissões para EventBridge.
aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
-
Crie a política de permissõesJSON, 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\":[\"amzn-s3-demo-source-bucket\"]}}}" --role-arn "arn:aws:iam::
ACCOUNT_ID
:role/Role-for-MyRule" -
Para adicionar CodePipeline como destino, chame o put-targets comando e inclua
--rule
--targets
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
Para editar o PollForSourceChanges parâmetro do seu funil
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 detalhes, consulte Configurações válidas para o PollForSourceChanges parâmetro.
-
Execute o get-pipeline comando para copiar a estrutura do pipeline em um JSON arquivo. 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 JSON arquivo em qualquer editor de texto sem formatação e edite o estágio de origem alterando o
PollForSourceChanges
parâmetro de um bucket chamadoamzn-s3-demo-source-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": "amzn-s3-demo-source-bucket",
"PollForSourceChanges": "false",
"S3ObjectKey": "index.zip" }, -
Se você estiver trabalhando com a estrutura do pipeline recuperada usando o get-pipeline comando, deverá remover as
metadata
linhas do JSON arquivo. 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 update-pipeline comando, especificando o JSON arquivo 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 refere-se a um pipeline em que o bucket de origem tem eventos habilitados.
Use estas etapas para alterar o pipeline com uma origem do Amazon S3 da sondagem para a detecção de alterações baseada em eventos.
Para criar um pipeline baseado em eventos com o Amazon S3, edite o parâmetro PollForSourceChanges
de seu pipeline e adicione os seguintes recursos ao modelo:
-
EventBridge regra e IAM função para permitir que esse evento inicie seu funil.
Se você usa AWS CloudFormation para criar e gerenciar seus pipelines, seu modelo inclui conteúdo como o 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 EventBridge regra com o Amazon S3 como fonte e destino do evento e CodePipeline aplicar a política de permissões
-
No modelo, em
Resources
, use oAWS::IAM::Role
AWS CloudFormation recurso para configurar a IAM função que permite que seu evento inicie 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? Adicionar
AWS::IAM::Role
recursos permite AWS CloudFormation criar permissões para EventBridge. Esse recurso é adicionado à sua AWS CloudFormation pilha. -
-
Use o
AWS::Events::Rule
AWS CloudFormation recurso para adicionar uma EventBridge regra. Esse padrão de evento cria um evento que monitora a criação ou exclusão de objetos no bucket de origem do Amazon S3. Além disso, inclua um destino de seu pipeline. Quando um objeto é criado, essa regra é invocaStartPipelineExecution
em seu pipeline de destino.Por que estou fazendo essa alteração? Adicionar o
AWS::Events::Rule
recurso permite AWS CloudFormation criar o evento. Esse recurso é adicionado à sua AWS CloudFormation pilha. -
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.
-
Clique em Executar.
Para editar o PollForSourceChanges parâmetro do seu funil
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 detalhes, consulte Configurações válidas para o PollForSourceChanges parâmetro.
-
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.
Quando você usa AWS CloudFormation para criar esses recursos, seu pipeline é acionado quando os arquivos no seu repositório são criados ou atualizados.
nota
Não pare por aqui. Embora seu pipeline tenha sido criado, você deve criar um segundo AWS CloudFormation modelo para seu pipeline do Amazon S3. Se você não criar o segundo modelo, o pipeline não apresentará funcionalidades de detecção de alterações.
Migre os pipelines de votação com uma fonte e uma trilha do S3 CloudTrail
Para um pipeline com uma fonte do Amazon S3, modifique o pipeline para que a detecção de alterações seja automatizada. EventBridge Escolha um dos seguintes métodos para implementar a migração:
Migre os pipelines de votação com uma fonte e uma trilha do S3 () CloudTrail CLI
Siga estas etapas para editar um pipeline que está usando enquetes (verificações periódicas) para usar um evento em EventBridge vez disso. Se você deseja criar um pipeline, consulte Crie um pipeline, estágios e ações.
Para criar um pipeline baseado em eventos com o Amazon S3, edite o parâmetro PollForSourceChanges
de seu pipeline e crie os seguintes recursos:
-
AWS CloudTrail política de trilha, bucket e bucket que o Amazon S3 pode usar para registrar os eventos.
-
EventBridge evento
-
IAMfunção para permitir que o EventBridge evento inicie seu funil
Para criar uma AWS CloudTrail trilha e ativar o registro
Para usar o AWS CLI para criar uma trilha, chame o create-trail comando, 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 Criação de uma trilha com a interface da linha de AWS comando.
-
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 CloudTrail trilha necessária para seu 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 deamzn-s3-demo-source-bucket
.aws cloudtrail create-trail --name my-trail --s3-bucket-name amzn-s3-demo-source-bucket
-
Use o comando start-logging e inclua o parâmetro
--name
.Por que estou fazendo essa alteração? Esse comando inicia o CloudTrail registro do seu bucket de origem e envia eventos para EventBridge.
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 sua trilha registre eventos de dados para seu bucket de origem e envie os eventos para a EventBridge regra.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 denominadoamzn-s3-demo-source-bucket/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:::amzn-s3-demo-source-bucket/myFolder/file.zip"] }] }]'
Para criar uma EventBridge regra com o Amazon S3 como fonte e destino do evento e CodePipeline aplicar a política de permissões
-
Conceda permissões EventBridge para usar CodePipeline para invocar a regra. Para obter mais informações, consulte Uso de políticas baseadas em recursos para a Amazon. EventBridge
-
Use o exemplo a seguir para criar a política de confiança que permita assumir EventBridge 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? Adicionar essa política de confiança à função cria permissões para EventBridge.
aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
-
Crie a política de permissõesJSON, 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\":[\"amzn-s3-demo-source-bucket\"],\"key\":[\"my-key\"]}}} --role-arn "arn:aws:iam::
ACCOUNT_ID
:role/Role-for-MyRule" -
Para adicionar CodePipeline como destino, chame o put-targets comando e inclua
--rule
--targets
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
Para editar o PollForSourceChanges parâmetro do seu funil
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 detalhes, consulte Configurações válidas para o PollForSourceChanges parâmetro.
-
Execute o get-pipeline comando para copiar a estrutura do pipeline em um JSON arquivo. 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 JSON arquivo em qualquer editor de texto sem formatação e edite o estágio de origem alterando o
PollForSourceChanges
parâmetro de um bucket chamadoamzn-s3-demo-source-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": "amzn-s3-demo-source-bucket",
"PollForSourceChanges": "false",
"S3ObjectKey": "index.zip" }, -
Se você estiver trabalhando com a estrutura do pipeline recuperada usando o get-pipeline comando, deverá remover as
metadata
linhas do JSON arquivo. 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 update-pipeline comando, especificando o JSON arquivo 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 os pipelines de votação com uma fonte e CloudTrail uma trilha do S3 (modelo)AWS CloudFormation
Use estas etapas para alterar o pipeline com uma origem do Amazon S3 da sondagem para a detecção de alterações baseada em eventos.
Para criar um pipeline baseado em eventos com o Amazon S3, edite o parâmetro PollForSourceChanges
de seu pipeline e adicione os seguintes recursos ao modelo:
-
EventBridge exige que todos os eventos do Amazon S3 sejam registrados. Você deve criar uma trilha, um bucket e uma política de bucket do AWS CloudTrail que o Amazon S3 possa usar para registrar em log os eventos que ocorrem. Para obter mais informações, consulte Registrar em log os eventos de dados para trilhas e Registrar em log eventos de gerenciamento para trilhas.
-
EventBridge regra e IAM função para permitir que esse evento inicie nosso pipeline.
Se você usa AWS CloudFormation para criar e gerenciar seus pipelines, seu modelo inclui conteúdo como o 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 EventBridge regra com o Amazon S3 como fonte e destino do evento e CodePipeline aplicar a política de permissões
-
No modelo, em
Resources
, use oAWS::IAM::Role
AWS CloudFormation recurso para configurar a IAM função que permite que seu evento inicie 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? Adicionar
AWS::IAM::Role
recursos permite AWS CloudFormation criar permissões para EventBridge. Esse recurso é adicionado à sua AWS CloudFormation pilha. -
-
Use o
AWS::Events::Rule
AWS CloudFormation recurso para adicionar uma EventBridge regra. Esse padrão de evento cria um evento que monitoraCopyObject
,PutObject
eCompleteMultipartUpload
no bucket de origem do Amazon S3. 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? Adicionar o
AWS::Events::Rule
recurso permite AWS CloudFormation criar o evento. Esse recurso é adicionado à sua AWS CloudFormation pilha. -
Adicione este trecho ao primeiro modelo para permitir a funcionalidade de pilha cruzada:
-
Salve o modelo atualizado no computador local e abra o AWS CloudFormation console.
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.
Clique em Executar.
Para editar o PollForSourceChanges parâmetro do seu funil
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 detalhes, consulte Configurações válidas para o PollForSourceChanges parâmetro.
-
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.
Para criar um segundo modelo para os recursos do seu pipeline do Amazon S3 CloudTrail
-
Em um modelo separado, em
Resources
, use oAWS::S3::Bucket
,AWS::S3::BucketPolicy
, eAWS::CloudTrail::Trail
AWS CloudFormation recursos para fornecer uma definição simples de bucket e uma trilha para CloudTrail.Por que estou fazendo essa alteração? Dado o limite atual de cinco trilhas por conta, a CloudTrail trilha deve ser criada e gerenciada separadamente. (Consulte Limites em AWS CloudTrail.) No entanto, você pode incluir vários buckets do Amazon S3 em uma única trilha, para que possa criar a trilha uma vez e adicionar buckets do Amazon S3 para outros pipelines, conforme for necessário. Cole o seguinte no arquivo do segundo modelo de exemplo.
Quando você usa AWS CloudFormation para criar esses recursos, seu pipeline é acionado quando os arquivos no seu repositório são criados ou atualizados.
nota
Não pare por aqui. Embora seu pipeline tenha sido criado, você deve criar um segundo AWS CloudFormation modelo para seu pipeline do Amazon S3. Se você não criar o segundo modelo, o pipeline não apresentará funcionalidades de detecção de alterações.
Migre os pipelines de pesquisa para uma ação de origem da GitHub versão 1 para as conexões
Você pode migrar uma ação de origem da 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 da GitHub versão 1.
Para um pipeline com uma ação de origem da GitHub versão 1, recomendamos modificar o pipeline para usar uma ação da GitHub versão 2 para que a detecção de alterações seja automatizada Conexões de código da AWS. Para obter mais informações sobre como trabalhar com as conexões, consulte GitHub conexões.
Crie uma conexão com GitHub (console)
Você pode usar o console para criar uma conexão com GitHub o.
Etapa 1: Substituir sua GitHub ação da versão 1
Use a página de edição do pipeline para substituir sua GitHub ação da versão 1 por uma GitHub ação da versão 2.
Para substituir sua GitHub ação de versão 1
-
Faça login no CodePipeline console.
-
Selecione o pipeline e escolha Editar. Selecione Editar estágio no estágio de origem. É exibida uma mensagem recomendando que você atualize a ação.
-
Em Provedor de ação, escolha GitHub (Versão 2).
-
Execute um destes procedimentos:
-
Em Conexão, se você ainda não tiver criado uma conexão com seu provedor, escolha Conectar GitHub a. Prossiga para a Etapa 2: Crie uma conexão com GitHub.
-
Em Conexão, se você já tiver criado uma conexão com seu provedor, escolha a conexão. Vá para a Etapa 3: Salvar a ação de origem para sua conexão.
-
Etapa 2: criar uma conexão com GitHub
Depois de escolher criar a conexão, a GitHub página Connect to é exibida.
Para criar uma conexão com GitHub
-
Nas configurações de GitHub conexão, o nome da conexão é mostrado em Nome da conexão.
Em GitHub Aplicativos, escolha uma instalação de aplicativo ou escolha Instalar um novo aplicativo para criar um.
nota
Você instala uma aplicação para todas as suas conexões com um provedor específico. Se você já instalou o GitHub aplicativo, escolha-o e pule esta etapa.
-
Se a página de autorização for GitHub exibida, faça login com suas credenciais e escolha continuar.
-
Na página de instalação do aplicativo, uma mensagem mostra que o AWS CodeStar aplicativo está tentando se conectar à sua GitHub conta.
nota
Você só instala o aplicativo uma vez para cada GitHub conta. 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 página Instalar AWS CodeStar, escolha Instalar.
-
Na GitHub página Connect to, a ID de conexão da sua nova instalação é exibida. Selecione Conectar.
Etapa 3: Salve sua ação GitHub de origem
Conclua as atualizações na página Editar ação para salvar a nova ação de origem.
Para salvar sua ação GitHub de origem
-
Em Nome do repositório, escolha o nome do repositório de terceiros. Em Ramificação, insira 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 Formato de artefato de saída, escolha o formato dos seus artefatos.
-
Para armazenar artefatos de saída da GitHub ação usando o método padrão, escolha CodePipelinedefault. A ação acessa os arquivos do GitHub repositório e armazena os artefatos em um ZIP arquivo no repositório de artefatos do pipeline.
-
Para armazenar um JSON arquivo que contém uma URL referência ao repositório para que as ações downstream possam executar comandos Git diretamente, escolha Clonagem completa. Essa opção só pode ser usada por ações CodeBuild posteriores.
Se você escolher essa opção, precisará atualizar as permissões para sua função de serviço CodeBuild do projeto, conforme mostrado emAdicione CodeBuild GitClone permissões para conexões com Bitbucket GitHub, GitHub Enterprise Server ou .com GitLab. Para um tutorial que mostra como usar a opção Clone completo, consulte Tutorial: use o clone completo com uma fonte de GitHub pipeline.
-
-
Em Artefatos de saída, é necessário 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 estágio. Escolha Salvar para fechar a página de edição do pipeline.
Crie uma conexão com GitHub (CLI)
Você pode usar o AWS Command Line Interface (AWS CLI) para criar uma conexão com GitHub.
Para fazer isso, use o comando create-connection.
Importante
Uma conexão criada por meio do AWS CLI ou AWS CloudFormation está no PENDING
status por padrão. Depois de criar uma conexão com o CLI ou AWS CloudFormation, use o console para editar a conexão e definir seu statusAVAILABLE
.
Para criar uma conexão com GitHub
-
Abra um terminal (Linux, macOS ou Unix) ou um prompt de comando (Windows). Use o AWS CLI para executar o create-connection comando, especificando
--provider-type
e--connection-name
para sua conexão. Neste exemplo, o nome do provedor de terceiros éGitHub
e o nome da conexão especificada éMyConnection
.aws codeconnections create-connection --provider-type GitHub --connection-name MyConnection
Se for bem-sucedido, esse comando retornará as ARN informações de conexão semelhantes às seguintes.
{ "ConnectionArn": "arn:aws:codeconnections:us-west-2:
account_id
:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f" } -
Use o console para concluir a conexão.
Migre os pipelines de pesquisa para uma ação de origem da GitHub versão 1 para webhooks
Você pode migrar seu pipeline para usar webhooks para detectar alterações no seu GitHub repositório de origem. Essa migração para webhooks é somente para a ação da GitHub versão 1.
-
Console: Migrar pipelines de pesquisa para webhooks (ações de origem da GitHub versão 1) (console)
-
CLI: Migre pipelines de pesquisa para webhooks (ações de origem da GitHub versão 1) () CLI
-
AWS CloudFormation: Atualize pipelines para eventos push (ações de origem da GitHub versão 1) (AWS CloudFormation modelo)
Importante
Ao criar CodePipeline webhooks, não use suas próprias credenciais nem reutilize o mesmo token secreto em vários webhooks. Para uma segurança ideal, gere um token secreto exclusivo para cada webhook que você criar. O token secreto é uma string arbitrária que você fornece, GitHub usada para computar e assinar as cargas do webhook enviadas para CodePipeline, a fim de proteger a integridade e a autenticidade das cargas do webhook. Usar suas próprias credenciais ou reutilizar o mesmo token em vários webhooks pode levar a vulnerabilidades de segurança.
Migrar pipelines de pesquisa para webhooks (ações de origem da GitHub versão 1) (console)
Para a ação de origem da GitHub versão 1, você pode usar o CodePipeline console para atualizar seu pipeline e usar webhooks para detectar alterações no seu repositório de GitHub origem.
Siga estas etapas para editar um pipeline que está usando enquetes (verificações periódicas) como alternativa. EventBridge Se você deseja criar um pipeline, consulte Crie um pipeline, estágios e ações.
Ao utilizar o console, o parâmetro PollForSourceChanges
para o seu pipeline é alterado. O GitHub webhook foi criado e registrado para você.
Para editar o estágio de origem do pipeline
-
Faça login no AWS Management Console e abra o CodePipeline console em http://console.aws.amazon.com/codesuite/codepipeline/home
. Os nomes de todos os pipelines associados à sua AWS conta 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 as opções de detecção de alterações e escolha Usar Amazon CloudWatch Events para iniciar automaticamente meu pipeline quando ocorrer uma alteração (recomendado).
Uma mensagem é exibida informando que CodePipeline cria um webhook GitHub para detectar alterações na fonte: AWS CodePipeline criará um webhook para você. Você pode recusar as opções abaixo. Selecione Atualizar. Além do webhook, CodePipeline cria o seguinte:
-
Um segredo, gerado aleatoriamente e usado para autorizar a conexão com o. GitHub
-
O webhookURL, gerado usando o endpoint público da região.
CodePipeline registra o webhook com. GitHub Isso se inscreve no URL para receber eventos do 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 sua ação, libere uma alteração usando o AWS CLI para confirmar uma alteração na fonte especificada no estágio de origem do pipeline.
Migre pipelines de pesquisa para webhooks (ações de origem da 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, estágios e ações.
Para criar um pipeline baseado em eventos, edite o parâmetro PollForSourceChanges
de seu pipeline e crie os seguintes recursos manualmente:
-
GitHub parâmetros de webhook e autorização
Para criar e registrar seu webhook
nota
Ao usar o CLI or AWS CloudFormation para criar um pipeline e adicionar um webhook, você deve 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 AWS CloudFormation pipeline CLI or é que o PollForSourceChanges
padrão seja true e não seja exibido na saída da estrutura do pipeline. Para obter mais informações sobre PollForSourceChanges padrões, consulte. Configurações válidas para o PollForSourceChanges parâmetro
-
Em um editor de texto, crie e salve um JSON arquivo para o webhook que você 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
webhook_json
JSON arquivo.aws codepipeline put-webhook --cli-input-json file://webhook_json.json --region "eu-central-1"
-
Na saída mostrada neste exemplo, os URL e ARN são retornados para um webhook chamado
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 marcação de recursos em CodePipeline, consulteMarcando atributos . -
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
Para editar o PollForSourceChanges parâmetro do seu funil
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 detalhes, consulte Configurações válidas para o PollForSourceChanges parâmetro.
-
Execute o get-pipeline comando para copiar a estrutura do pipeline em um JSON arquivo. 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 JSON arquivo em qualquer editor de texto simples e edite o estágio de origem alterando ou adicionando o parâmetro.
PollForSourceChanges
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 do pipeline recuperada usando o get-pipeline comando, deverá editar a estrutura no JSON arquivo removendo as
metadata
linhas do arquivo. Caso contrário, o comando update-pipeline não é capaz de utilizá-la. Remova a"metadata"
seção da estrutura do pipeline no JSON arquivo, incluindo os"updated"
campos:{ }
e o"created"
"pipelineARN"
, e.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 update-pipeline comando, especificando o JSON arquivo do pipeline, 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.
Atualize pipelines para eventos push (ações de origem da GitHub versão 1) (AWS CloudFormation modelo)
Siga estas etapas para atualizar seu pipeline (com uma GitHub fonte), desde verificações periódicas (enquetes) até a detecção de alterações baseada em eventos usando webhooks.
Para criar um pipeline orientado por eventos com AWS CodeCommit, você edita o PollForSourceChanges
parâmetro do seu pipeline e depois adiciona um recurso de GitHub webhook ao seu modelo.
Se você usa AWS CloudFormation para criar e gerenciar seus pipelines, seu modelo tem conteúdo como o 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 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 Secrets Manager para as GitHub credenciais do seu 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 simples em seu AWS CloudFormation modelo para armazenar suas credenciais.
Ao usar o CLI or AWS CloudFormation para criar um pipeline e adicionar um webhook, você deve 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 AWS CloudFormation pipeline CLI or é que o PollForSourceChanges
padrão seja true e não seja exibido na saída da estrutura do pipeline. Para obter mais informações sobre PollForSourceChanges padrões, consulte. Configurações válidas para o PollForSourceChanges parâmetro
-
No modelo, em
Resources
, adicione os parâmetros: -
Use o
AWS::CodePipeline::Webhook
AWS CloudFormation recurso 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
, certifique-se de que o usuário associado aoOAuthToken
possa definir os escopos necessários em GitHub. O token e o webhook exigem os seguintes GitHub escopos:-
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, GitHub retorna 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 AWS CloudFormation console.
-
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.
-
Clique em Executar.
Para editar o PollForSourceChanges parâmetro do seu funil
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 detalhes, consulte Configurações válidas para o PollForSourceChanges parâmetro.
-
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.
Quando você cria esses recursos com AWS CloudFormation, o webhook definido é criado no GitHub repositório especificado. Seu pipeline é acionado durante a confirmação.