Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Migrieren Sie Polling-Pipelines, um ereignisbasierte Änderungserkennung zu verwenden
AWS CodePipeline unterstützt eine vollständige, durchgängige kontinuierliche Bereitstellung. Dazu gehört auch, dass Ihre Pipeline bei jeder Codeänderung gestartet wird. Es gibt zwei unterstützte Methoden, um Ihre Pipeline bei einer Codeänderung zu starten: ereignisbasierte Änderungserkennung und Polling. Wir empfehlen die ereignisbasierte Änderungserkennung für Pipelines.
Verwenden Sie die hier aufgeführten Verfahren, um Ihre Polling-Pipelines auf die ereignisbasierte Änderungserkennungsmethode für Ihre Pipeline zu migrieren (zu aktualisieren).
Die empfohlene Methode zur ereignisbasierten Änderungserkennung für Pipelines wird von der Pipeline-Quelle bestimmt, z. B. CodeCommit In diesem Fall müsste die Polling-Pipeline beispielsweise zur ereignisbasierten Änderungserkennung mit migrieren. EventBridge
Wie migriert man Polling-Pipelines
Um Polling-Pipelines zu migrieren, ermitteln Sie Ihre Polling-Pipelines und legen Sie dann die empfohlene Methode zur ereignisbasierten Änderungserkennung fest:
-
Verwenden Sie die Schritte unter, um Ihre Polling-Pipelines Polling-Pipelines in Ihrem Konto anzeigen zu ermitteln.
-
Suchen Sie in der Tabelle Ihren Pipeline-Quelltyp und wählen Sie dann das Verfahren mit der Implementierung aus, das Sie für die Migration Ihrer Polling-Pipeline verwenden möchten. Jeder Abschnitt enthält mehrere Methoden für die Migration, z. B. die Verwendung der CLI oder CloudFormation.
| Migrieren von Pipelines zur empfohlenen Methode zur Änderungserkennung | ||
|---|---|---|
| Quelle der Pipeline | Empfohlene ereignisbasierte Erkennungsmethode | Verfahren zur Migration |
| AWS CodeCommit | EventBridge (empfohlen). | Siehe Migrieren Sie Polling-Pipelines mit einer Quelle CodeCommit. |
| Amazon S3 | EventBridge und Bucket für Ereignisbenachrichtigungen aktiviert (empfohlen). | Siehe Migrieren Sie Polling-Pipelines mit einer S3-Quelle, die für Ereignisse aktiviert ist. |
| Amazon S3 | EventBridge und ein AWS CloudTrail Trail. | Siehe Migrieren Sie Polling-Pipelines mit einer S3-Quelle und einem S3-Trail CloudTrail. |
| GitHub (per GitHub App) | Verbindungen (empfohlen) | Siehe Migrieren Sie Polling-Pipelines für eine GitHub Quellaktion (über die OAuth-App) zu Verbindungen. |
| GitHub (über die OAuth-App) | Webhooks | Siehe Migrieren Sie Polling-Pipelines für eine GitHub Quellaktion (über die OAuth-App) zu Webhooks. |
Wichtig
Für entsprechende Aktualisierungen der Pipeline-Aktionskonfiguration, z. B. Pipelines mit einer Aktion GitHub (über die OAuth-App), müssen Sie den PollForSourceChanges Parameter in der Konfiguration Ihrer Quellaktion explizit auf false setzen, um zu verhindern, dass eine Pipeline Abfragen durchführt. Daher ist es möglich, eine Pipeline fälschlicherweise sowohl mit ereignisbasierter Änderungserkennung als auch mit Polling zu konfigurieren, indem Sie beispielsweise eine Regel konfigurieren und den Parameter weglassen. EventBridge PollForSourceChanges Dies führt zu duplizierten Pipelineausführungen, wobei die Pipeline bei der maximalen Gesamtzahl von Abfrage-Pipelines berücksichtigt wird. Standardmäßig handelt es sich hierbei um einen sehr viel niedrigeren Wert als für ereignisbasierte Pipelines. Weitere Informationen finden Sie unter Kontingente in AWS CodePipeline.
Polling-Pipelines in Ihrem Konto anzeigen
Verwenden Sie als ersten Schritt eines der folgenden Skripts, um zu ermitteln, welche Pipelines in Ihrem Konto für Polling konfiguriert sind. Dies sind die Pipelines, die zur ereignisbasierten Änderungserkennung migriert werden müssen.
Polling-Pipelines in Ihrem Konto anzeigen (Skript)
Gehen Sie wie folgt vor, um mithilfe eines Skripts Pipelines in Ihrem Konto zu ermitteln, die Polling verwenden.
-
Öffnen Sie ein Terminalfenster und führen Sie dann einen der folgenden Schritte aus:
-
Führen Sie den folgenden Befehl aus, um ein neues Skript mit dem Namen zu erstellen PollingPipelinesExtractor.sh.
vi PollingPipelinesExtractor.sh -
Um ein Python-Skript zu verwenden, führen Sie den folgenden Befehl aus, um ein neues Python-Skript mit dem Namen zu erstellen PollingPipelinesExtractor.py.
vi PollingPipelinesExtractor.py
-
-
Kopieren Sie den folgenden Code und fügen Sie ihn in das PollingPipelinesExtractor Skript ein. Führen Sie eine der folgenden Aktionen aus:
-
Kopieren Sie den folgenden Code und fügen Sie ihn in das PollingPipelinesExtractor.sh Skript ein.
#!/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." -
Kopieren Sie den folgenden Code und fügen Sie ihn in das PollingPipelinesExtractor.py Skript ein.
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))
-
-
Für jede Region, in der Sie Pipelines haben, müssen Sie das Skript für diese Region ausführen. Gehen Sie wie folgt vor, um das Skript auszuführen:
-
Führen Sie den folgenden Befehl aus, um das angegebene Skript auszuführen PollingPipelinesExtractor.sh. In diesem Beispiel ist die Region us-west-2.
./PollingPipelinesExtractor.sh us-west-2 -
Führen Sie für das Python-Skript den folgenden Befehl aus, um das Python-Skript mit dem Namen auszuführen. PollingPipelinesExtractor.py In diesem Beispiel ist die Region us-west-2.
python3 PollingPipelinesExtractor.py us-west-2
In der folgenden Beispielausgabe des Skripts gab die Region us-west-2 eine Liste von Polling-Pipelines zurück und zeigt die letzte Ausführungszeit für jede Pipeline an.
% ./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...%Analysieren Sie die Skriptausgabe und aktualisieren Sie für jede Pipeline in der Liste die Polling-Quelle auf die empfohlene ereignisbasierte Methode zur Erkennung von Änderungen.
Anmerkung
Ihre Polling-Pipelines werden durch die Aktionskonfiguration der Pipeline für den Parameter bestimmt.
PollForSourceChangesWenn in der Pipeline-Quellkonfiguration derPollForSourceChangesParameter weggelassen wird, wird Ihr Repository CodePipeline standardmäßig nach Quelländerungen abgefragt. Dieses Verhalten ist dasselbe, als obPollForSourceChanges„enthalten“ und auf „true“ gesetzt wäre. Weitere Informationen finden Sie in den Konfigurationsparametern für die Quellaktion Ihrer Pipeline, z. B. in den Konfigurationsparametern für Amazon S3-Quellaktionen unterReferenz zur Amazon S3-Quellaktion.Beachten Sie, dass dieses Skript auch eine CSV-Datei generiert, die die Liste der Polling-Pipelines in Ihrem Konto enthält, und die CSV-Datei im aktuellen Arbeitsordner speichert.
-
Migrieren Sie Polling-Pipelines mit einer Quelle CodeCommit
Sie können Ihre Polling-Pipeline migrieren, um Änderungen in Ihrem CodeCommit Quell-Repository oder Ihrem Amazon S3-Quell-Bucket zu erkennen. EventBridge
CodeCommit— Bei einer Pipeline mit einer CodeCommit Quelle ändern Sie die Pipeline so, dass die Änderungserkennung automatisch erfolgt EventBridge. Wählen Sie aus den folgenden Methoden, um die Migration zu implementieren:
Migrieren Sie Polling-Pipelines (CodeCommit oder Amazon S3-Quelle) (Konsole)
Sie können die CodePipeline Konsole verwenden, um Ihre Pipeline zu aktualisieren, damit Sie EventBridge Änderungen in Ihrem CodeCommit Quell-Repository oder Ihrem Amazon S3-Quell-Bucket erkennen können.
Anmerkung
Wenn Sie die Konsole verwenden, um eine Pipeline zu bearbeiten, die über ein CodeCommit Quell-Repository oder einen Amazon S3-Quell-Bucket verfügt, werden die Regel und die IAM-Rolle für Sie erstellt. Wenn Sie die verwenden, AWS CLI um die Pipeline zu bearbeiten, müssen Sie die EventBridge Regel und die IAM-Rolle selbst erstellen. Weitere Informationen finden Sie unter CodeCommit Quellaktionen und EventBridge.
Führen Sie die folgenden Schritte aus, um eine Pipeline zu bearbeiten, die periodische Prüfungen verwendet. Wenn Sie eine Pipeline erstellen möchten, informieren Sie sich unter Erstellen Sie eine Pipeline, Stufen und Aktionen.
So bearbeiten Sie die Quellphase einer Pipeline
-
Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die CodePipeline Konsole unter http://console.aws.amazon.com/codesuite/codepipeline/home
. Die Namen aller mit Ihrem AWS Konto verknüpften Pipelines werden angezeigt.
-
Wählen Sie im Feld Name den Namen der Pipeline aus, die Sie bearbeiten möchten. Auf diese Weise wird eine detaillierte Ansicht der Pipeline geöffnet (einschließlich des Status der Aktionen in den einzelnen Stufen der Pipeline).
-
Wählen Sie auf der Pipelinedetails-Seite Edit aus.
-
Wählen Sie in der Stufe Edit stage (Stufe bearbeiten) das Bearbeitungssymbol für die Quellaktion aus.
-
Erweitern Sie die Optionen zur Änderungserkennung und wählen Sie „ CloudWatch Ereignisse verwenden“, um meine Pipeline bei Änderungen automatisch zu starten (empfohlen).
Eine Meldung mit der EventBridge Regel, die für diese Pipeline erstellt werden soll, wird angezeigt. Wählen Sie Aktualisieren aus.
Wenn Sie eine Pipeline aktualisieren, die über eine Amazon S3-Quelle verfügt, wird die folgende Meldung angezeigt. Wählen Sie Aktualisieren aus.
-
Wenn Sie die Bearbeitung der Pipeline abgeschlossen haben, wählen Sie Save pipeline changes aus, um zur Übersichtsseite zurückzukehren.
In einer Meldung wird der Name der EventBridge Regel angezeigt, die für Ihre Pipeline erstellt werden soll. Wählen Sie Save and continue aus.
-
Um Ihre Aktion zu testen, geben Sie eine Änderung frei, indem Sie die verwenden AWS CLI , um eine Änderung an der in der Quellphase der Pipeline angegebenen Quelle festzuschreiben.
Migrieren Sie Polling-Pipelines (CodeCommit Quelle) (CLI)
Gehen Sie wie folgt vor, um eine Pipeline zu bearbeiten, die Polling (regelmäßige Überprüfungen) verwendet, um eine EventBridge Regel zum Starten der Pipeline zu verwenden. Wenn Sie eine Pipeline erstellen möchten, informieren Sie sich unter Erstellen Sie eine Pipeline, Stufen und Aktionen.
Um eine ereignisgesteuerte Pipeline mit zu erstellen CodeCommit, bearbeiten Sie den PollForSourceChanges Parameter Ihrer Pipeline und erstellen dann die folgenden Ressourcen:
-
EventBridge Ereignis
-
IAM-Rolle, damit dieses Ereignis Ihre Pipeline starten kann
Um den PollForSourceChanges Parameter Ihrer Pipeline zu bearbeiten
Wichtig
Wenn Sie eine Pipeline mit dieser Methode erstellen, ist der Parameter PollForSourceChanges standardmäßig „true“, wenn er nicht ausdrücklich auf „false“ gesetzt wird. Wenn Sie ereignisbasierte Erkennung hinzufügen, müssen Sie den Parameter Ihrer Ausgabe hinzufügen und Ihn auf „false“ setzen, um die Abfrage zu deaktivieren. Andernfalls wird Ihre Pipeline bei einer einzigen Quelländerung zweimal gestartet. Details hierzu finden Sie unter Gültige Einstellungen für den PollForSourceChanges Parameter.
-
Führen Sie den Befehl get-pipeline zum Kopieren der Pipeline-Struktur in eine JSON-Datei aus. Geben Sie für eine Pipeline mit dem Namen
MyFirstPipelineden folgenden Befehl ein:aws codepipeline get-pipeline --nameMyFirstPipeline>pipeline.jsonDieser Befehl gibt nichts zurück. Die erstellte Datei sollte jedoch in dem Verzeichnis auftauchen, in dem Sie den Befehl ausgeführt haben.
-
Öffnen Sie die JSON-Datei in einem beliebigen Texteditor und bearbeiten Sie die Quellstufe, indem Sie den Parameter
PollForSourceChangesinfalseändern, wie in diesem Beispiel gezeigt.Warum nehme ich diese Änderung vor? Durch Ändern dieses Parameters in
falsewerden periodische Prüfungen deaktiviert. Sie können daher nur die ereignisbasierte Erkennung von Änderungen verwenden."configuration": {"PollForSourceChanges": "false","BranchName": "main", "RepositoryName": "MyTestRepo" }, -
Wenn Sie mit einer Pipeline-Struktur arbeiten, die Sie mit dem Befehl get-pipeline abgerufen haben, müssen Sie die
metadata-Zeilen aus der JSON-Datei entfernen. Andernfalls kann der update-pipeline-Befehl sie nicht nutzen. Entfernen Sie die"metadata": { }-Zeilen und die Felder"created","pipelineARN"und"updated".Entfernen Sie z. B. die folgenden Zeilen aus der Struktur:
"metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" },Speichern Sie die Datei.
-
Um Ihre Änderungen zu übernehmen, führen Sie den Befehl update-pipeline aus und geben Sie die Pipeline-JSON-Datei an:
Wichtig
Achten Sie darauf, dass
file://vor dem Dateinamen steht. Dies ist bei diesem Befehl erforderlich.aws codepipeline update-pipeline --cli-input-json file://pipeline.jsonDieser Befehl gibt die gesamte Struktur der bearbeiteten Pipeline zurück.
Anmerkung
Der Befehl update-pipeline stoppt die Pipeline. Wenn eine Revision über die Pipeline ausgeführt wird, wenn Sie den Befehl update-pipeline ausführen, wird diese Ausführung gestoppt. Sie müssen die Ausführung der Pipeline manuell starten, um die Revision über die aktualisierte Pipeline auszuführen. Verwenden Sie den
start-pipeline-execution-Befehl, um Ihre Pipeline manuell zu starten.
Um eine EventBridge Regel mit CodeCommit als Ereignisquelle und CodePipeline als Ziel zu erstellen
-
Fügen Sie Berechtigungen hinzu EventBridge , die CodePipeline zum Aufrufen der Regel verwendet werden sollen. Weitere Informationen finden Sie unter Verwenden ressourcenbasierter Richtlinien für Amazon. EventBridge
-
Verwenden Sie das folgende Beispiel, um die Vertrauensrichtlinie zu erstellen, die es ermöglicht, die EventBridge Servicerolle zu übernehmen. Geben Sie der Vertrauensrichtlinie den Namen
trustpolicyforEB.json. -
Verwenden Sie den folgenden Befehl, um die
Role-for-MyRule-Rolle zu erstellen und die Vertrauensrichtlinie anzufügen.aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json -
Erstellen Sie die JSON-Datei der Berechtigungsrichtlinie wie in diesem Beispiel für die Pipeline mit dem Namen
MyFirstPipelinegezeigt. Geben Sie der Berechtigungsrichtlinie den NamenpermissionspolicyforEB.json. -
Verwenden Sie den folgenden Befehl, um die Berechtigungsrichtlinie
CodePipeline-Permissions-Policy-for-EBder RolleRole-for-MyRuleanzufügen.Warum nehme ich diese Änderung vor? Durch das Hinzufügen dieser Richtlinie zur Rolle werden Berechtigungen für erstellt EventBridge.
aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
-
-
Rufen Sie den Befehl „put-rule“ auf und beziehen Sie die Parameter „
--name“, „--event-pattern“ und „--role-arn“ ein.Warum nehme ich diese Änderung vor? Dieser Befehl aktiviert CloudFormation , um das Ereignis zu erstellen.
Mit dem folgenden Beispielbefehl wird eine Regel mit dem Namen „
MyCodeCommitRepoRule“ erstellt.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" -
Um es CodePipeline als Ziel hinzuzufügen, rufen Sie den put-targets Befehl auf und geben Sie die folgenden Parameter ein:
-
Der Parameter
--rulewird für denrule_nameverwendet, den Sie mit put-rule erstellt haben. -
Der Parameter
--targetswird für die Listen-Iddes Ziels in der Zielliste und denARNder Ziel-Pipeline verwendet.
Der folgende Beispielbefehl legt fest, dass für die Regel mit dem Namen
MyCodeCommitRepoRuledie Ziel-Idaus der Nummer 1 besteht. Dies bedeutet, dass in einer Liste mit Zielen für die Regel dieses Ziel 1 ist. Der Beispielbefehl gibt zudem ein BeispielARNfür die Pipeline an. Die Pipeline startet, wenn Änderungen im Repository auftreten.aws events put-targets --rule MyCodeCommitRepoRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline -
-
(Optional) Um einen Eingangstransformator mit Quellüberschreibungen für eine bestimmte Bild-ID zu konfigurieren, verwenden Sie den folgenden JSON-Code in Ihrem CLI-Befehl. Im folgenden Beispiel wird eine Überschreibung konfiguriert, bei der:
-
SourceIn diesem Beispiel ist deractionNamedynamische Wert, der bei der Pipelineerstellung definiert und nicht aus dem Quellereignis abgeleitet wurde. -
COMMIT_IDIn diesem Beispiel ist derrevisionTypedynamische Wert, der bei der Pipelineerstellung definiert und nicht vom Quellereignis abgeleitet wurde. -
In diesem Beispiel wird <
revisionValue> von der Quellereignisvariablen abgeleitet.revisionValue
{ "Rule": "my-rule", "Targets": [ { "Id": "MyTargetId", "Arn": "pipeline-ARN", "InputTransformer": { "sourceRevisions": { "actionName": "Source", "revisionType": "COMMIT_ID", "revisionValue": "<revisionValue>" }, "variables": [ { "name": "Branch_Name", "value": "value" } ] } } ] } -
Migrieren Sie Polling-Pipelines (CodeCommit Quelle) (CloudFormation Vorlage)
Um eine ereignisgesteuerte Pipeline mit zu erstellen AWS CodeCommit, bearbeiten Sie den PollForSourceChanges Parameter Ihrer Pipeline und fügen dann Ihrer Vorlage die folgenden Ressourcen hinzu:
-
Eine Regel EventBridge
-
Eine IAM-Rolle für Ihre Regel EventBridge
Wenn Sie CloudFormation es zum Erstellen und Verwalten Ihrer Pipelines verwenden, enthält Ihre Vorlage Inhalte wie den folgenden.
Anmerkung
Die Configuration-Eigenschaft in der Quellstufe mit dem Namen PollForSourceChanges. Wenn diese Eigenschaft in Ihrer Vorlage nicht enthalten ist, dann wird PollForSourceChanges standardmäßig auf true festgelegt.
Um Ihre Pipeline zu aktualisieren CloudFormation Vorlage und EventBridge Regel erstellen
-
Verwenden Sie in der Vorlage unter die
AWS::IAM::RoleCloudFormation RessourceResources, um die IAM-Rolle zu konfigurieren, mit der Ihre Veranstaltung Ihre Pipeline starten kann. Dieser Eintrag erstellt eine Rolle mit zwei Richtlinien:-
Die erste Richtlinie ermöglicht die Übernahme der Rolle.
-
Die zweite Richtlinie stellt Berechtigungen zum Starten der Pipeline bereit.
Warum nehme ich diese Änderung vor? Das Hinzufügen der
AWS::IAM::RoleRessource ermöglicht CloudFormation das Erstellen von Berechtigungen für EventBridge. Diese Ressource wird Ihrem CloudFormation Stack hinzugefügt. -
-
Verwenden Sie in der Vorlage unter die
AWS::Events::RuleCloudFormation RessourceResources, um eine EventBridge Regel hinzuzufügen. Dieses Ereignismuster erzeugt ein Ereignis, das Push-Änderungen an deinem Repository überwacht. Wenn eine Statusänderung des Repositorys EventBridge erkannt wird, wird die Regel inStartPipelineExecutionIhrer Zielpipeline aufgerufen.Warum nehme ich diese Änderung vor? Durch Hinzufügen der
AWS::Events::RuleRessource kann CloudFormation das Ereignis erstellt werden. Diese Ressource wird Ihrem CloudFormation Stack hinzugefügt. -
(Optional) Verwenden Sie den folgenden YAML-Snippet, um einen Eingangstransformator mit Quellüberschreibungen für eine bestimmte Bild-ID zu konfigurieren. Im folgenden Beispiel wird eine Überschreibung konfiguriert, bei der:
-
SourceIn diesem Beispiel ist deractionNamedynamische Wert, der bei der Pipelineerstellung definiert und nicht aus dem Quellereignis abgeleitet wurde. -
COMMIT_IDIn diesem Beispiel ist derrevisionTypedynamische Wert, der bei der Pipelineerstellung definiert und nicht vom Quellereignis abgeleitet wurde. -
In diesem Beispiel wird <
revisionValue> von der Quellereignisvariablen abgeleitet.revisionValue -
Die Ausgabevariablen für
BranchNameundValuesind angegeben.
Rule: my-rule Targets: - Id: MyTargetId Arn: pipeline-ARN InputTransformer: sourceRevisions: actionName:SourcerevisionType:COMMIT_IDrevisionValue: <revisionValue> variables: - name:BranchNamevalue:value -
-
Speichern Sie die aktualisierte Vorlage auf Ihrem lokalen Computer, und öffnen Sie dann die CloudFormation Konsole.
-
Wählen Sie Ihren Stack aus und klicken Sie auf Create Change Set for Current Stack (Änderungssatz für laufenden Stack erstellen).
-
Laden Sie die Vorlage hoch und zeigen Sie dann die in CloudFormation aufgeführten Änderungen an. Dies sind die Änderungen, die am Stack vorgenommen werden sollen. Ihre neuen Ressourcen sollten in der Liste angezeigt werden.
-
Wählen Sie Ausführen.
Um den PollForSourceChanges Parameter Ihrer Pipeline zu bearbeiten
Wichtig
In vielen Fällen ist der Parameter PollForSourceChanges „true“, wenn Sie eine Pipeline erstellen. Wenn Sie ereignisbasierte Erkennung hinzufügen, müssen Sie den Parameter Ihrer Ausgabe hinzufügen und Ihn auf „false“ setzen, um die Abfrage zu deaktivieren. Andernfalls wird Ihre Pipeline bei einer einzigen Quelländerung zweimal gestartet. Details hierzu finden Sie unter Gültige Einstellungen für den PollForSourceChanges Parameter.
-
Ändern Sie in der Vorlage
PollForSourceChangesinfalse. Wenn SiePollForSourceChangesnicht in Ihre Pipeline-Definition einbezogen haben, fügen Sie das Objekt hinzu und legen es auffalsefest.Warum nehme ich diese Änderung vor? Durch Ändern dieses Parameters in
falsewerden periodische Prüfungen deaktiviert. Sie können daher nur die ereignisbasierte Erkennung von Änderungen verwenden.
Beispiel
Wenn Sie diese Ressourcen mit erstellen CloudFormation, wird Ihre Pipeline ausgelöst, wenn Dateien in Ihrem Repository erstellt oder aktualisiert werden. Im Folgenden finden Sie den endgültigen Vorlagenausschnitt:
Migrieren Sie Polling-Pipelines mit einer S3-Quelle, die für Ereignisse aktiviert ist
Bei einer Pipeline mit einer Amazon S3-Quelle ändern Sie die Pipeline so, dass die Änderungserkennung durch EventBridge und mit einem Quell-Bucket, der für Ereignisbenachrichtigungen aktiviert ist, automatisiert wird. Dies ist die empfohlene Methode, wenn Sie die CLI verwenden oder CloudFormation Ihre Pipeline migrieren.
Anmerkung
Dazu gehört auch die Verwendung eines Buckets, der für Ereignisbenachrichtigungen aktiviert ist, sodass Sie keinen separaten CloudTrail Trail erstellen müssen. Wenn Sie die Konsole verwenden, werden eine Event-Regel und ein CloudTrail Trail für Sie eingerichtet. Diese Schritte finden Sie unterMigrieren Sie Polling-Pipelines mit einer S3-Quelle und einem S3-Trail CloudTrail.
Migrieren Sie Polling-Pipelines mit einer für Ereignisse aktivierten S3-Quelle (CLI)
Gehen Sie wie folgt vor, um eine Pipeline, die Polling (regelmäßige Überprüfungen) verwendet, zu bearbeiten und stattdessen ein Ereignis zu verwenden. EventBridge Wenn Sie eine Pipeline erstellen möchten, informieren Sie sich unter Erstellen Sie eine Pipeline, Stufen und Aktionen.
Um eine ereignisgesteuerte Pipeline mit Amazon S3 zu erstellen, bearbeiten Sie den PollForSourceChanges Parameter Ihrer Pipeline und erstellen dann die folgenden Ressourcen:
-
EventBridge Regel für Ereignisse
-
IAM-Rolle, damit das EventBridge Ereignis Ihre Pipeline starten kann
Um eine EventBridge Regel mit Amazon S3 als Ereignisquelle und CodePipeline Ziel zu erstellen und die Berechtigungsrichtlinie anzuwenden
-
Erteilen Sie Berechtigungen EventBridge zur Verwendung CodePipeline zum Aufrufen der Regel. Weitere Informationen finden Sie unter Verwenden ressourcenbasierter Richtlinien für Amazon. EventBridge
-
Verwenden Sie das folgende Beispiel zum Erstellen der Vertrauensrichtlinie, mit der EventBridge die Servicerolle übernehmen kann. Geben Sie ihr den Namen
trustpolicyforEB.json. -
Verwenden Sie den folgenden Befehl, um die
Role-for-MyRule-Rolle zu erstellen und die Vertrauensrichtlinie anzufügen.Warum nehme ich diese Änderung vor? Durch das Hinzufügen dieser Vertrauensrichtlinie zur Rolle werden Berechtigungen für EventBridge erstellt.
aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json -
Erstellen Sie die JSON-Datei der Berechtigungsrichtlinie wie hier für die Pipeline mit dem Namen
MyFirstPipelinegezeigt. Geben Sie der Berechtigungsrichtlinie den NamenpermissionspolicyforEB.json. -
Führen Sie den folgenden Befehl aus, um der erstellten
Role-for-MyRule-Rolle die neueCodePipeline-Permissions-Policy-for-EB-Berechtigungsrichtlinie anzufügen.aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
-
-
Rufen Sie den Befehl „put-rule“ auf und beziehen Sie die Parameter „
--name“, „--event-pattern“ und „--role-arn“ ein.Mit dem folgenden Beispielbefehl wird eine Regel mit dem Namen „
EnabledS3SourceRule“ erstellt.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" -
Um es CodePipeline als Ziel hinzuzufügen, rufen Sie den put-targets Befehl auf und geben Sie die Parameter und an
--rule.--targetsDer folgende Befehl legt fest, dass für die Regel mit dem Namen
EnabledS3SourceRuledie Ziel-Idaus der Nummer 1 besteht. Dies bedeutet, dass in einer Liste mit Zielen für die Regel dies Ziel 1 ist. Der Befehl gibt zudem ein BeispielARNfür die Pipeline an. Die Pipeline startet, wenn Änderungen im Repository auftreten.aws events put-targets --rule EnabledS3SourceRule --targets Id=codepipeline-AppPipeline,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline
Um den PollForSourceChanges Parameter Ihrer Pipeline zu bearbeiten
Wichtig
Wenn Sie eine Pipeline mit dieser Methode erstellen, ist der Parameter PollForSourceChanges standardmäßig „true“, wenn er nicht ausdrücklich auf „false“ gesetzt wird. Wenn Sie ereignisbasierte Erkennung hinzufügen, müssen Sie den Parameter Ihrer Ausgabe hinzufügen und Ihn auf „false“ setzen, um die Abfrage zu deaktivieren. Andernfalls wird Ihre Pipeline bei einer einzigen Quelländerung zweimal gestartet. Details hierzu finden Sie unter Gültige Einstellungen für den PollForSourceChanges Parameter.
-
Führen Sie den Befehl get-pipeline zum Kopieren der Pipeline-Struktur in eine JSON-Datei aus. Geben Sie für eine Pipeline mit dem Namen
MyFirstPipelineden folgenden Befehl ein:aws codepipeline get-pipeline --nameMyFirstPipeline>pipeline.jsonDieser Befehl gibt nichts zurück. Die erstellte Datei sollte jedoch in dem Verzeichnis auftauchen, in dem Sie den Befehl ausgeführt haben.
-
Öffnen Sie die JSON-Datei in einem Texteditor und bearbeiten Sie die Quellphase, indem Sie den Parameter
PollForSourceChangesfür einen Bucket mit dem Namenamzn-s3-demo-source-bucketinfalseändern wie in diesem Beispiel gezeigt.Warum nehme ich diese Änderung vor? Durch Festlegen dieses Parameters in
falsewerden periodische Prüfungen deaktiviert. Sie können daher nur die ereignisbasierte Erkennung von Änderungen verwenden."configuration": { "S3Bucket": "amzn-s3-demo-source-bucket","PollForSourceChanges": "false","S3ObjectKey": "index.zip" }, -
Wenn Sie mit einer Pipeline-Struktur arbeiten, die Sie mit dem Befehl get-pipeline abgerufen haben, müssen Sie die
metadata-Zeilen aus der JSON-Datei entfernen. Andernfalls kann der update-pipeline-Befehl sie nicht nutzen. Entfernen Sie die"metadata": { }-Zeilen und die Felder"created","pipelineARN"und"updated".Entfernen Sie z. B. die folgenden Zeilen aus der Struktur:
"metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" },Speichern Sie die Datei.
-
Um Ihre Änderungen zu übernehmen, führen Sie den Befehl update-pipeline aus und geben Sie die Pipeline-JSON-Datei an:
Wichtig
Achten Sie darauf, dass
file://vor dem Dateinamen steht. Dies ist bei diesem Befehl erforderlich.aws codepipeline update-pipeline --cli-input-json file://pipeline.jsonDieser Befehl gibt die gesamte Struktur der bearbeiteten Pipeline zurück.
Anmerkung
Der Befehl update-pipeline stoppt die Pipeline. Wenn eine Revision über die Pipeline ausgeführt wird, wenn Sie den Befehl update-pipeline ausführen, wird diese Ausführung gestoppt. Sie müssen die Ausführung der Pipeline manuell starten, um die Revision über die aktualisierte Pipeline auszuführen. Verwenden Sie den start-pipeline-execution-Befehl, um Ihre Pipeline manuell zu starten.
Migrieren Sie Polling-Pipelines mit einer für Ereignisse aktivierten S3-Quelle (CloudFormation Vorlage)
Dieses Verfahren gilt für eine Pipeline, bei der für den Quell-Bucket Ereignisse aktiviert sind.
Gehen Sie wie folgt vor, um Ihre Pipeline mit einer Amazon S3-Quelle vom Polling bis zur ereignisbasierten Änderungserkennung zu bearbeiten.
Um eine ereignisgesteuerte Pipeline mit Amazon S3 zu erstellen, bearbeiten Sie den PollForSourceChanges Parameter Ihrer Pipeline und fügen dann Ihrer Vorlage die folgenden Ressourcen hinzu:
-
EventBridge Regel und IAM-Rolle, damit dieses Ereignis Ihre Pipeline starten kann.
Wenn Sie es verwenden CloudFormation , um Ihre Pipelines zu erstellen und zu verwalten, enthält Ihre Vorlage Inhalte wie den folgenden.
Anmerkung
Die Configuration-Eigenschaft in der Quellstufe mit dem Namen PollForSourceChanges. Wenn diese Eigenschaft in Ihrer Vorlage nicht enthalten ist, dann wird PollForSourceChanges standardmäßig auf true festgelegt.
Um eine EventBridge Regel mit Amazon S3 als Ereignisquelle und CodePipeline Ziel zu erstellen und die Berechtigungsrichtlinie anzuwenden
-
Verwenden Sie in der Vorlage unter die
AWS::IAM::RoleCloudFormation RessourceResources, um die IAM-Rolle zu konfigurieren, die es Ihrem Event ermöglicht, Ihre Pipeline zu starten. Dieser Eintrag erstellt eine Rolle mit zwei Richtlinien:-
Die erste Richtlinie ermöglicht die Übernahme der Rolle.
-
Die zweite Richtlinie stellt Berechtigungen zum Starten der Pipeline bereit.
Warum nehme ich diese Änderung vor? Das Hinzufügen einer
AWS::IAM::RoleRessource ermöglicht CloudFormation das Erstellen von Berechtigungen für EventBridge. Diese Ressource wird Ihrem CloudFormation Stack hinzugefügt. -
-
Verwenden Sie die
AWS::Events::RuleCloudFormation Ressource, um eine EventBridge Regel hinzuzufügen. Dieses Ereignismuster erstellt ein Ereignis, das die Erstellung oder Löschung von Objekten in Ihrem Amazon S3-Quell-Bucket überwacht. Fügen Sie darüber hinaus ein Ziel für Ihre Pipeline ein. Wenn ein Objekt erstellt wird, wird diese Regel inStartPipelineExecutionIhrer Zielpipeline aufgerufen.Warum nehme ich diese Änderung vor? Durch Hinzufügen der
AWS::Events::RuleRessource kann CloudFormation das Ereignis erstellt werden. Diese Ressource wird Ihrem CloudFormation Stack hinzugefügt. -
Speichern Sie Ihre aktualisierte Vorlage auf Ihrem lokalen Computer und öffnen Sie die CloudFormation -Konsole.
-
Wählen Sie Ihren Stack aus und klicken Sie auf Create Change Set for Current Stack (Änderungssatz für laufenden Stack erstellen).
-
Laden Sie Ihre aktualisierte Vorlage hoch und zeigen Sie dann die in CloudFormation aufgeführten Änderungen an. Dies sind die Änderungen, die am Stack vorgenommen werden. Ihre neuen Ressourcen sollten in der Liste angezeigt werden.
-
Wählen Sie Ausführen.
Um den PollForSourceChanges Parameter Ihrer Pipeline zu bearbeiten
Wichtig
Wenn Sie eine Pipeline mit dieser Methode erstellen, ist der Parameter PollForSourceChanges standardmäßig „true“, wenn er nicht ausdrücklich auf „false“ gesetzt wird. Wenn Sie ereignisbasierte Erkennung hinzufügen, müssen Sie den Parameter Ihrer Ausgabe hinzufügen und Ihn auf „false“ setzen, um die Abfrage zu deaktivieren. Andernfalls wird Ihre Pipeline bei einer einzigen Quelländerung zweimal gestartet. Details hierzu finden Sie unter Gültige Einstellungen für den PollForSourceChanges Parameter.
-
Ändern Sie in der Vorlage
PollForSourceChangesinfalse. Wenn SiePollForSourceChangesnicht in Ihre Pipeline-Definition einbezogen haben, fügen Sie das Objekt hinzu und legen es auffalsefest.Warum nehme ich diese Änderung vor? Durch Ändern von
PollForSourceChangesinfalsewerden periodische Prüfungen deaktiviert. Sie können daher nur die ereignisbasierte Erkennung von Änderungen verwenden.
Beispiel
Wenn Sie diese Ressourcen erstellen, wird Ihre Pipeline ausgelöst, wenn Dateien in Ihrem Repository erstellt oder aktualisiert werden. CloudFormation
Anmerkung
Hören Sie hier nicht auf. Obwohl Ihre Pipeline erstellt wurde, müssen Sie eine zweite CloudFormation Vorlage für Ihre Amazon S3-Pipeline erstellen. Wenn Sie die zweite Vorlage nicht erstellen, enthält Ihre Pipeline keine Funktionalität für die Änderungserkennung.
Migrieren Sie Polling-Pipelines mit einer S3-Quelle und einem S3-Trail CloudTrail
Ändern Sie bei einer Pipeline mit einer Amazon S3-Quelle die Pipeline so, dass die Änderungserkennung automatisch erfolgt. EventBridge Wählen Sie aus den folgenden Methoden, um die Migration zu implementieren:
-
Konsole: Migrieren Sie Polling-Pipelines (CodeCommit oder Amazon S3-Quelle) (Konsole)
-
CLI: Migrieren Sie Polling-Pipelines mit einer S3-Quelle und einem CloudTrail S3-Trail (CLI)
-
CloudFormation: Migrieren Sie Polling-Pipelines mit einer S3-Quelle und einem S3-Trail CloudTrail (CloudFormation Vorlage)
Migrieren Sie Polling-Pipelines mit einer S3-Quelle und einem CloudTrail S3-Trail (CLI)
Gehen Sie wie folgt vor, um eine Pipeline, die Polling (regelmäßige Überprüfungen) verwendet, zu bearbeiten und stattdessen ein Ereignis zu verwenden. EventBridge Wenn Sie eine Pipeline erstellen möchten, informieren Sie sich unter Erstellen Sie eine Pipeline, Stufen und Aktionen.
Um eine ereignisgesteuerte Pipeline mit Amazon S3 zu erstellen, bearbeiten Sie den PollForSourceChanges Parameter Ihrer Pipeline und erstellen dann die folgenden Ressourcen:
-
AWS CloudTrail Trail-, Bucket- und Bucket-Richtlinie, die Amazon S3 zur Protokollierung der Ereignisse verwenden kann.
-
EventBridge Ereignis
-
IAM-Rolle, damit das EventBridge Ereignis Ihre Pipeline starten kann
Um eine zu erstellen AWS CloudTrail Protokollierung verfolgen und aktivieren
Um den zum Erstellen eines Trails AWS CLI zu verwenden, rufen Sie den create-trail Befehl auf und geben Sie Folgendes an:
-
Den Trail-Namen.
-
Der Bucket, auf den Sie bereits die Bucket-Richtlinie für AWS CloudTrail angewendet haben.
Weitere Informationen finden Sie unter Einen Trail mit der AWS Befehlszeilenschnittstelle erstellen.
-
Rufen Sie den Befehl create-trail auf und beziehen Sie die Parameter
--nameund--s3-bucket-nameein.Warum nehme ich diese Änderung vor? Dadurch wird der für Ihren S3-Quell-Bucket erforderliche CloudTrail-Trail erstellt.
Der folgende Befehl verwendet
--nameund--s3-bucket-namezum Erstellen eines Trails mit dem Namenmy-trailund eines Buckets mit dem Namenamzn-s3-demo-source-bucket.aws cloudtrail create-trail --name my-trail --s3-bucket-name amzn-s3-demo-source-bucket -
Rufen Sie den Befehl start-logging auf und beziehen Sie den
--name-Parameter ein.Warum nehme ich diese Änderung vor? Dieser Befehl startet die CloudTrail Protokollierung für Ihren Quell-Bucket und sendet Ereignisse an EventBridge.
Beispiel:
Im folgenden Befehl wird
--nameverwendet, um die Protokollierung auf einem Trail mit der Bezeichnungmy-trailzu starten.aws cloudtrail start-logging --name my-trail -
Rufen Sie den Befehl put-event-selectors auf und beziehen Sie die Parameter
--trail-nameund--event-selectorsein. Verwenden Sie Event-Selektoren, um anzugeben, dass Ihr Trail Datenereignisse für Ihren Quell-Bucket protokollieren und die Ereignisse an die EventBridge Regel senden soll.Warum nehme ich diese Änderung vor? Mit diesem Befehl werden Ereignisse gefiltert.
Beispiel:
Im folgenden Beispielbefehl werden
--trail-nameund--event-selectorsverwendet, um die Verwaltung von Datenereignissen für einen Quell-Bucket und einen Präfix namensamzn-s3-demo-source-bucket/myFolderanzugeben.aws cloudtrail put-event-selectors --trail-namemy-trail--event-selectors '[{ "ReadWriteType": "WriteOnly", "IncludeManagementEvents":false, "DataResources": [{ "Type": "AWS::S3::Object", "Values": ["arn:aws:s3:::amzn-s3-demo-source-bucket/myFolder/file.zip"] }] }]'
Um eine EventBridge Regel mit Amazon S3 als Ereignisquelle und CodePipeline Ziel zu erstellen und die Berechtigungsrichtlinie anzuwenden
-
Erteilen Sie Berechtigungen EventBridge zur Verwendung CodePipeline zum Aufrufen der Regel. Weitere Informationen finden Sie unter Verwenden ressourcenbasierter Richtlinien für Amazon. EventBridge
-
Verwenden Sie das folgende Beispiel, um die Vertrauensrichtlinie zu erstellen, die es ermöglicht, die EventBridge Servicerolle zu übernehmen. Geben Sie ihr den Namen
trustpolicyforEB.json. -
Verwenden Sie den folgenden Befehl, um die
Role-for-MyRule-Rolle zu erstellen und die Vertrauensrichtlinie anzufügen.Warum nehme ich diese Änderung vor? Durch Hinzufügen dieser Vertrauensrichtlinie zur Rolle werden Berechtigungen für erstellt EventBridge.
aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json -
Erstellen Sie die JSON-Datei der Berechtigungsrichtlinie wie hier für die Pipeline mit dem Namen
MyFirstPipelinegezeigt. Geben Sie der Berechtigungsrichtlinie den NamenpermissionspolicyforEB.json. -
Führen Sie den folgenden Befehl aus, um der erstellten
Role-for-MyRule-Rolle die neueCodePipeline-Permissions-Policy-for-EB-Berechtigungsrichtlinie anzufügen.aws iam put-role-policy --role-name Role-for-MyRule --policy-name CodePipeline-Permissions-Policy-For-EB --policy-document file://permissionspolicyforEB.json
-
-
Rufen Sie den Befehl „put-rule“ auf und beziehen Sie die Parameter „
--name“, „--event-pattern“ und „--role-arn“ ein.Mit dem folgenden Beispielbefehl wird eine Regel mit dem Namen „
MyS3SourceRule“ erstellt.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" -
Um es CodePipeline als Ziel hinzuzufügen, rufen Sie den put-targets Befehl auf und geben Sie die
--targetsParameter--ruleund an.Der folgende Befehl legt fest, dass für die Regel mit dem Namen
MyS3SourceRuledie Ziel-Idaus der Nummer 1 besteht. Dies bedeutet, dass in einer Liste mit Zielen für die Regel dies Ziel 1 ist. Der Befehl gibt zudem ein BeispielARNfür die Pipeline an. Die Pipeline startet, wenn Änderungen im Repository auftreten.aws events put-targets --rule MyS3SourceRule --targets Id=1,Arn=arn:aws:codepipeline:us-west-2:80398EXAMPLE:TestPipeline -
(Optional) Verwenden Sie den folgenden JSON-Code in Ihrem CLI-Befehl, um einen Eingangstransformator mit Quellüberschreibungen für eine bestimmte Bild-ID zu konfigurieren. Im folgenden Beispiel wird eine Überschreibung konfiguriert, bei der:
-
SourceIn diesem Beispiel ist deractionNamedynamische Wert, der bei der Pipelineerstellung definiert und nicht aus dem Quellereignis abgeleitet wurde. -
S3_OBJECT_VERSION_IDIn diesem Beispiel ist derrevisionTypedynamische Wert, der bei der Pipelineerstellung definiert und nicht vom Quellereignis abgeleitet wurde. -
In diesem Beispiel wird <
revisionValue> von der Quellereignisvariablen abgeleitet.revisionValue
{ "Rule": "my-rule", "Targets": [ { "Id": "MyTargetId", "Arn": "ARN", "InputTransformer": { "InputPathsMap": { "revisionValue": "$.detail.object.version-id" }, "InputTemplate": { "sourceRevisions": { "actionName": "Source", "revisionType": "S3_OBJECT_VERSION_ID", "revisionValue": "<revisionValue>" } } } } ] } -
Um den PollForSourceChanges Parameter Ihrer Pipeline zu bearbeiten
Wichtig
Wenn Sie eine Pipeline mit dieser Methode erstellen, ist der Parameter PollForSourceChanges standardmäßig „true“, wenn er nicht ausdrücklich auf „false“ gesetzt wird. Wenn Sie ereignisbasierte Erkennung hinzufügen, müssen Sie den Parameter Ihrer Ausgabe hinzufügen und Ihn auf „false“ setzen, um die Abfrage zu deaktivieren. Andernfalls wird Ihre Pipeline bei einer einzigen Quelländerung zweimal gestartet. Details hierzu finden Sie unter Gültige Einstellungen für den PollForSourceChanges Parameter.
-
Führen Sie den Befehl get-pipeline zum Kopieren der Pipeline-Struktur in eine JSON-Datei aus. Geben Sie für eine Pipeline mit dem Namen
MyFirstPipelineden folgenden Befehl ein:aws codepipeline get-pipeline --nameMyFirstPipeline>pipeline.jsonDieser Befehl gibt nichts zurück. Die erstellte Datei sollte jedoch in dem Verzeichnis auftauchen, in dem Sie den Befehl ausgeführt haben.
-
Öffnen Sie die JSON-Datei in einem Texteditor und bearbeiten Sie die Quellphase, indem Sie den Parameter
PollForSourceChangesfür einen Bucket mit dem Namenamzn-s3-demo-source-bucketinfalseändern wie in diesem Beispiel gezeigt.Warum nehme ich diese Änderung vor? Durch Festlegen dieses Parameters in
falsewerden periodische Prüfungen deaktiviert. Sie können daher nur die ereignisbasierte Erkennung von Änderungen verwenden."configuration": { "S3Bucket": "amzn-s3-demo-source-bucket","PollForSourceChanges": "false","S3ObjectKey": "index.zip" }, -
Wenn Sie mit einer Pipeline-Struktur arbeiten, die Sie mit dem Befehl get-pipeline abgerufen haben, müssen Sie die
metadata-Zeilen aus der JSON-Datei entfernen. Andernfalls kann der update-pipeline-Befehl sie nicht nutzen. Entfernen Sie die"metadata": { }-Zeilen und die Felder"created","pipelineARN"und"updated".Entfernen Sie z. B. die folgenden Zeilen aus der Struktur:
"metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" },Speichern Sie die Datei.
-
Um Ihre Änderungen zu übernehmen, führen Sie den Befehl update-pipeline aus und geben Sie die Pipeline-JSON-Datei an:
Wichtig
Achten Sie darauf, dass
file://vor dem Dateinamen steht. Dies ist bei diesem Befehl erforderlich.aws codepipeline update-pipeline --cli-input-json file://pipeline.jsonDieser Befehl gibt die gesamte Struktur der bearbeiteten Pipeline zurück.
Anmerkung
Der Befehl update-pipeline stoppt die Pipeline. Wenn eine Revision über die Pipeline ausgeführt wird, wenn Sie den Befehl update-pipeline ausführen, wird diese Ausführung gestoppt. Sie müssen die Ausführung der Pipeline manuell starten, um die Revision über die aktualisierte Pipeline auszuführen. Verwenden Sie den start-pipeline-execution-Befehl, um Ihre Pipeline manuell zu starten.
Migrieren Sie Polling-Pipelines mit einer S3-Quelle und einem S3-Trail CloudTrail (CloudFormation Vorlage)
Gehen Sie wie folgt vor, um Ihre Pipeline mit einer Amazon S3-Quelle vom Polling bis zur ereignisbasierten Änderungserkennung zu bearbeiten.
Um eine ereignisgesteuerte Pipeline mit Amazon S3 zu erstellen, bearbeiten Sie den PollForSourceChanges Parameter Ihrer Pipeline und fügen dann Ihrer Vorlage die folgenden Ressourcen hinzu:
-
EventBridge erfordert, dass alle Amazon S3-Ereignisse protokolliert werden müssen. Sie müssen eine AWS CloudTrail Trail-, Bucket- und Bucket-Richtlinie erstellen, die Amazon S3 verwenden kann, um die auftretenden Ereignisse zu protokollieren. Weitere Informationen finden Sie unter Protokollieren von Datenereignissen für Pfade und Protokollieren von Verwaltungsereignissen für Pfade.
-
EventBridge Regel und IAM-Rolle, damit dieses Ereignis Ihre Pipeline starten kann.
Wenn Sie es verwenden CloudFormation , um Ihre Pipelines zu erstellen und zu verwalten, enthält Ihre Vorlage Inhalte wie den folgenden.
Anmerkung
Die Configuration-Eigenschaft in der Quellstufe mit dem Namen PollForSourceChanges. Wenn diese Eigenschaft in Ihrer Vorlage nicht enthalten ist, dann wird PollForSourceChanges standardmäßig auf true festgelegt.
Um eine EventBridge Regel mit Amazon S3 als Ereignisquelle und CodePipeline Ziel zu erstellen und die Berechtigungsrichtlinie anzuwenden
-
Verwenden Sie in der Vorlage unter die
AWS::IAM::RoleCloudFormation RessourceResources, um die IAM-Rolle zu konfigurieren, die es Ihrem Event ermöglicht, Ihre Pipeline zu starten. Dieser Eintrag erstellt eine Rolle mit zwei Richtlinien:-
Die erste Richtlinie ermöglicht die Übernahme der Rolle.
-
Die zweite Richtlinie stellt Berechtigungen zum Starten der Pipeline bereit.
Warum nehme ich diese Änderung vor? Das Hinzufügen einer
AWS::IAM::RoleRessource ermöglicht CloudFormation das Erstellen von Berechtigungen für EventBridge. Diese Ressource wird Ihrem CloudFormation Stack hinzugefügt. -
-
Verwenden Sie die
AWS::Events::RuleCloudFormation Ressource, um eine EventBridge Regel hinzuzufügen. Dieses Ereignismuster erstellt ein EreignisCopyObject,PutObjectdas IhrenCompleteMultipartUploadAmazon S3-Quell-Bucket überwacht. Fügen Sie darüber hinaus ein Ziel für Ihre Pipeline ein. WennCopyObject,PutObjectoderCompleteMultipartUploadauftritt, ruft diese RolleStartPipelineExecutionin Ihrer Ziel-Pipeline auf.Warum nehme ich diese Änderung vor? Durch Hinzufügen der
AWS::Events::RuleRessource kann CloudFormation das Ereignis erstellt werden. Diese Ressource wird Ihrem CloudFormation Stack hinzugefügt. -
Fügen Sie diesen Ausschnitt zu Ihrer ersten Vorlage hinzu, um Stack-übergreifende Funktionalität zu ermöglichen:
-
(Optional) Verwenden Sie den folgenden YAML-Snippet, um einen Eingangstransformator mit Quellüberschreibungen für eine bestimmte Bild-ID zu konfigurieren. Im folgenden Beispiel wird eine Überschreibung konfiguriert, bei der:
-
SourceIn diesem Beispiel ist deractionNamedynamische Wert, der bei der Pipelineerstellung definiert und nicht aus dem Quellereignis abgeleitet wurde. -
S3_OBJECT_VERSION_IDIn diesem Beispiel ist derrevisionTypedynamische Wert, der bei der Pipelineerstellung definiert und nicht vom Quellereignis abgeleitet wurde. -
In diesem Beispiel wird <
revisionValue> von der Quellereignisvariablen abgeleitet.revisionValue
--- Rule: my-rule Targets: - Id: MyTargetId Arn:pipeline-ARNInputTransformer: InputPathsMap: revisionValue: "$.detail.object.version-id" InputTemplate: sourceRevisions: actionName:SourcerevisionType:S3_OBJECT_VERSION_IDrevisionValue: '<revisionValue>' -
-
Speichern Sie die aktualisierte Vorlage auf Ihrem lokalen Computer und öffnen Sie die CloudFormation Konsole.
-
Wählen Sie Ihren Stack aus und klicken Sie auf Create Change Set for Current Stack (Änderungssatz für laufenden Stack erstellen).
-
Laden Sie Ihre aktualisierte Vorlage hoch und zeigen Sie dann die in CloudFormation aufgeführten Änderungen an. Dies sind die Änderungen, die am Stack vorgenommen werden. Ihre neuen Ressourcen sollten in der Liste angezeigt werden.
-
Wählen Sie Ausführen.
Um den PollForSourceChanges Parameter Ihrer Pipeline zu bearbeiten
Wichtig
Wenn Sie eine Pipeline mit dieser Methode erstellen, ist der Parameter PollForSourceChanges standardmäßig „true“, wenn er nicht ausdrücklich auf „false“ gesetzt wird. Wenn Sie ereignisbasierte Erkennung hinzufügen, müssen Sie den Parameter Ihrer Ausgabe hinzufügen und Ihn auf „false“ setzen, um die Abfrage zu deaktivieren. Andernfalls wird Ihre Pipeline bei einer einzigen Quelländerung zweimal gestartet. Details hierzu finden Sie unter Gültige Einstellungen für den PollForSourceChanges Parameter.
-
Ändern Sie in der Vorlage
PollForSourceChangesinfalse. Wenn SiePollForSourceChangesnicht in Ihre Pipeline-Definition einbezogen haben, fügen Sie das Objekt hinzu und legen es auffalsefest.Warum nehme ich diese Änderung vor? Durch Ändern von
PollForSourceChangesinfalsewerden periodische Prüfungen deaktiviert. Sie können daher nur die ereignisbasierte Erkennung von Änderungen verwenden.
Um eine zweite Vorlage für die CloudTrail Ressourcen Ihrer Amazon S3-Pipeline zu erstellen
-
Verwenden Sie in einer separaten Vorlage unter
ResourcesdieAWS::CloudTrail::TrailCloudFormation RessourcenAWS::S3::Bucket,AWS::S3::BucketPolicy, und, um eine einfache Bucket-Definition und einen Pfad für bereitzustellen CloudTrail.Warum nehme ich diese Änderung vor? Da das aktuelle Limit von fünf Trails pro Konto gilt, muss der CloudTrail Trail separat erstellt und verwaltet werden. (Siehe Grenzwerte unter AWS CloudTrail.) Sie können jedoch viele Amazon S3-Buckets in einen einzigen Trail aufnehmen, sodass Sie den Trail einmal erstellen und dann bei Bedarf Amazon S3-Buckets für andere Pipelines hinzufügen können. Fügen Sie den folgenden Code in Ihre zweite Beispielvorlagendatei ein.
Beispiel
Wenn Sie diese Ressourcen verwenden CloudFormation , wird Ihre Pipeline ausgelöst, wenn Dateien in Ihrem Repository erstellt oder aktualisiert werden.
Anmerkung
Hören Sie hier nicht auf. Obwohl Ihre Pipeline erstellt wurde, müssen Sie eine zweite CloudFormation Vorlage für Ihre Amazon S3-Pipeline erstellen. Wenn Sie die zweite Vorlage nicht erstellen, enthält Ihre Pipeline keine Funktionalität für die Änderungserkennung.
Migrieren Sie Polling-Pipelines für eine GitHub Quellaktion (über die OAuth-App) zu Verbindungen
Sie können eine Quellaktion GitHub (über die OAuth-App) migrieren, um Verbindungen für Ihr externes Repository zu verwenden. Dies ist die empfohlene Methode zur Erkennung von Änderungen für Pipelines mit einer Quellaktion GitHub (über die OAuth-App).
Für eine Pipeline mit einer Quellaktion GitHub (über die OAuth-App) empfehlen wir, die Pipeline so zu ändern, dass eine Aktion GitHub (über die GitHub App) verwendet wird, sodass die Änderungserkennung automatisiert erfolgt. AWS CodeConnections Weitere Informationen zum Arbeiten mit Verbindungen finden Sie unter. GitHub Verbindungen
Stellen Sie eine Verbindung zu GitHub (Konsole) her
Sie können die Konsole verwenden, um eine Verbindung zu herzustellen GitHub.
Schritt 1: Ersetzen Sie Ihre GitHub Aktion (über die OAuth-App)
Verwenden Sie die Pipeline-Bearbeitungsseite, um Ihre Aktion GitHub (über die OAuth-App) durch eine Aktion GitHub (über GitHub die App) zu ersetzen.
Um Ihre Aktion GitHub (über die OAuth-App) zu ersetzen
-
Loggen Sie sich in die CodePipeline Konsole ein.
-
Wählen Sie Ihre Pipeline aus und klicken Sie auf Bearbeiten. Wählen Sie auf Ihrer Quellstufe Stufe bearbeiten aus. Es wird eine Meldung angezeigt, in der empfohlen wird, Ihre Aktion zu aktualisieren.
-
Wählen Sie unter Aktionsanbieter die Option GitHub (über GitHub App) aus.
-
Führen Sie eine der folgenden Aktionen aus:
-
Wählen Sie unter Verbindung die Option Verbinden mit aus, falls Sie noch keine Verbindung zu Ihrem Anbieter hergestellt haben GitHub. Fahren Sie mit Schritt 2 fort: Erstellen Sie eine Verbindung zu GitHub.
-
Wenn Sie bereits eine Verbindung zu Ihrem Anbieter hergestellt haben, wählen Sie unter Verbindung die Verbindung aus. Fahren Sie mit Schritt 3: Speichern Sie die Quellaktion für Ihre Verbindung fort.
-
Schritt 2: Erstellen Sie eine Verbindung zu GitHub
Nachdem Sie sich entschieden haben, die Verbindung herzustellen, wird die GitHub Seite Verbinden mit angezeigt.
Um eine Verbindung herzustellen zu GitHub
-
Unter GitHub Verbindungseinstellungen wird Ihr Verbindungsname im Feld Verbindungsname angezeigt.
Wählen Sie unter GitHub Apps eine App-Installation aus oder wählen Sie Eine neue App installieren, um eine zu erstellen.
Anmerkung
Sie installieren eine App für alle Verbindungen mit einem bestimmten Anbieter. Wenn Sie die GitHub App bereits installiert haben, wählen Sie sie aus und überspringen Sie diesen Schritt.
-
Wenn die Autorisierungsseite für GitHub angezeigt wird, melden Sie sich mit Ihren Anmeldeinformationen an und wählen Sie dann, um fortzufahren.
-
Auf der App-Installationsseite wird eine Meldung angezeigt, dass die AWS CodeStar App versucht, eine Verbindung zu Ihrem GitHub Konto herzustellen.
Anmerkung
Sie installieren die App nur einmal für jedes GitHub Konto. Wenn Sie die App schon einmal installiert haben, können Sie Configure (Konfiguration) wählen und mit einer Änderungsseite für die App-Installation fortfahren. Alternativ kommen Sie über die Schaltfläche „Back“ (Zurück) zur Konsole zurück.
-
Wählen Sie auf der AWS CodeStar Seite „Installieren“ die Option „Installieren“.
-
Auf der GitHub Seite Verbinden mit wird die Verbindungs-ID für Ihre neue Installation angezeigt. Wählen Sie Connect aus.
Schritt 3: Speichern Sie Ihre GitHub Quellaktion
Vervollständigen Sie Ihre Aktualisierungen auf der Seite „Aktion bearbeiten“, um Ihre neue Quellaktion zu speichern.
Um Ihre GitHub Quellaktion zu speichern
-
Geben Sie unter Repository den Namen Ihres Drittanbieter-Repositorys ein. Geben Sie im Feld Branch den Branch ein, in dem Ihre Pipeline Quelländerungen erkennen soll.
Anmerkung
Geben Sie im Feld Repository Folgendes ein,
owner-name/repository-namewie in diesem Beispiel gezeigt:my-account/my-repository -
Wählen Sie im Ausgabe-Artefaktformat das Format für Ihre Artefakte aus.
-
Um die Ausgabeartefakte der GitHub Aktion mit der Standardmethode zu speichern, wählen Sie CodePipeline Standard. Die Aktion greift auf die Dateien aus dem GitHub Repository zu und speichert die Artefakte in einer ZIP-Datei im Pipeline-Artefaktspeicher.
-
Um eine JSON-Datei zu speichern, die einen URL-Verweis auf das Repository enthält, damit Downstream-Aktionen Git-Befehle direkt ausführen können, wählen Sie Full clone (Vollständiger Klon). Diese Option kann nur von CodeBuild nachgelagerten Aktionen verwendet werden.
Wenn Sie diese Option wählen, müssen Sie die Berechtigungen für Ihre CodeBuild Projektservice-Rolle aktualisieren, wie unter gezeigtFüge CodeBuild GitClone Berechtigungen für Verbindungen zu Bitbucket, Enterprise Server oder hinzu GitHub GitHub GitLab.com. Ein Tutorial, das Ihnen zeigt, wie Sie die Option „Vollständiger Klon“ verwenden, finden Sie unterTutorial: Vollständigen Klon mit einer GitHub Pipeline-Quelle verwenden.
-
-
Unter Ausgabeartefakte können Sie den Namen des Ausgabe-Artefakts für diese Aktion beibehalten, z. B.
SourceArtifactWählen Sie Fertig, um die Seite „Aktion bearbeiten“ zu schließen. -
Wählen Sie „Fertig“, um die Seite zur Bearbeitung der Phase zu schließen. Wählen Sie Speichern, um die Seite zur Bearbeitung der Pipeline zu schließen.
Erstellen Sie eine Verbindung zu GitHub (CLI)
Sie können das AWS Command Line Interface (AWS CLI) verwenden, um eine Verbindung zu herzustellen GitHub.
Verwenden Sie dazu den Befehl create-connection.
Wichtig
Eine Verbindung, die über AWS CLI oder AWS CloudFormation erstellt wurde, hat standardmäßig PENDING den Status. Nachdem Sie eine Verbindung mit der CLI oder hergestellt haben CloudFormation, bearbeiten Sie die Verbindung mithilfe der Konsole, um ihren Status zu ermittelnAVAILABLE.
Um eine Verbindung herzustellen zu GitHub
-
Öffnen Sie die Eingabeaufforderung (Windows) oder das Terminal (Linux, macOS oder Unix). Verwenden Sie den AWS CLI , um den create-connection Befehl auszuführen, und geben Sie dabei das
--provider-typeund--connection-namefür Ihre Verbindung an. In diesem Beispiel lautet der Name des DrittanbietersGitHubund der angegebene VerbindungsnameMyConnection.aws codeconnections create-connection --provider-type GitHub --connection-name MyConnectionWenn der Befehl erfolgreich ausgeführt wurde, gibt er die ARN-Informationen der Verbindung ähnlich der folgenden zurück.
{ "ConnectionArn": "arn:aws:codeconnections:us-west-2:account_id:connection/aEXAMPLE-8aad-4d5d-8878-dfcab0bc441f" } -
Verwenden Sie die Konsole, um die Verbindung fertigzustellen.
Migrieren Sie Polling-Pipelines für eine GitHub Quellaktion (über die OAuth-App) zu Webhooks
Sie können Ihre Pipeline migrieren, um mithilfe von Webhooks Änderungen in Ihrem Quell-Repository zu erkennen. GitHub Diese Migration zu Webhooks ist nur für die Aktion GitHub (über die OAuth-App) vorgesehen.
-
Konsole: Migrieren Sie Polling-Pipelines zu Webhooks (über die OAuth-AppGitHub ) (Quellaktionen) (Konsole)
-
CLI: Migrieren Sie Polling-Pipelines zu Webhooks GitHub (über die OAuth-App) (Quellaktionen) (CLI)
-
CloudFormation: Aktualisieren Sie die Pipelines für Push-Ereignisse GitHub (über die OAuth-App) (Quellaktionen) (CloudFormation Vorlage)
Wichtig
Verwenden Sie beim Erstellen von CodePipeline Webhooks nicht Ihre eigenen Anmeldeinformationen und verwenden Sie nicht dasselbe geheime Token für mehrere Webhooks wieder. Generieren Sie für optimale Sicherheit ein eindeutiges geheimes Token für jeden Webhook, den Sie erstellen. Das geheime Token ist eine beliebige Zeichenfolge, die Sie angeben und mit der die GitHub Webhook-Payloads berechnet und signiert werden, an die gesendeten Webhook-Payloads CodePipeline, um die Integrität und Authentizität der Webhook-Payloads zu schützen. Die Verwendung Ihrer eigenen Anmeldeinformationen oder die Wiederverwendung desselben Tokens in mehreren Webhooks kann zu Sicherheitslücken führen.
Migrieren Sie Polling-Pipelines zu Webhooks (über die OAuth-AppGitHub ) (Quellaktionen) (Konsole)
Für die Quellaktion GitHub (über die OAuth-App) können Sie die CodePipeline Konsole verwenden, um Ihre Pipeline so zu aktualisieren, dass Webhooks verwendet werden, um Änderungen in Ihrem Quell-Repository zu erkennen. GitHub
Folgen Sie diesen Schritten, um eine Pipeline zu bearbeiten, die stattdessen Polling (regelmäßige Überprüfungen) verwendet. EventBridge Wenn Sie eine Pipeline erstellen möchten, informieren Sie sich unter Erstellen Sie eine Pipeline, Stufen und Aktionen.
Wenn Sie die Konsole verwenden, wird der Parameter PollForSourceChanges für Ihre Pipeline für Sie geändert. Der GitHub Webhook wird für Sie erstellt und registriert.
So bearbeiten Sie die Quellphase einer Pipeline
-
Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die CodePipeline Konsole unter http://console.aws.amazon.com/codesuite/codepipeline/home
. Die Namen aller mit Ihrem AWS Konto verknüpften Pipelines werden angezeigt.
-
Wählen Sie im Feld Name den Namen der Pipeline aus, die Sie bearbeiten möchten. Auf diese Weise wird eine detaillierte Ansicht der Pipeline geöffnet (einschließlich des Status der Aktionen in den einzelnen Stufen der Pipeline).
-
Wählen Sie auf der Pipelinedetails-Seite Edit aus.
-
Wählen Sie in der Stufe Edit stage (Stufe bearbeiten) das Bearbeitungssymbol für die Quellaktion aus.
-
Erweitern Sie die Optionen zur Änderungserkennung und wählen Sie Amazon CloudWatch Events verwenden, um meine Pipeline automatisch zu starten, wenn eine Änderung erfolgt (empfohlen).
Es wird eine Meldung angezeigt, die darauf hinweist, dass ein Webhook CodePipeline erstellt AWS CodePipeline wird GitHub , um Änderungen an der Quelle zu erkennen: erstellt einen Webhook für Sie. Sie können sich in den folgenden Optionen abmelden. Wählen Sie Aktualisieren aus. Zusätzlich zum Webhook wird Folgendes CodePipeline erstellt:
-
Ein Geheimnis, das zufällig generiert wird und verwendet wird, um die Verbindung zu autorisieren. GitHub
-
Die Webhook-URL wird generiert, wobei der öffentliche Endpunkt für die Region verwendet wird.
CodePipeline registriert den Webhook bei. GitHub Damit wird die URL für den Empfang von Repository-Ereignissen abonniert.
-
-
Wenn Sie die Bearbeitung der Pipeline abgeschlossen haben, wählen Sie Save pipeline changes aus, um zur Übersichtsseite zurückzukehren.
Es wird eine Meldung mit dem Namen des für Ihre Pipeline zu erstellenden Webhooks angezeigt. Wählen Sie Save and continue aus.
-
Um Ihre Aktion zu testen, geben Sie eine Änderung frei, indem Sie die verwenden AWS CLI , um eine Änderung an der in der Quellphase der Pipeline angegebenen Quelle festzuschreiben.
Migrieren Sie Polling-Pipelines zu Webhooks GitHub (über die OAuth-App) (Quellaktionen) (CLI)
Führen Sie die folgenden Schritte aus, um eine Pipeline, die Abfragen (periodische Prüfungen) verwendet, zu bearbeiten, damit sie stattdessen einen Webhook verwendet. Wenn Sie eine Pipeline erstellen möchten, informieren Sie sich unter Erstellen Sie eine Pipeline, Stufen und Aktionen.
Um eine ereignisgesteuerte Pipeline zu erstellen, bearbeiten Sie den Parameter PollForSourceChanges Ihrer Pipeline und erstellen anschließend die folgenden Ressourcen manuell:
-
GitHub Webhook- und Autorisierungsparameter
So erstellen und registrieren Sie Ihren Webhook
Anmerkung
Wenn Sie die CLI verwenden oder CloudFormation eine Pipeline erstellen und einen Webhook hinzufügen, müssen Sie regelmäßige Überprüfungen deaktivieren. Um die periodischen Prüfungen zu deaktivieren, müssen Sie explizit den PollForSourceChanges-Parameter hinzufügen und auf „false“ setzen, wie in der abschließenden Prozedur unten. Andernfalls ist die Standardeinstellung für eine CLI oder CloudFormation Pipeline, dass die PollForSourceChanges Standardeinstellung true ist und in der Ausgabe der Pipeline-Struktur nicht angezeigt wird. Weitere Hinweise zu PollForSourceChanges Standardwerten finden Sie unter. Gültige Einstellungen für den PollForSourceChanges Parameter
-
Erstellen Sie in einem Texteditor eine JSON-Datei für den Webhook, den Sie erstellen möchten, und speichern Sie sie. Verwenden Sie diese Beispieldatei für einen Webhook mit dem Namen
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" } } } -
Rufen Sie den Befehl put-webhook auf und beziehen Sie die Parameter
--cli-inputund--regionein.Der folgende Beispielbefehl erstellt einen Webhook mit der JSON-Datei
webhook_json.aws codepipeline put-webhook --cli-input-json file://webhook_json.json --region "eu-central-1" -
In der in diesem Beispiel gezeigten Ausgabe für einen Webhook mit dem Namen
my-webhookwerden die URL und der ARN zurückgegeben.{ "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 diesem Beispiel wird dem Webhook Tagging hinzugefügt, indem dem Webhook der Tag-Schlüssel
Projectund der WertProjectAhinzugefügt werden. Weitere Hinweise zum Taggen von Ressourcen in finden Sie CodePipeline unter. Taggen von Ressourcen -
Rufen Sie den Befehl register-webhook-with-third-party auf und beziehen Sie den
--webhook-name-Parameter ein.Der folgende Beispielbefehl registriert einen Webhook mit dem Namen
my-webhook.aws codepipeline register-webhook-with-third-party --webhook-name my-webhook
Um den Parameter Ihrer Pipeline zu PollForSourceChanges bearbeiten
Wichtig
Wenn Sie eine Pipeline mit dieser Methode erstellen, ist der Parameter PollForSourceChanges standardmäßig „true“, wenn er nicht ausdrücklich auf „false“ gesetzt wird. Wenn Sie ereignisbasierte Erkennung hinzufügen, müssen Sie den Parameter Ihrer Ausgabe hinzufügen und Ihn auf „false“ setzen, um die Abfrage zu deaktivieren. Andernfalls wird Ihre Pipeline bei einer einzigen Quelländerung zweimal gestartet. Details hierzu finden Sie unter Gültige Einstellungen für den PollForSourceChanges Parameter.
-
Führen Sie den Befehl get-pipeline zum Kopieren der Pipeline-Struktur in eine JSON-Datei aus. Für eine Pipeline mit dem Namen
MyFirstPipelinewürden Sie beispielsweise den folgenden Befehl verwenden:aws codepipeline get-pipeline --nameMyFirstPipeline>pipeline.jsonDieser Befehl gibt nichts zurück. Die erstellte Datei sollte jedoch in dem Verzeichnis auftauchen, in dem Sie den Befehl ausgeführt haben.
-
Öffnen Sie die JSON-Datei in einem beliebigen Texteditor und bearbeiten Sie die Quellstufe, indem Sie den Parameter
PollForSourceChangesändern oder hinzufügen. In diesem Beispiel für ein Repository mit dem NamenUserGitHubRepoist der Parameter auffalsefestgelegt.Warum nehme ich diese Änderung vor? Wenn Sie diesen Parameter ändern, werden regelmäßige Überprüfungen deaktiviert, sodass Sie nur die ereignisbasierte Änderungserkennung verwenden können.
"configuration": { "Owner": "name", "Repo": "UserGitHubRepo","PollForSourceChanges": "false","Branch": "main", "OAuthToken": "****" }, -
Falls Sie mit der Pipeline-Struktur arbeiten, die mithilfe des get-pipeline-Befehls abgerufen wurde, müssen Sie die Struktur in der JSON-Datei bearbeiten, indem Sie die
metadata-Zeilen aus der Datei entfernen. Andernfalls kann der update-pipeline-Befehl sie nicht nutzen. Entfernen Sie den Abschnitt"metadata"aus der Pipeline-Struktur in der JSON-Datei, einschließlich{ }und der Felder"created","pipelineARN"und"updated".Entfernen Sie z. B. die folgenden Zeilen aus der Struktur:
"metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" },Speichern Sie die Datei.
-
Führen Sie den Befehl update-pipeline aus, um die Änderungen zu übernehmen. Geben Sie die Pipeline-JSON-Datei dabei folgendermaßen an:
Wichtig
Achten Sie darauf, dass
file://vor dem Dateinamen steht. Dies ist bei diesem Befehl erforderlich.aws codepipeline update-pipeline --cli-input-json file://pipeline.jsonDieser Befehl gibt die gesamte Struktur der bearbeiteten Pipeline zurück.
Anmerkung
Der Befehl update-pipeline stoppt die Pipeline. Wenn eine Revision über die Pipeline ausgeführt wird, wenn Sie den Befehl update-pipeline ausführen, wird diese Ausführung gestoppt. Sie müssen die Ausführung der Pipeline manuell starten, um die Revision über die aktualisierte Pipeline auszuführen. Verwenden Sie den start-pipeline-execution-Befehl, um Ihre Pipeline manuell zu starten.
Aktualisieren Sie die Pipelines für Push-Ereignisse GitHub (über die OAuth-App) (Quellaktionen) (CloudFormation Vorlage)
Folgen Sie diesen Schritten, um Ihre Pipeline (mit einer GitHub Quelle) von regelmäßigen Überprüfungen (Polling) auf ereignisbasierte Änderungserkennung mithilfe von Webhooks zu aktualisieren.
Um eine ereignisgesteuerte Pipeline mit zu erstellen AWS CodeCommit, bearbeiten Sie den PollForSourceChanges Parameter Ihrer Pipeline und fügen dann Ihrer Vorlage eine GitHub Webhook-Ressource hinzu.
Wenn Sie es verwenden CloudFormation , um Ihre Pipelines zu erstellen und zu verwalten, enthält Ihre Vorlage Inhalte wie den folgenden.
Anmerkung
Beachten Sie die PollForSourceChanges-Konfigurationseigenschaft in der Quellstufe. Wenn diese Eigenschaft in Ihrer Vorlage nicht enthalten ist, dann wird PollForSourceChanges standardmäßig auf true festgelegt.
So fügen Sie Parameter hinzu und erstellen einen Webhook in Ihrer Vorlage
Wir empfehlen dringend, dass Sie diese Option verwenden, AWS Secrets Manager um Ihre Anmeldeinformationen zu speichern. Wenn Sie Secrets Manager verwenden, müssen Sie Ihre geheimen Parameter bereits in Secrets Manager konfiguriert und gespeichert haben. In diesem Beispiel werden dynamische Verweise auf Secrets Manager für die GitHub Anmeldeinformationen für Ihren Webhook verwendet. Weitere Informationen finden Sie unter Verwenden von dynamischen Referenzen zum Angeben von Vorlagenwerten.
Wichtig
Geben Sie bei der Übergabe von Secret-Parametern den Wert nicht direkt in die Vorlage ein. Der Wert wird als Klartext gerendert und ist daher lesbar. Verwenden Sie aus Sicherheitsgründen keinen Klartext in Ihrer CloudFormation Vorlage, um Ihre Anmeldeinformationen zu speichern.
Wenn Sie die CLI verwenden oder CloudFormation eine Pipeline erstellen und einen Webhook hinzufügen, müssen Sie regelmäßige Überprüfungen deaktivieren.
Anmerkung
Um die periodischen Prüfungen zu deaktivieren, müssen Sie explizit den PollForSourceChanges-Parameter hinzufügen und auf „false“ setzen, wie in der abschließenden Prozedur unten. Andernfalls ist die Standardeinstellung für eine CLI oder CloudFormation Pipeline, dass die PollForSourceChanges Standardeinstellung true ist und in der Ausgabe der Pipeline-Struktur nicht angezeigt wird. Weitere Hinweise zu PollForSourceChanges Standardwerten finden Sie unter. Gültige Einstellungen für den PollForSourceChanges Parameter
-
Fügen Sie in der Vorlage unter
ResourcesIhre Parameter hinzu: -
Verwenden Sie die
AWS::CodePipeline::WebhookCloudFormation Ressource, um einen Webhook hinzuzufügen.Anmerkung
Die angegebene
TargetActionmuss mit der in der Pipeline definiertenName-Eigenschaft Ihrer Quellaktion übereinstimmen.Wenn auf gesetzt
RegisterWithThirdPartyisttrue, stellen Sie sicher, dass der dem zugeordnete Benutzer die erforderlichen Bereiche festlegenOAuthTokenkann. GitHub Das Token und der Webhook erfordern die folgenden Bereiche: GitHub-
repo: Wird für die vollständige Kontrolle in Bezug auf das Lesen und Einfügen von Artefakten aus öffentlichen und privaten Repositorys in eine Pipeline verwendet. -
admin:repo_hook: Wird für die vollständige Kontrolle in Bezug auf Repository-Hooks verwendet.
Andernfalls wird ein GitHub 404-Wert zurückgegeben. Weitere Informationen zum zurückgegebenen Fehler 404 erhalten Sie unter https://help.github.com/articles/about-webhooks
. -
-
Speichern Sie die aktualisierte Vorlage auf Ihrem lokalen Computer und öffnen Sie dann die CloudFormation Konsole.
-
Wählen Sie Ihren Stack aus und klicken Sie auf Create Change Set for Current Stack (Änderungssatz für laufenden Stack erstellen).
-
Laden Sie die Vorlage hoch und zeigen Sie dann die in CloudFormation aufgeführten Änderungen an. Dies sind die Änderungen, die am Stack vorgenommen werden sollen. Ihre neuen Ressourcen sollten in der Liste angezeigt werden.
-
Wählen Sie Ausführen.
Um den PollForSourceChanges Parameter Ihrer Pipeline zu bearbeiten
Wichtig
Wenn Sie eine Pipeline mit dieser Methode erstellen, ist der Parameter PollForSourceChanges standardmäßig „true“, wenn er nicht ausdrücklich auf „false“ gesetzt wird. Wenn Sie ereignisbasierte Erkennung hinzufügen, müssen Sie den Parameter Ihrer Ausgabe hinzufügen und Ihn auf „false“ setzen, um die Abfrage zu deaktivieren. Andernfalls wird Ihre Pipeline bei einer einzigen Quelländerung zweimal gestartet. Details hierzu finden Sie unter Gültige Einstellungen für den PollForSourceChanges Parameter.
-
Ändern Sie in der Vorlage
PollForSourceChangesinfalse. Wenn SiePollForSourceChangesnicht in Ihre Pipeline-Definition einbezogen haben, fügen Sie das Objekt hinzu und legen es auf "false" fest.Warum nehme ich diese Änderung vor? Durch Ändern dieses Parameters in
falsewerden periodische Prüfungen deaktiviert. Sie können daher nur die ereignisbasierte Erkennung von Änderungen verwenden.
Beispiel
Wenn Sie diese Ressourcen mit erstellen CloudFormation, wird der definierte Webhook im angegebenen GitHub Repository erstellt. Ihre Pipeline wird bei einem Commit ausgelöst.