Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Esegui la migrazione delle pipeline di sondaggi per utilizzare il rilevamento delle modifiche basato sugli eventi
AWS CodePipeline supporta la distribuzione completa e end-to-end continua, che include l'avvio della pipeline ogni volta che viene apportata una modifica al codice. Esistono due modi supportati per avviare la pipeline in caso di modifica del codice: rilevamento delle modifiche basato sugli eventi e polling. Consigliamo di utilizzare il rilevamento delle modifiche basato sugli eventi per le pipeline.
Utilizza le procedure qui incluse per migrare (aggiornare) le tue pipeline di polling al metodo di rilevamento delle modifiche basato sugli eventi per la tua pipeline.
Il metodo di rilevamento delle modifiche basato sugli eventi consigliato per le pipeline è determinato dall'origine della pipeline, ad esempio. CodeCommit In tal caso, ad esempio, la pipeline di sondaggio dovrebbe migrare al rilevamento delle modifiche basato sugli eventi con. EventBridge
Come migrare le pipeline elettorali
Per migrare le pipeline di sondaggi, determina le tue pipeline di sondaggio e quindi determina il metodo di rilevamento delle modifiche consigliato basato sugli eventi:
-
Utilizza la procedura descritta di seguito per determinare le tue pipeline di Visualizzazione delle pipeline di sondaggio nel proprio account sondaggi.
-
Nella tabella, individuate il tipo di sorgente della vostra pipeline, quindi scegliete la procedura con l'implementazione che desiderate utilizzare per migrare la pipeline di polling. Ogni sezione contiene diversi metodi di migrazione, come l'utilizzo di o. CLI AWS CloudFormation
Come migrare le pipeline nel metodo di rilevamento delle modifiche consigliato | ||
---|---|---|
Fonte della pipeline | Metodo di rilevamento consigliato basato sugli eventi | Procedure di migrazione |
AWS CodeCommit | EventBridge (consigliato). | Per informazioni, consulta Migra le pipeline di polling con una fonte CodeCommit . |
Amazon S3 | EventBridge e bucket abilitato per le notifiche degli eventi (consigliato). | Per informazioni, consulta Esegui la migrazione delle pipeline di polling con una fonte S3 abilitata per gli eventi. |
Amazon S3 | EventBridge e una AWS CloudTrail pista. | Per informazioni, consulta Migra le pipeline di polling con un sorgente e un trail S3 CloudTrail . |
GitHub versione 1 | Connessioni (consigliate) | Per informazioni, consulta Migra le pipeline di polling per un' GitHub azione sorgente della versione 1 verso le connessioni. |
GitHub versione 1 | Webhook | Per informazioni, consulta Migra le pipeline di polling per un'azione sorgente della GitHub versione 1 ai webhook. |
Importante
Per gli aggiornamenti della configurazione delle azioni della pipeline applicabili, ad esempio le pipeline con un'azione della GitHub versione 1, è necessario impostare esplicitamente il PollForSourceChanges
parametro su false all'interno della configurazione dell'azione Source per impedire il polling di una pipeline. Di conseguenza, è possibile configurare erroneamente una pipeline sia con il rilevamento delle modifiche basato sugli eventi che con il polling, ad esempio configurando una regola e omettendo anche il parametro. EventBridge PollForSourceChanges
Questa operazione si traduce in esecuzioni di pipeline duplicate e la pipeline viene conteggiata rispetto al limite sul numero totale di pipeline di polling che per impostazione predefinita è molto più basso delle pipeline basate su eventi. Per ulteriori informazioni, consulta Quote in AWS CodePipeline.
Visualizzazione delle pipeline di sondaggio nel proprio account
Come primo passaggio, utilizza uno dei seguenti script per determinare quali pipeline del tuo account sono configurate per il polling. Queste sono le pipeline da migrare al rilevamento delle modifiche basato sugli eventi.
Visualizzazione delle pipeline di sondaggio nel tuo account (script)
Segui questi passaggi per utilizzare uno script per determinare le pipeline del tuo account che utilizzano il polling.
-
Apri una finestra di terminale, quindi esegui una delle seguenti operazioni:
-
Eseguite il comando seguente per creare un nuovo script denominato PollingPipelinesExtractor.sh.
vi PollingPipelinesExtractor.sh
-
Per usare uno script python, esegui il comando seguente per creare un nuovo script python chiamato .py. PollingPipelinesExtractor
vi PollingPipelinesExtractor.py
-
-
Copia e incolla il seguente codice nello script. PollingPipelinesExtractor Esegui una di queste operazioni:
-
Copia e incolla il codice seguente nello 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."
-
Copia e incolla il codice seguente nello 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))
-
-
Per ogni regione in cui sono presenti pipeline, è necessario eseguire lo script per quella regione. Per eseguire lo script, effettuate una delle seguenti operazioni:
-
Eseguite il comando seguente per eseguire lo script denominato PollingPipelinesExtractor.sh. In questo esempio, la regione è us-west-2.
./PollingPipelinesExtractor.sh us-west-2
-
Per lo script python, esegui il comando seguente per eseguire lo script python denominato .py. PollingPipelinesExtractor In questo esempio, la regione è us-west-2.
python3 PollingPipelinesExtractor.py us-west-2
Nel seguente esempio di output dello script, la regione us-west-2 ha restituito un elenco di pipeline di polling e mostra l'ora dell'ultima esecuzione per ciascuna 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...%
Analizza l'output dello script e, per ogni pipeline nell'elenco, aggiorna la fonte di polling con il metodo di rilevamento delle modifiche basato sugli eventi consigliato.
Nota
Le pipeline di polling sono determinate dalla configurazione delle azioni della pipeline per il parametro.
PollForSourceChanges
Se nella configurazione di origine della pipeline ilPollForSourceChanges
parametro è omesso, per impostazione CodePipeline predefinita esegue il polling del repository per verificare la presenza di modifiche all'origine. Questo comportamento è lo stesso che se fossePollForSourceChanges
incluso e impostato su true. Per ulteriori informazioni, consulta i parametri di configurazione per l'azione di origine della pipeline, ad esempio i parametri di configurazione dell'azione sorgente di Amazon S3 in. Riferimento all'azione del codice sorgente di Amazon S3Tieni presente che questo script genera anche un file.csv contenente l'elenco delle pipeline di polling presenti nel tuo account e salva il file.csv nella cartella di lavoro corrente.
-
Migra le pipeline di polling con una fonte CodeCommit
Puoi migrare la tua pipeline di polling per utilizzarla per EventBridge rilevare le modifiche nel tuo repository di CodeCommit origine o nel tuo bucket di origine Amazon S3.
CodeCommit-- Per una pipeline con una CodeCommit fonte, modifica la pipeline in modo da automatizzare il rilevamento delle modifiche. EventBridge Scegliete uno dei seguenti metodi per implementare la migrazione:
Migrazione delle pipeline di polling (o sorgente Amazon CodeCommit S3) (console)
Puoi utilizzare la CodePipeline console per aggiornare la pipeline da utilizzare per EventBridge rilevare le modifiche nel tuo repository di CodeCommit origine o nel tuo bucket di origine Amazon S3.
Nota
Quando usi la console per modificare una pipeline con un repository di CodeCommit origine o un bucket di origine Amazon S3, la regola IAM e il ruolo vengono creati automaticamente. Se usi il AWS CLI per modificare la pipeline, devi creare tu stesso la regola e il EventBridge ruolo. IAM Per ulteriori informazioni, consulta CodeCommit azioni di origine e EventBridge.
Utilizza queste fasi per modificare una pipeline che utilizza controlli periodici. Se vuoi creare una pipeline, consulta Crea una pipeline, fasi e azioni.
Per modificare la fase di origine della pipeline
-
Accedi AWS Management Console e apri la CodePipeline console all'indirizzo http://console.aws.amazon.com/codesuite/codepipeline/home
. Vengono visualizzati i nomi di tutte le pipeline associate al tuo AWS account.
-
In Name (Nome), scegliere il nome della pipeline da modificare. Questa operazione apre una visualizzazione dettagliata della pipeline. compreso lo stato di ciascuna delle operazioni in ciascuna fase della pipeline.
-
Nella pagina dei dettagli della pipeline, scegliere Edit (Modifica).
-
In Edit stage (Modifica fase), scegli l'icona di modifica sull'operazione di origine.
-
Espandi le opzioni di rilevamento delle modifiche e scegli Usa CloudWatch eventi per avviare automaticamente la mia pipeline quando si verifica una modifica (scelta consigliata).
Viene visualizzato un messaggio che mostra la EventBridge regola da creare per questa pipeline. Scegli Aggiorna.
Se stai aggiornando una pipeline che ha una fonte Amazon S3, viene visualizzato il seguente messaggio. Scegli Aggiorna.
-
Al termine della modifica della pipeline, scegliere Save pipeline changes (Salva modifiche pipeline) per tornare alla pagina di riepilogo.
Un messaggio mostra il nome della EventBridge regola da creare per la pipeline. Seleziona Salva e continua.
-
Per testare la tua azione, rilascia una modifica utilizzando il AWS CLI comando per confermare una modifica alla fonte specificata nella fase di origine della pipeline.
Migra le pipeline di polling (source) () CodeCommit CLI
Segui questi passaggi per modificare una pipeline che utilizza il polling (controlli periodici) per utilizzare una EventBridge regola per avviare la pipeline. Se vuoi creare una pipeline, consulta Crea una pipeline, fasi e azioni.
Per creare una pipeline basata sugli eventi con CodeCommit, devi modificare il PollForSourceChanges
parametro della pipeline e quindi creare le seguenti risorse:
-
EventBridge evento
-
IAMruolo per consentire a questo evento di avviare la tua pipeline
Per modificare i parametri della pipeline PollForSourceChanges
Importante
Quando crei una pipeline con questo metodo, il parametro PollForSourceChanges
è preimpostato su "true" se non viene impostato esplicitamente su "false". Quando aggiungi il rilevamento delle modifiche basato su eventi, devi aggiungere il parametro all'output e impostarlo su "false" per disabilitare il polling. In caso contrario, la pipeline si avvia due volte per una singola modifica dell'origine. Per informazioni dettagliate, consultare Impostazioni valide per il PollForSourceChanges parametro.
-
Esegui il get-pipeline comando per copiare la struttura della pipeline in un JSON file. Ad esempio, per una pipeline denominata
MyFirstPipeline
, esegui il seguente comando:aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
Questo comando non restituisce alcun valore, ma nella directory in cui è stato eseguito dovrebbe comparire il file creato.
-
Aprite il JSON file in qualsiasi editor di testo semplice e modificate lo stadio di origine cambiando il
PollForSourceChanges
parametro infalse
, come mostrato in questo esempio.Perché occorre apportare questa modifica? La modifica di questo parametro in
false
disattiva i controlli periodici, in modo che sia possibile utilizzare solo il rilevamento delle modifiche basato su eventi."configuration": {
"PollForSourceChanges": "false",
"BranchName": "main", "RepositoryName": "MyTestRepo" }, -
Se state lavorando con la struttura della pipeline recuperata utilizzando il get-pipeline comando, rimuovete le righe dal
metadata
file. JSON In caso contrario, il comando update-pipeline non è in grado di utilizzarlo. Rimuovi le righe"metadata": { }
e i campi"created"
,"pipelineARN"
e"updated"
.Ad esempio, rimuovere dalla struttura le seguenti righe:
"metadata": { "pipelineArn": "arn:aws:codepipeline:
region
:account-ID
:pipeline-name
", "created": "date
", "updated": "date
" },Salvare il file.
-
Per applicare le modifiche, esegui il update-pipeline comando, specificando il file della pipeline: JSON
Importante
Assicurarsi di includere
file://
prima del nome del file. Questo è obbligatorio in questo comando.aws codepipeline update-pipeline --cli-input-json file://
pipeline.json
Questo comando restituisce l'intera struttura della pipeline modificata.
Nota
Il comando update-pipeline arresta la pipeline. Se è in corso di elaborazione una versione durante l'esecuzione del comando update-pipeline, tale elaborazione viene arrestata. Per elaborare tale versione utilizzando la pipeline aggiornata, devi avviare manualmente la pipeline. Utilizza il comando
start-pipeline-execution
per avviare manualmente la pipeline.
Per creare una EventBridge regola con CodeCommit come origine dell'evento e CodePipeline come destinazione
-
Aggiungi le autorizzazioni EventBridge da utilizzare per CodePipeline richiamare la regola. Per ulteriori informazioni, consulta Utilizzo delle politiche basate sulle risorse per Amazon. EventBridge
-
Usa l'esempio seguente per creare la politica di fiducia che consente di EventBridge assumere il ruolo di servizio. Denomina la policy di attendibilità
trustpolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Utilizza il seguente comando per creare il ruolo
Role-for-MyRule
e collegare la policy di attendibilità.aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
-
Create la politica di autorizzazioneJSON, come illustrato in questo esempio, per la pipeline denominata.
MyFirstPipeline
Denomina la policy delle autorizzazionipermissionspolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
-
Utilizza il comando seguente per collegare la policy delle autorizzazioni
CodePipeline-Permissions-Policy-for-EB
al ruoloRole-for-MyRule
.Perché occorre apportare questa modifica? L'aggiunta di questa politica al ruolo crea le autorizzazioni per. EventBridge
aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
-
-
Richiama il comando put-rule e includi i parametri
--name
,--event-pattern
e--role-arn
.Perché occorre apportare questa modifica? Questo comando consente a AWS CloudFormation di creare l'evento.
Il seguente comando di esempio crea una regola denominata
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" -
Per aggiungerlo CodePipeline come destinazione, chiamate il put-targets comando e includete i seguenti parametri:
-
Il parametro
--rule
viene utilizzato con ilrule_name
che hai creato utilizzando put-rule. -
Il parametro
--targets
viene utilizzato con l'Id
elenco della destinazione nell'elenco delle destinazioni e l'ARN
della pipeline di destinazione.
Il comando di esempio seguente specifica che per la regola denominata
MyCodeCommitRepoRule
, la destinazioneId
è composta dal numero uno, per indicare che in un elenco di destinazioni per la regola questa è la destinazione 1. Il comando di esempio specifica anche un esempio diARN
per la pipeline. La pipeline si avvia quando si verifica una modifica nel repository.aws events put-targets --rule MyCodeCommitRepoRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
-
Migra le pipeline di polling (CodeCommit source) (modello)AWS CloudFormation
Per creare una pipeline basata sugli eventi con AWS CodeCommit, modificate il PollForSourceChanges
parametro della pipeline e quindi aggiungete le seguenti risorse al modello:
-
EventBridge Una regola
-
Un IAM ruolo per la tua EventBridge regola
Se lo utilizzi AWS CloudFormation per creare e gestire le tue pipeline, il tuo modello include contenuti come i seguenti.
Nota
La proprietà Configuration
nella fase di origine chiamata PollForSourceChanges
. Se questa proprietà non è inclusa nel modello, allora PollForSourceChanges
è impostato su true
per impostazione predefinita.
Per aggiornare il AWS CloudFormation modello di pipeline e creare una regola EventBridge
-
Nel modello, sotto
Resources
, utilizza laAWS::IAM::Role
AWS CloudFormation risorsa per configurare il IAM ruolo che consente al tuo evento di avviare la pipeline. Questa voce crea un ruolo che utilizza due policy:-
La prima policy consente di assumere quel ruolo.
-
La seconda policy fornisce le autorizzazioni per avviare la pipeline.
Perché occorre apportare questa modifica? L'aggiunta della
AWS::IAM::Role
risorsa consente di AWS CloudFormation creare autorizzazioni per. EventBridge Questa risorsa viene aggiunta al tuo AWS CloudFormation stack. -
-
Nel modello, sotto
Resources
, usa laAWS::Events::Rule
AWS CloudFormation risorsa per aggiungere una EventBridge regola. Questo modello di eventi crea un evento che monitora le modifiche push al tuo repository. Quando EventBridge rileva una modifica dello stato del repository, la regola vieneStartPipelineExecution
richiamata sulla pipeline di destinazione.Perché sto apportando questa modifica? L'aggiunta della
AWS::Events::Rule
risorsa AWS CloudFormation consente di creare l'evento. Questa risorsa viene aggiunta al tuo AWS CloudFormation stack. -
Salva il modello aggiornato nel computer locale e quindi apri la console AWS CloudFormation .
-
Seleziona lo stack e scegli Create Change Set for Current Stack (Crea set di modifiche per lo stack corrente).
-
Carica il modello e quindi visualizza le modifiche elencate in AWS CloudFormation. Queste sono le modifiche da apportare allo stack. Le nuove risorse dovrebbero essere visibili nell'elenco.
-
Scegliere Execute (Esegui).
Per modificare i parametri della pipeline PollForSourceChanges
Importante
In molti casi, il parametro PollForSourceChanges
è preimpostato su "true" al momento della creazione di una pipeline. Quando aggiungi il rilevamento delle modifiche basato su eventi, devi aggiungere il parametro all'output e impostarlo su "false" per disabilitare il polling. In caso contrario, la pipeline si avvia due volte per una singola modifica dell'origine. Per informazioni dettagliate, consultare Impostazioni valide per il PollForSourceChanges parametro.
-
Nel modello, modifica
PollForSourceChanges
infalse
. Se non hai inclusoPollForSourceChanges
nella definizione della pipeline, aggiungilo e impostalo sufalse
.Perché occorre apportare questa modifica? La modifica di questo parametro in
false
disattiva i controlli periodici, in modo che sia possibile utilizzare solo il rilevamento delle modifiche basato su eventi.
Quando crei queste risorse con AWS CloudFormation, la pipeline viene attivata quando i file nel tuo repository vengono creati o aggiornati. Qui è riportato il frammento di modello finale:
Esegui la migrazione delle pipeline di polling con una fonte S3 abilitata per gli eventi
Per una pipeline con un'origine Amazon S3, modifica la pipeline in modo che il rilevamento delle modifiche sia automatizzato EventBridge tramite e con un bucket di origine abilitato per le notifiche degli eventi. Questo è il metodo consigliato se utilizzi CLI o AWS CloudFormation per migrare la tua pipeline.
Nota
Ciò include l'utilizzo di un bucket abilitato per le notifiche degli eventi, in cui non è necessario creare un percorso separato. CloudTrail Se utilizzi la console, vengono impostate automaticamente una regola e un CloudTrail percorso per gli eventi. Per questi passaggi, vediMigra le pipeline di polling con un sorgente e un trail S3 CloudTrail .
Migra le pipeline di polling con una fonte S3 abilitata per gli eventi () CLI
Segui questi passaggi per modificare una pipeline che utilizza il polling (controlli periodici) in cui utilizzare invece un evento. EventBridge Se vuoi creare una pipeline, consulta Crea una pipeline, fasi e azioni.
Per creare una pipeline basata sugli eventi con Amazon S3, devi modificare il PollForSourceChanges
parametro della pipeline e quindi creare le seguenti risorse:
-
EventBridge regola dell'evento
-
IAMruolo per consentire all' EventBridge evento di avviare la pipeline
Per creare una EventBridge regola con Amazon S3 come origine dell'evento e CodePipeline come destinazione e applicare la politica delle autorizzazioni
-
Concedi le autorizzazioni EventBridge da utilizzare per CodePipeline richiamare la regola. Per ulteriori informazioni, consulta Utilizzo delle politiche basate sulle risorse per Amazon. EventBridge
-
Usa l'esempio seguente per creare la politica di fiducia che EventBridge consenta di assumere il ruolo di servizio. Denominalo
trustpolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Utilizza il seguente comando per creare il ruolo
Role-for-MyRule
e collegare la policy di attendibilità.Perché occorre apportare questa modifica? L'aggiunta di questa politica di fiducia al ruolo crea le autorizzazioni per EventBridge.
aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
-
Crea la politica delle autorizzazioniJSON, come mostrato qui, per la pipeline denominata.
MyFirstPipeline
Denomina la policy delle autorizzazionipermissionspolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
-
Utilizza il comando seguente per collegare la nuova policy delle autorizzazioni
CodePipeline-Permissions-Policy-for-EB
al ruoloRole-for-MyRule
che hai creato.aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
-
-
Richiama il comando put-rule e includi i parametri
--name
,--event-pattern
e--role-arn
.Il seguente comando di esempio crea una regola denominata
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" -
Per aggiungere CodePipeline come destinazione, chiamate il put-targets comando e includete i parametri
--rule
and--targets
.Il comando seguente specifica che per la regola denominata
EnabledS3SourceRule
, la destinazioneId
è composta dal numero uno, per indicare che in un elenco di destinazioni per la regola questa è la destinazione 1. Il comando specifica anche un esempio diARN
per la pipeline. La pipeline si avvia quando si verifica una modifica nel repository.aws events put-targets --rule EnabledS3SourceRule --targets Id=codepipeline-AppPipeline,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
Per modificare il parametro della PollForSourceChanges pipeline
Importante
Quando crei una pipeline con questo metodo, il parametro PollForSourceChanges
è preimpostato su "true" se non viene impostato esplicitamente su "false". Quando aggiungi il rilevamento delle modifiche basato su eventi, devi aggiungere il parametro all'output e impostarlo su "false" per disabilitare il polling. In caso contrario, la pipeline si avvia due volte per una singola modifica dell'origine. Per informazioni dettagliate, consultare Impostazioni valide per il PollForSourceChanges parametro.
-
Esegui il get-pipeline comando per copiare la struttura della pipeline in un JSON file. Ad esempio, per una pipeline denominata
MyFirstPipeline
, esegui il seguente comando:aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
Questo comando non restituisce alcun valore, ma nella directory in cui è stato eseguito dovrebbe comparire il file creato.
-
Aprite il JSON file in qualsiasi editor di testo semplice e modificate lo stage sorgente cambiando il
PollForSourceChanges
parametro per un bucket denominatoamzn-s3-demo-source-bucket
tofalse
, come mostrato in questo esempio.Perché occorre apportare questa modifica? L'impostazione del parametro su
false
disattiva i controlli periodici, in modo che sia possibile utilizzare solo il rilevamento delle modifiche basato su eventi."configuration": { "S3Bucket": "amzn-s3-demo-source-bucket",
"PollForSourceChanges": "false",
"S3ObjectKey": "index.zip" }, -
Se state lavorando con la struttura della pipeline recuperata utilizzando il get-pipeline comando, dovete rimuovere le righe dal file.
metadata
JSON In caso contrario, il comando update-pipeline non è in grado di utilizzarlo. Rimuovi le righe"metadata": { }
e i campi"created"
,"pipelineARN"
e"updated"
.Ad esempio, rimuovere dalla struttura le seguenti righe:
"metadata": { "pipelineArn": "arn:aws:codepipeline:
region
:account-ID
:pipeline-name
", "created": "date
", "updated": "date
" },Salvare il file.
-
Per applicare le modifiche, eseguite il update-pipeline comando, specificando il file della pipeline: JSON
Importante
Assicurarsi di includere
file://
prima del nome del file. Questo è obbligatorio in questo comando.aws codepipeline update-pipeline --cli-input-json file://
pipeline.json
Questo comando restituisce l'intera struttura della pipeline modificata.
Nota
Il comando update-pipeline arresta la pipeline. Se è in corso di elaborazione una versione durante l'esecuzione del comando update-pipeline, tale elaborazione viene arrestata. Per elaborare tale versione utilizzando la pipeline aggiornata, devi avviare manualmente la pipeline. Utilizza il comando start-pipeline-execution per avviare manualmente la pipeline.
Migra le pipeline di polling con una fonte S3 abilitata per gli eventi (modello)AWS CloudFormation
Questa procedura è per una pipeline in cui gli eventi sono abilitati nel bucket di origine.
Utilizza questi passaggi per modificare la tua pipeline con una fonte Amazon S3, dal polling al rilevamento delle modifiche basato sugli eventi.
Per creare una pipeline basata sugli eventi con Amazon S3, devi modificare il PollForSourceChanges
parametro della pipeline e quindi aggiungere le seguenti risorse al modello:
-
EventBridge regola e IAM ruolo per consentire a questo evento di avviare la tua pipeline.
Se lo utilizzi AWS CloudFormation per creare e gestire le tue pipeline, il tuo modello include contenuti come i seguenti.
Nota
La proprietà Configuration
nella fase di origine chiamata PollForSourceChanges
. Se il modello non include questa proprietà, allora PollForSourceChanges
è impostato su true
per impostazione predefinita.
Per creare una EventBridge regola con Amazon S3 come origine dell'evento e CodePipeline come destinazione e applicare la politica delle autorizzazioni
-
Nel modello, sotto
Resources
, utilizza laAWS::IAM::Role
AWS CloudFormation risorsa per configurare il IAM ruolo che consente all'evento di avviare la pipeline. Questa voce crea un ruolo che utilizza due policy:-
La prima policy consente di assumere quel ruolo.
-
La seconda policy fornisce le autorizzazioni per avviare la pipeline.
Perché occorre apportare questa modifica? L'aggiunta di
AWS::IAM::Role
risorse consente AWS CloudFormation di creare autorizzazioni per. EventBridge Questa risorsa viene aggiunta al tuo AWS CloudFormation stack. -
-
Usa la
AWS::Events::Rule
AWS CloudFormation risorsa per aggiungere una EventBridge regola. Questo modello di eventi crea un evento che monitora la creazione o l'eliminazione di oggetti nel bucket di origine Amazon S3. Inoltre, include una destinazione della pipeline. Quando viene creato un oggetto, questa regola invocaStartPipelineExecution
la pipeline di destinazione.Perché occorre apportare questa modifica? L'aggiunta della
AWS::Events::Rule
risorsa consente di AWS CloudFormation creare l'evento. Questa risorsa viene aggiunta al tuo AWS CloudFormation stack. -
Salvare il modello aggiornato sul computer locale e aprire la console AWS CloudFormation .
-
Seleziona lo stack e scegli Create Change Set for Current Stack (Crea set di modifiche per lo stack corrente).
-
Caricare il modello aggiornato e quindi visualizzare le modifiche elencate in AWS CloudFormation. Queste sono le modifiche che verranno apportate allo stack. Le nuove risorse dovrebbero essere visibili nell'elenco.
-
Scegliere Execute (Esegui).
Per modificare i parametri della pipeline PollForSourceChanges
Importante
Quando crei una pipeline con questo metodo, il parametro PollForSourceChanges
è preimpostato su "true" se non viene impostato esplicitamente su "false". Quando aggiungi il rilevamento delle modifiche basato su eventi, devi aggiungere il parametro all'output e impostarlo su "false" per disabilitare il polling. In caso contrario, la pipeline si avvia due volte per una singola modifica dell'origine. Per informazioni dettagliate, consultare Impostazioni valide per il PollForSourceChanges parametro.
-
Nel modello, modifica
PollForSourceChanges
infalse
. Se non hai inclusoPollForSourceChanges
nella definizione della pipeline, aggiungilo e impostalo sufalse
.Perché occorre apportare questa modifica? La modifica di
PollForSourceChanges
infalse
disattiva i controlli periodici, in modo che sia possibile utilizzare solo il rilevamento delle modifiche basato su eventi.
Quando si utilizzano AWS CloudFormation per creare queste risorse, la pipeline viene attivata quando i file nel repository vengono creati o aggiornati.
Nota
Non è finita qui. Sebbene la pipeline sia stata creata, è necessario creare un secondo AWS CloudFormation modello per la pipeline Amazon S3. Se non crei il secondo modello, la pipeline non avrà la funzionalità di rilevamento delle modifiche.
Migra le pipeline di polling con un sorgente e un trail S3 CloudTrail
Per una pipeline con una fonte Amazon S3, modifica la pipeline in modo da automatizzare il rilevamento delle modifiche. EventBridge Scegli tra i seguenti metodi per implementare la migrazione:
Migra le pipeline di polling con una fonte S3 e trail () CloudTrail CLI
Segui questi passaggi per modificare una pipeline che utilizza il polling (controlli periodici) in cui utilizzare invece un evento. EventBridge Se vuoi creare una pipeline, consulta Crea una pipeline, fasi e azioni.
Per creare una pipeline basata sugli eventi con Amazon S3, devi modificare il PollForSourceChanges
parametro della pipeline e quindi creare le seguenti risorse:
-
AWS CloudTrail policy trail, bucket e bucket che Amazon S3 può utilizzare per registrare gli eventi.
-
EventBridge evento
-
IAMruolo per consentire all' EventBridge evento di avviare la tua pipeline
Per creare un AWS CloudTrail percorso e abilitare la registrazione
Per utilizzare il AWS CLI per creare una traccia, chiamate il create-trail comando, specificando:
-
Il nome del trail.
-
Il bucket nel quale hai già applicato le policy del bucket per AWS CloudTrail.
Per ulteriori informazioni, vedere Creazione di un percorso con l'interfaccia a riga di AWS comando.
-
Chiama il comando create-trail e includi i parametri
--name
e--s3-bucket-name
.Perché occorre apportare questa modifica? Questo crea il CloudTrail percorso richiesto per il tuo bucket di origine S3.
Il comando seguente utilizza
--name
e--s3-bucket-name
per creare un trail denominatomy-trail
e un bucket denominatoamzn-s3-demo-source-bucket
.aws cloudtrail create-trail --name my-trail --s3-bucket-name amzn-s3-demo-source-bucket
-
Chiama il comando start-logging e includi il parametro
--name
.Perché sto apportando questa modifica? Questo comando avvia la CloudTrail registrazione per il bucket di origine e invia gli eventi a. EventBridge
Esempio:
Il comando seguente utilizza
--name
per avviare la registrazione su un trail denominatomy-trail
.aws cloudtrail start-logging --name my-trail
-
Chiama il comando put-event-selectors e includi i parametri
--trail-name
e--event-selectors
. Usa i selettori di eventi per specificare che desideri che il tuo trail registri gli eventi di dati per il tuo bucket di origine e invii gli eventi alla regola. EventBridgePerché sto apportando questa modifica? Questo comando filtra gli eventi.
Esempio:
Il comando seguente utilizza
--trail-name
e--event-selectors
per specificare gli eventi dati per un bucket e un prefisso di origine denominatiamzn-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"] }] }]'
Per creare una EventBridge regola con Amazon S3 come origine dell'evento e CodePipeline come destinazione e applicare la politica delle autorizzazioni
-
Concedi le autorizzazioni EventBridge da utilizzare per CodePipeline richiamare la regola. Per ulteriori informazioni, consulta Utilizzo delle politiche basate sulle risorse per Amazon. EventBridge
-
Usa l'esempio seguente per creare la politica di fiducia che EventBridge consenta di assumere il ruolo di servizio. Denominalo
trustpolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
Utilizza il seguente comando per creare il ruolo
Role-for-MyRule
e collegare la policy di attendibilità.Perché occorre apportare questa modifica? L'aggiunta di questa politica di fiducia al ruolo crea le autorizzazioni per EventBridge.
aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
-
Crea la politica delle autorizzazioniJSON, come mostrato qui, per la pipeline denominata.
MyFirstPipeline
Denomina la policy delle autorizzazionipermissionspolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
-
Utilizza il comando seguente per collegare la nuova policy delle autorizzazioni
CodePipeline-Permissions-Policy-for-EB
al ruoloRole-for-MyRule
che hai creato.aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
-
-
Richiama il comando put-rule e includi i parametri
--name
,--event-pattern
e--role-arn
.Il seguente comando di esempio crea una regola denominata
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" -
Per aggiungere CodePipeline come destinazione, chiamate il put-targets comando e includete i parametri
--rule
and--targets
.Il comando seguente specifica che per la regola denominata
MyS3SourceRule
, la destinazioneId
è composta dal numero uno, per indicare che in un elenco di destinazioni per la regola questa è la destinazione 1. Il comando specifica anche un esempio diARN
per la pipeline. La pipeline si avvia quando si verifica una modifica nel repository.aws events put-targets --rule MyS3SourceRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
Per modificare il parametro della PollForSourceChanges pipeline
Importante
Quando crei una pipeline con questo metodo, il parametro PollForSourceChanges
è preimpostato su "true" se non viene impostato esplicitamente su "false". Quando aggiungi il rilevamento delle modifiche basato su eventi, devi aggiungere il parametro all'output e impostarlo su "false" per disabilitare il polling. In caso contrario, la pipeline si avvia due volte per una singola modifica dell'origine. Per informazioni dettagliate, consultare Impostazioni valide per il PollForSourceChanges parametro.
-
Esegui il get-pipeline comando per copiare la struttura della pipeline in un JSON file. Ad esempio, per una pipeline denominata
MyFirstPipeline
, esegui il seguente comando:aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
Questo comando non restituisce alcun valore, ma nella directory in cui è stato eseguito dovrebbe comparire il file creato.
-
Aprite il JSON file in qualsiasi editor di testo semplice e modificate lo stage sorgente cambiando il
PollForSourceChanges
parametro per un bucket denominatoamzn-s3-demo-source-bucket
tofalse
, come mostrato in questo esempio.Perché occorre apportare questa modifica? L'impostazione del parametro su
false
disattiva i controlli periodici, in modo che sia possibile utilizzare solo il rilevamento delle modifiche basato su eventi."configuration": { "S3Bucket": "amzn-s3-demo-source-bucket",
"PollForSourceChanges": "false",
"S3ObjectKey": "index.zip" }, -
Se state lavorando con la struttura della pipeline recuperata utilizzando il get-pipeline comando, dovete rimuovere le righe dal file.
metadata
JSON In caso contrario, il comando update-pipeline non è in grado di utilizzarlo. Rimuovi le righe"metadata": { }
e i campi"created"
,"pipelineARN"
e"updated"
.Ad esempio, rimuovere dalla struttura le seguenti righe:
"metadata": { "pipelineArn": "arn:aws:codepipeline:
region
:account-ID
:pipeline-name
", "created": "date
", "updated": "date
" },Salvare il file.
-
Per applicare le modifiche, eseguite il update-pipeline comando, specificando il file della pipeline: JSON
Importante
Assicurarsi di includere
file://
prima del nome del file. Questo è obbligatorio in questo comando.aws codepipeline update-pipeline --cli-input-json file://
pipeline.json
Questo comando restituisce l'intera struttura della pipeline modificata.
Nota
Il comando update-pipeline arresta la pipeline. Se è in corso di elaborazione una versione durante l'esecuzione del comando update-pipeline, tale elaborazione viene arrestata. Per elaborare tale versione utilizzando la pipeline aggiornata, devi avviare manualmente la pipeline. Utilizza il comando start-pipeline-execution per avviare manualmente la pipeline.
Migra le pipeline di polling con una sorgente e un trail S3 (modello) CloudTrail AWS CloudFormation
Utilizza questi passaggi per modificare la tua pipeline con una fonte Amazon S3, dal polling al rilevamento delle modifiche basato sugli eventi.
Per creare una pipeline basata sugli eventi con Amazon S3, devi modificare il PollForSourceChanges
parametro della pipeline e quindi aggiungere le seguenti risorse al modello:
-
EventBridge richiede la registrazione di tutti gli eventi di Amazon S3. È necessario creare una policy AWS CloudTrail trail, bucket e bucket che Amazon S3 possa utilizzare per registrare gli eventi che si verificano. Per ulteriori informazioni, consulta Registrazione degli eventi relativi ai dati per i sentieri e Registrazione degli eventi di gestione dei percorsi.
-
EventBridge regola e IAM ruolo per consentire a questo evento di avviare la nostra pipeline.
Se lo utilizzi AWS CloudFormation per creare e gestire le tue pipeline, il tuo modello include contenuti come i seguenti.
Nota
La proprietà Configuration
nella fase di origine chiamata PollForSourceChanges
. Se il modello non include questa proprietà, allora PollForSourceChanges
è impostato su true
per impostazione predefinita.
Per creare una EventBridge regola con Amazon S3 come origine dell'evento e CodePipeline come destinazione e applicare la politica delle autorizzazioni
-
Nel modello, sotto
Resources
, utilizza laAWS::IAM::Role
AWS CloudFormation risorsa per configurare il IAM ruolo che consente all'evento di avviare la pipeline. Questa voce crea un ruolo che utilizza due policy:-
La prima policy consente di assumere quel ruolo.
-
La seconda policy fornisce le autorizzazioni per avviare la pipeline.
Perché occorre apportare questa modifica? L'aggiunta di
AWS::IAM::Role
risorse consente AWS CloudFormation di creare autorizzazioni per. EventBridge Questa risorsa viene aggiunta al tuo AWS CloudFormation stack. -
-
Usa la
AWS::Events::Rule
AWS CloudFormation risorsa per aggiungere una EventBridge regola. Questo modello di eventi crea un evento che monitoraCopyObject
PutObject
eCompleteMultipartUpload
sul tuo bucket di origine Amazon S3. Inoltre, include una destinazione della pipeline. Quando si verificaCopyObject
,PutObject
oCompleteMultipartUpload
, questa regola richiamaStartPipelineExecution
sulla pipeline di destinazione.Perché occorre apportare questa modifica? L'aggiunta della
AWS::Events::Rule
risorsa consente di AWS CloudFormation creare l'evento. Questa risorsa viene aggiunta al tuo AWS CloudFormation stack. -
Aggiungere questo snippet di codice al primo modello per consentire la funzionalità tra stack:
-
Salva il modello aggiornato sul computer locale e apri la AWS CloudFormation console.
Seleziona lo stack e scegli Create Change Set for Current Stack (Crea set di modifiche per lo stack corrente).
Caricare il modello aggiornato e quindi visualizzare le modifiche elencate in AWS CloudFormation. Queste sono le modifiche che verranno apportate allo stack. Le nuove risorse dovrebbero essere visibili nell'elenco.
Scegliere Execute (Esegui).
Per modificare i parametri della PollForSourceChanges pipeline
Importante
Quando crei una pipeline con questo metodo, il parametro PollForSourceChanges
è preimpostato su "true" se non viene impostato esplicitamente su "false". Quando aggiungi il rilevamento delle modifiche basato su eventi, devi aggiungere il parametro all'output e impostarlo su "false" per disabilitare il polling. In caso contrario, la pipeline si avvia due volte per una singola modifica dell'origine. Per informazioni dettagliate, consultare Impostazioni valide per il PollForSourceChanges parametro.
-
Nel modello, modifica
PollForSourceChanges
infalse
. Se non hai inclusoPollForSourceChanges
nella definizione della pipeline, aggiungilo e impostalo sufalse
.Perché occorre apportare questa modifica? La modifica di
PollForSourceChanges
infalse
disattiva i controlli periodici, in modo che sia possibile utilizzare solo il rilevamento delle modifiche basato su eventi.
Per creare un secondo modello per le risorse della tua pipeline Amazon S3 CloudTrail
-
In un modello separato, sotto
Resources
, utilizza leAWS::CloudTrail::Trail
AWS CloudFormation risorseAWS::S3::Bucket
AWS::S3::BucketPolicy
, e per fornire una definizione e un percorso semplici per il bucket. CloudTrailPerché sto apportando questa modifica? Dato l'attuale limite di cinque percorsi per account, il CloudTrail percorso deve essere creato e gestito separatamente. (Vedi Limiti in AWS CloudTrail.) Tuttavia, puoi includere molti bucket Amazon S3 in un singolo trail, in modo da poter creare il trail una sola volta e poi aggiungere bucket Amazon S3 per altre pipeline, se necessario. Incolla quanto segue nel secondo file di modello di esempio.
Quando utilizzi AWS CloudFormation per creare queste risorse, la tua pipeline viene attivata quando i file nel tuo repository vengono creati o aggiornati.
Nota
Non è finita qui. Sebbene la pipeline sia stata creata, è necessario creare un secondo AWS CloudFormation modello per la pipeline Amazon S3. Se non crei il secondo modello, la pipeline non avrà la funzionalità di rilevamento delle modifiche.
Migra le pipeline di polling per un' GitHub azione sorgente della versione 1 verso le connessioni
Puoi migrare un'azione di origine della GitHub versione 1 per utilizzare le connessioni per il tuo repository esterno. Questo è il metodo di rilevamento delle modifiche consigliato per le pipeline con un'azione di origine della GitHub versione 1.
Per una pipeline con un'azione di origine della GitHub versione 1, consigliamo di modificare la pipeline per utilizzare un'azione della GitHub versione 2 in modo da automatizzare il rilevamento delle modifiche. AWS CodeConnections Per ulteriori informazioni sull'utilizzo delle connessioni, vedere. GitHub connessioni
Creare una connessione a GitHub (console)
È possibile utilizzare la console per creare una connessione a GitHub.
Passaggio 1: Sostituisci l' GitHub azione della versione 1
Utilizza la pagina di modifica della pipeline per sostituire l'azione della versione 1 con GitHub un'azione della versione 2 GitHub .
Per sostituire l'azione della versione 1 GitHub
-
Accedi alla CodePipeline console.
-
Scegli la tua pipeline e scegli Modifica. Scegli Modifica fase nella fase di origine. Viene visualizzato un messaggio che consiglia di aggiornare l'azione.
-
Nel provider Action, scegli GitHub (Versione 2).
-
Esegui una di queste operazioni:
-
In Connessione, se non hai già creato una connessione con il tuo provider, scegli Connetti a GitHub. Procedi al Passaggio 2: Crea una connessione a GitHub.
-
In Connessione, se hai già creato una connessione al tuo provider, scegli la connessione. Procedi al passaggio 3: Salva l'azione di origine per la tua connessione.
-
Passaggio 2: Creare una connessione a GitHub
Dopo aver scelto di creare la connessione, viene GitHub visualizzata la pagina Connetti a.
Per creare una connessione a GitHub
-
Nelle impostazioni di GitHub connessione, il nome della connessione viene visualizzato in Nome connessione.
In GitHub App, scegli l'installazione di un'app o scegli Installa una nuova app per crearne una.
Nota
È sufficiente installare una sola app per tutte le connessioni a un provider specifico. Se hai già installato l' GitHub app, sceglila e salta questo passaggio.
-
Se GitHub viene visualizzata la pagina di autorizzazione, accedi con le tue credenziali e scegli di continuare.
-
Nella pagina di installazione dell'app, un messaggio indica che l' AWS CodeStar app sta tentando di connettersi al tuo GitHub account.
Nota
L'app viene installata una sola volta per ogni GitHub account. Se hai già installato l'app, puoi scegliere Configure (Configura) per passare a una pagina di modifica per l'installazione dell'app oppure è possibile utilizzare il pulsante Indietro per tornare alla console.
-
Nella AWS CodeStar pagina di installazione, scegli Installa.
-
Nella GitHub pagina Connect to, viene visualizzato l'ID di connessione per la nuova installazione. Scegli Connetti.
Passaggio 3: Salva l'azione GitHub sorgente
Completa gli aggiornamenti nella pagina Modifica azione per salvare la nuova azione sorgente.
Per salvare l'azione GitHub sorgente
-
In Repository, inserisci il nome del tuo repository di terze parti. In Branch, inserisci il ramo in cui desideri che la pipeline rilevi le modifiche all'origine.
Nota
In Repository, digita
owner-name/repository-name
come mostrato in questo esempio:my-account/my-repository
-
In Formato di output degli artefatti, scegliete il formato per gli artefatti.
-
Per memorizzare gli artefatti di output derivanti dall' GitHub azione utilizzando il metodo predefinito, scegliete predefinito. CodePipeline L'azione accede ai file dal GitHub repository e memorizza gli artefatti in un ZIP file nel Pipeline Artifact Store.
-
Per archiviare un JSON file che contiene un URL riferimento al repository in modo che le azioni a valle possano eseguire direttamente i comandi Git, scegli Full clone. Questa opzione può essere utilizzata solo dalle CodeBuild azioni a valle.
Se scegli questa opzione, dovrai aggiornare le autorizzazioni per il tuo ruolo di CodeBuild Project Service come mostrato in. Aggiungi le autorizzazioni per le connessioni a Bitbucket, Enterprise Server o.com CodeBuild GitClone GitHub GitHub GitLab Per un tutorial che mostra come usare l'opzione Full clone, consulta. Tutorial: usa il clone completo con una sorgente di GitHub pipeline
-
-
In Output Artifacts, puoi mantenere il nome dell'artefatto di output per questa azione, ad esempio.
SourceArtifact
Scegliete Fine per chiudere la pagina Modifica azione. -
Scegliete Fine per chiudere la pagina di modifica dello stage. Scegliete Salva per chiudere la pagina di modifica della pipeline.
Crea una connessione a GitHub () CLI
È possibile utilizzare AWS Command Line Interface (AWS CLI) per creare una connessione a GitHub.
Per farlo, utilizzare il comando create-connection.
Importante
Per impostazione predefinita, una connessione creata tramite AWS CLI o AWS CloudFormation è in PENDING
stato. Dopo aver creato una connessione con CLI o AWS CloudFormation, utilizza la console per modificare la connessione e definirne lo statoAVAILABLE
.
Per creare una connessione a GitHub
-
Apri un terminale (Linux, macOS o Unix) o prompt dei comandi (Windows). Utilizzate il AWS CLI per eseguire il create-connection comando, specificando
--provider-type
e--connection-name
per la connessione. In questo esempio, il nome del provider di terze parti èGitHub
e il nome della connessione specificato èMyConnection
.aws codeconnections create-connection --provider-type GitHub --connection-name MyConnection
In caso di successo, questo comando restituisce le ARN informazioni di connessione simili alle seguenti.
{ "ConnectionArn": "arn:aws:codeconnections:us-west-2:
account_id
:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f" } -
Utilizzare la console per completare la connessione.
Migra le pipeline di polling per un'azione sorgente della GitHub versione 1 ai webhook
Puoi migrare la tua pipeline per utilizzare i webhook per rilevare le modifiche nel tuo repository di origine. GitHub Questa migrazione ai webhook riguarda solo l'azione della versione 1. GitHub
-
Console: Migra le pipeline di polling ai webhook (azioni di origine della versione 1) (console) GitHub
-
CLI: Migra le pipeline di polling ai webhook (azioni di origine della GitHub versione 1) () CLI
-
AWS CloudFormation: Aggiorna le pipeline per gli eventi push (azioni di origine della GitHub versione 1) (modello)AWS CloudFormation
Importante
Durante la creazione di CodePipeline webhook, non utilizzare le proprie credenziali né riutilizzare lo stesso token segreto su più webhook. Per una sicurezza ottimale, genera un token segreto unico per ogni webhook creato. Il token segreto è una stringa arbitraria fornita dall'utente, che viene GitHub utilizzata per calcolare e firmare i payload del webhook a cui vengono inviati CodePipeline, per proteggere l'integrità e l'autenticità dei payload del webhook. L'utilizzo delle proprie credenziali o il riutilizzo dello stesso token su più webhook può portare a vulnerabilità di sicurezza.
Migra le pipeline di polling ai webhook (azioni di origine della versione 1) (console) GitHub
Per l'azione sorgente della GitHub versione 1, puoi utilizzare la CodePipeline console per aggiornare la pipeline e utilizzare i webhook per rilevare le modifiche nel tuo repository di origine. GitHub
Segui questi passaggi per modificare una pipeline che utilizza invece il polling (controlli periodici). EventBridge Se vuoi creare una pipeline, consulta Crea una pipeline, fasi e azioni.
Quando utilizzi la console, il parametro PollForSourceChanges
per la pipeline viene modificato per te. Il GitHub webhook viene creato e registrato automaticamente.
Per modificare la fase di origine della pipeline
-
Accedi AWS Management Console e apri la CodePipeline console all'indirizzo http://console.aws.amazon.com/codesuite/codepipeline/home
. Vengono visualizzati i nomi di tutte le pipeline associate al tuo AWS account.
-
In Name (Nome), scegliere il nome della pipeline da modificare. Questa operazione apre una visualizzazione dettagliata della pipeline. compreso lo stato di ciascuna delle operazioni in ciascuna fase della pipeline.
-
Nella pagina dei dettagli della pipeline, scegliere Edit (Modifica).
-
In Edit stage (Modifica fase), scegli l'icona di modifica sull'operazione di origine.
-
Espandi le opzioni di rilevamento delle modifiche e scegli Usa Amazon CloudWatch Events per avviare automaticamente la mia pipeline quando si verifica una modifica (consigliato).
Viene visualizzato un messaggio che avvisa che CodePipeline crea un webhook GitHub per rilevare le modifiche all'origine: AWS CodePipeline creerà un webhook per te. È possibile effettuare l'opt-out nelle opzioni riportate di seguito. Scegli Aggiorna. Oltre al webhook, CodePipeline crea quanto segue:
-
Un segreto, generato casualmente e utilizzato per autorizzare la connessione a. GitHub
-
Il webhookURL, generato utilizzando l'endpoint pubblico della Regione.
CodePipeline registra il webhook con. GitHub Questo consente di sottoscrivere gli eventi del URL repository.
-
-
Al termine della modifica della pipeline, scegliere Save pipeline changes (Salva modifiche pipeline) per tornare alla pagina di riepilogo.
Viene visualizzato un messaggio con il nome del webhook da creare per la pipeline. Seleziona Salva e continua.
-
Per testare la tua azione, rilascia una modifica utilizzando AWS CLI per confermare una modifica alla fonte specificata nella fase di origine della pipeline.
Migra le pipeline di polling ai webhook (azioni di origine della GitHub versione 1) () CLI
Segui queste fasi per modificare una pipeline che utilizza polling (controlli periodici) in modo da usare invece un webhook. Se vuoi creare una pipeline, consulta Crea una pipeline, fasi e azioni.
Per creare una pipeline basata su eventi, dovrai modificare il parametro PollForSourceChanges
della pipeline e quindi creare le seguenti risorse manualmente:
-
GitHub webhook e parametri di autorizzazione
Per creare e registrare il webhook
Nota
Quando si utilizza CLI o AWS CloudFormation per creare una pipeline e aggiungere un webhook, è necessario disabilitare i controlli periodici. Per disabilitare i controlli periodici, devi aggiungere esplicitamente il parametro PollForSourceChanges
e impostarlo su "false", come descritto nella procedura finale di seguito. Altrimenti, l'impostazione predefinita per una AWS CloudFormation pipeline CLI or è true e non viene visualizzata nell'output della struttura della tubazione. PollForSourceChanges
Per ulteriori informazioni sui PollForSourceChanges valori predefiniti, vedere. Impostazioni valide per il PollForSourceChanges parametro
-
In un editor di testo, crea e salva un JSON file per il webhook che desideri creare. Utilizza questo file di esempio per un webhook denominato
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
" } } } -
Chiama il comando put-webhook e includi i parametri
--cli-input
e--region
.Il seguente comando di esempio crea un webhook con il
webhook_json
JSON file.aws codepipeline put-webhook --cli-input-json file://webhook_json.json --region "eu-central-1"
-
Nell'output mostrato in questo esempio, ARN vengono restituiti URL e per un webhook denominato.
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" }] }In questo esempio vengono aggiunte tag al webhook, inclusa la chiave di tag
Project
e il valoreProjectA
al webhook. Per ulteriori informazioni sull'etichettatura delle risorse CodePipeline, consulta. Applicazione di tag alle risorse -
Chiama il comando register-webhook-with-third-party e includi il parametro
--webhook-name
.Il comando di esempio seguente registra un webhook denominato
my-webhook
.aws codepipeline register-webhook-with-third-party --webhook-name my-webhook
Per modificare il parametro della pipeline PollForSourceChanges
Importante
Quando crei una pipeline con questo metodo, il parametro PollForSourceChanges
è preimpostato su "true" se non viene impostato esplicitamente su "false". Quando aggiungi il rilevamento delle modifiche basato su eventi, devi aggiungere il parametro all'output e impostarlo su "false" per disabilitare il polling. In caso contrario, la pipeline si avvia due volte per una singola modifica dell'origine. Per informazioni dettagliate, consultare Impostazioni valide per il PollForSourceChanges parametro.
-
Esegui il get-pipeline comando per copiare la struttura della pipeline in un JSON file. Ad esempio, per una pipeline denominata
MyFirstPipeline
, digitare il comando seguente:aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
Questo comando non restituisce alcun valore, ma nella directory in cui è stato eseguito dovrebbe comparire il file creato.
-
Aprite il JSON file in qualsiasi editor di testo semplice e modificate la fase sorgente modificando o aggiungendo il parametro.
PollForSourceChanges
In questo esempio, per un repository denominatoUserGitHubRepo
, il parametro è impostato sufalse
.Perché sto apportando questa modifica? La modifica di questo parametro disattiva i controlli periodici, quindi è possibile utilizzare solo il rilevamento delle modifiche basato sugli eventi.
"configuration": { "Owner": "
name
", "Repo": "UserGitHubRepo","PollForSourceChanges": "false",
"Branch": "main", "OAuthToken": "****" }, -
Se state lavorando con la struttura della pipeline recuperata utilizzando il get-pipeline comando, dovete modificare la struttura nel JSON file rimuovendo
metadata
le righe dal file. In caso contrario, il comando update-pipeline non è in grado di utilizzarlo. Rimuovete la"metadata"
sezione dalla struttura della tubazione nel JSON file, inclusi i campi:{ }
e"created"
"pipelineARN"
, and."updated"
Ad esempio, rimuovere dalla struttura le seguenti righe:
"metadata": { "pipelineArn": "arn:aws:codepipeline:
region
:account-ID
:pipeline-name
", "created": "date
", "updated": "date
" },Salvare il file.
-
Per applicare le modifiche, esegui il update-pipeline comando, specificando il JSON file della pipeline, simile al seguente:
Importante
Assicurarsi di includere
file://
prima del nome del file. Questo è obbligatorio in questo comando.aws codepipeline update-pipeline --cli-input-json file://
pipeline.json
Questo comando restituisce l'intera struttura della pipeline modificata.
Nota
Il comando update-pipeline arresta la pipeline. Se è in corso di elaborazione una versione durante l'esecuzione del comando update-pipeline, tale elaborazione viene arrestata. Per elaborare tale versione utilizzando la pipeline aggiornata, devi avviare manualmente la pipeline. Utilizza il comando start-pipeline-execution per avviare manualmente la pipeline.
Aggiorna le pipeline per gli eventi push (azioni di origine della GitHub versione 1) (modello)AWS CloudFormation
Segui questi passaggi per aggiornare la pipeline (con una GitHub fonte) dai controlli periodici (polling) al rilevamento delle modifiche basato sugli eventi tramite webhook.
Per creare una pipeline basata sugli eventi con AWS CodeCommit, devi modificare il PollForSourceChanges
parametro della pipeline e quindi aggiungere una risorsa webhook al tuo modello. GitHub
Se lo utilizzi AWS CloudFormation per creare e gestire le tue pipeline, il tuo modello ha contenuti come i seguenti.
Nota
Nota la proprietà di configurazione PollForSourceChanges
nella fase di origine. Se il modello non include questa proprietà, allora PollForSourceChanges
è impostato su true
per impostazione predefinita.
Per aggiungere parametri e creare un webhook nel modello
Ti consigliamo vivamente di AWS Secrets Manager utilizzarlo per archiviare le tue credenziali. Se si utilizza Secrets Manager, è necessario avere già configurato e archiviato i parametri segreti in Secrets Manager. Questo esempio utilizza riferimenti dinamici a Secrets Manager per GitHub le credenziali del webhook. Per ulteriori informazioni, consulta Utilizzo di riferimenti dinamici per specificare valori di modello.
Importante
Quando si passano parametri segreti, non immettere il valore direttamente nel modello. Il valore viene reso come testo in chiaro ed è quindi leggibile. Per motivi di sicurezza, non utilizzate testo semplice nel AWS CloudFormation modello per memorizzare le credenziali.
Quando si utilizza CLI o AWS CloudFormation per creare una pipeline e aggiungere un webhook, è necessario disabilitare i controlli periodici.
Nota
Per disabilitare i controlli periodici, devi aggiungere esplicitamente il parametro PollForSourceChanges
e impostarlo su "false", come descritto nella procedura finale di seguito. Altrimenti, l'impostazione predefinita per una AWS CloudFormation pipeline CLI or è true e non viene visualizzata nell'output della struttura della tubazione. PollForSourceChanges
Per ulteriori informazioni sui PollForSourceChanges valori predefiniti, vedere. Impostazioni valide per il PollForSourceChanges parametro
-
Nel modello, in
Resources
, aggiungi i parametri: -
Usa la
AWS::CodePipeline::Webhook
AWS CloudFormation risorsa per aggiungere un webhook.Nota
Il
TargetAction
specificato deve corrispondere alla proprietàName
dell'operazione di origine definita nella pipeline.Se
RegisterWithThirdParty
è impostato sutrue
, assicurati che l'utente associato aOAuthToken
possa impostare gli ambiti richiesti. GitHub Il token e il webhook richiedono i seguenti ambiti: GitHub-
repo
- utilizzato per il controllo completo per leggere ed estrarre artefatti da repository pubblici e privati in una pipeline. -
admin:repo_hook
- utilizzato per il controllo completo di hook di repository.
Altrimenti, GitHub restituisce un 404. Per ulteriori informazioni sulla restituzione di un 404, consulta https://help.github.com/articles/about-webhooks
. -
-
Salva il modello aggiornato sul computer locale, quindi apri la AWS CloudFormation console.
-
Seleziona lo stack e scegli Create Change Set for Current Stack (Crea set di modifiche per lo stack corrente).
-
Carica il modello e quindi visualizza le modifiche elencate in AWS CloudFormation. Queste sono le modifiche da apportare allo stack. Le nuove risorse dovrebbero essere visibili nell'elenco.
-
Scegliere Execute (Esegui).
Per modificare i parametri della PollForSourceChanges pipeline
Importante
Quando crei una pipeline con questo metodo, il parametro PollForSourceChanges
è preimpostato su "true" se non viene impostato esplicitamente su "false". Quando aggiungi il rilevamento delle modifiche basato su eventi, devi aggiungere il parametro all'output e impostarlo su "false" per disabilitare il polling. In caso contrario, la pipeline si avvia due volte per una singola modifica dell'origine. Per informazioni dettagliate, consultare Impostazioni valide per il PollForSourceChanges parametro.
-
Nel modello, modifica
PollForSourceChanges
infalse
. Se non hai inclusoPollForSourceChanges
nella definizione della pipeline, aggiungilo e impostalo su "false".Perché sto apportando questa modifica? La modifica di questo parametro in
false
disattiva i controlli periodici, in modo che sia possibile utilizzare solo il rilevamento delle modifiche basato su eventi.
Quando si creano queste risorse con AWS CloudFormation, il webhook definito viene creato nel GitHub repository specificato. La pipeline si attiva alla conferma.