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 Abfrage-Pipelines, um die ereignisbasierte Änderungserkennung zu nutzen
AWS CodePipeline unterstützt die vollständige, end-to-end kontinuierliche Bereitstellung, was das Starten Ihrer Pipeline bei jeder Codeänderung einschließt. Es gibt zwei unterstützte Methoden, um Ihre Pipeline nach einer Codeänderung zu starten: ereignisbasierte Änderungserkennung und Abfrage. Wir empfehlen, die ereignisbasierte Änderungserkennung für Pipelines zu verwenden.
Verwenden Sie die hier aufgeführten Verfahren, um Ihre Abfrage-Pipelines auf die ereignisbasierte Methode zur Änderungserkennung für Ihre Pipeline zu migrieren (zu aktualisieren).
Die empfohlene Methode zur ereignisbasierten Änderungserkennung für Pipelines wird durch die Pipeline-Quelle bestimmt, z. B. CodeCommit In diesem Fall müsste die Polling-Pipeline beispielsweise auf die ereignisbasierte Änderungserkennung mit migrieren. EventBridge
Wie migriert man Polling-Pipelines
Um Abfrage-Pipelines zu migrieren, ermitteln Sie Ihre Abfrage-Pipelines und legen Sie dann die empfohlene Methode zur ereignisbasierten Änderungserkennung fest:
-
Verwenden Sie die unter beschriebenen Schritte, um Ihre Abfrage-Pipelines Polling-Pipelines in Ihrem Konto anzeigen zu ermitteln.
-
Suchen Sie in der Tabelle nach Ihrem Pipeline-Quelltyp und wählen Sie dann das Verfahren mit der Implementierung aus, die 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 von CLI oder AWS CloudFormation.
Migrieren von Pipelines zur empfohlenen Methode zur Änderungserkennung | ||
---|---|---|
Quelle der Pipeline | Empfohlene ereignisbasierte Erkennungsmethode | Migrationsverfahren |
AWS CodeCommit | EventBridge (empfohlen). | Siehe Migrieren Sie Abfrage-Pipelines mit einer Quelle CodeCommit . |
Amazon S3 | EventBridge und Bucket für Ereignisbenachrichtigungen aktiviert (empfohlen). | Siehe Migrieren Sie Abfrage-Pipelines mit einer für Ereignisse aktivierten S3-Quelle. |
Amazon S3 | EventBridge und eine AWS CloudTrail Spur. | Siehe Migrieren Sie Polling-Pipelines mit einer S3-Quelle und einem S3-Trail CloudTrail . |
GitHub Version 1 | Verbindungen (empfohlen) | Siehe Migrieren Sie Polling-Pipelines für eine Quellaktion der GitHub Version 1 zu Verbindungen. |
GitHub Version 1 | Webhooks | Siehe Migrieren Sie Polling-Pipelines für eine Quellaktion der GitHub Version 1 zu Webhooks. |
Wichtig
Für entsprechende Aktualisierungen der Konfiguration von Pipeline-Aktionen, wie z. B. Pipelines mit einer Aktion der GitHub Version 1, müssen Sie den PollForSourceChanges
Parameter in der Konfiguration Ihrer Source-Aktion 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 Abfrage zu konfigurieren, indem Sie beispielsweise eine EventBridge Regel konfigurieren und gleichzeitig den Parameter weglassen. 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 Abfragen konfiguriert sind. Dies sind die Pipelines für die Migration zur ereignisbasierten Änderungserkennung.
Abfrage-Pipelines in Ihrem Konto anzeigen (Skript)
Gehen Sie wie folgt vor, um mithilfe eines Skripts die 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 PollingPipelinesExtractor.sh zu erstellen.
vi PollingPipelinesExtractor.sh
-
Um ein Python-Skript zu verwenden, führen Sie den folgenden Befehl aus, um ein neues Python-Skript namens PollingPipelinesExtractor.py zu erstellen.
vi PollingPipelinesExtractor.py
-
-
Kopieren Sie den folgenden Code und fügen Sie ihn in das PollingPipelinesExtractorSkript 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 Skript mit dem Namen „PollingPipelinesExtractor.sh“ auszuführen. 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 PollingPipelinesExtractor .py auszuführen. 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 Abfragequelle auf die empfohlene ereignisbasierte Methode zur Erkennung von Änderungen.
Anmerkung
Ihre Abfrage-Pipelines werden durch die Aktionskonfiguration der Pipeline für den Parameter bestimmt.
PollForSourceChanges
Wenn in der Konfiguration der Pipeline-Quelle derPollForSourceChanges
Parameter weggelassen wurde, wird CodePipeline standardmäßig Ihr Repository nach Quelländerungen abgefragt. Dieses Verhalten ist dasselbe, als obPollForSourceChanges
es 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 der Amazon S3 S3-Quellaktion unterReferenz zur Amazon S3 S3-Quellaktion.Beachten Sie, dass dieses Skript auch eine .csv-Datei generiert, die die Liste der Abfrage-Pipelines in Ihrem Konto enthält, und die CSV-Datei im aktuellen Arbeitsordner speichert.
-
Migrieren Sie Abfrage-Pipelines mit einer Quelle CodeCommit
Sie können Ihre Polling-Pipeline migrieren, um sie EventBridge zur Erkennung von Änderungen in Ihrem CodeCommit Quell-Repository oder Ihrem Amazon S3 S3-Quell-Bucket zu verwenden.
CodeCommit-- Bei einer Pipeline mit einer CodeCommit Quelle ändern Sie die Pipeline so, dass die Änderungserkennung automatisiert wird. EventBridge Wählen Sie aus den folgenden Methoden, um die Migration zu implementieren:
Migrieren von Abfrage-Pipelines (CodeCommit oder Amazon S3 S3-Quelle) (Konsole)
Sie können die CodePipeline Konsole verwenden, um Ihre Pipeline zu aktualisieren, um Änderungen in Ihrem CodeCommit Quell-Repository oder Ihrem Amazon S3 S3-Quell-Bucket zu erkennen. EventBridge
Anmerkung
Wenn Sie die Konsole verwenden, um eine Pipeline zu bearbeiten, die über ein CodeCommit Quell-Repository oder einen Amazon S3 S3-Quell-Bucket verfügt, werden die Regel und IAM Rolle für Sie erstellt. Wenn Sie die AWS CLI Pipeline bearbeiten, müssen Sie die EventBridge Regel und 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 Eine Pipeline, Phasen und Aktionen erstellen.
So bearbeiten Sie die Quellphase einer Pipeline
-
Melden Sie sich bei der an AWS Management Console 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 automatisch zu starten, wenn eine Änderung eintritt (empfohlen).
Es wird eine Meldung mit der EventBridge Regel angezeigt, die für diese Pipeline erstellt werden soll. Wählen Sie Aktualisieren.
Wenn Sie eine Pipeline aktualisieren, die über eine Amazon S3 S3-Quelle verfügt, wird die folgende Meldung angezeigt. Wählen Sie Aktualisieren.
-
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 mit dem AWS CLI eine Änderung an der Quelle festschreiben, die in der Quellphase der Pipeline angegeben wurde.
Migrieren Sie Abfrage-Pipelines (CodeCommit Quelle) () CLI
Gehen Sie wie folgt vor, um eine Pipeline zu bearbeiten, die Abfragen (regelmäßige Prüfungen) verwendet, um eine EventBridge Regel zum Starten der Pipeline zu verwenden. Wenn Sie eine Pipeline erstellen möchten, informieren Sie sich unter Eine Pipeline, Phasen und Aktionen erstellen.
Um eine ereignisgesteuerte Pipeline mit zu erstellen CodeCommit, bearbeiten Sie den PollForSourceChanges
Parameter Ihrer Pipeline und erstellen dann die folgenden Ressourcen:
-
EventBridge Ereignis
-
IAMRolle, 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 get-pipeline Befehl aus, um die Pipeline-Struktur in eine JSON Datei zu kopieren. Geben Sie für eine Pipeline mit dem Namen
MyFirstPipeline
den folgenden Befehl ein:aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
Dieser 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 Klartext-Editor und bearbeiten Sie die Quellstufe
false
, indem Sie denPollForSourceChanges
Parameter wie in diesem Beispiel gezeigt auf ändern.Warum nehme ich diese Änderung vor? Durch Ändern dieses Parameters in
false
werden 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 der Pipeline-Struktur arbeiten, die mit dem get-pipeline Befehl abgerufen wurde, entfernen Sie die
metadata
Zeilen aus der JSON Datei. 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 update-pipeline Befehl aus und geben Sie die JSON Pipeline-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.json
Dieser 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 Servicerolle EventBridge zu übernehmen. Geben Sie der Vertrauensrichtlinie den Namen
trustpolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
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 BerechtigungsrichtlinieJSON, wie in diesem Beispiel gezeigt, für die Pipeline mit dem Namen
MyFirstPipeline
. Geben Sie der Berechtigungsrichtlinie den NamenpermissionspolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
-
Verwenden Sie den folgenden Befehl, um die Berechtigungsrichtlinie
CodePipeline-Permissions-Policy-for-EB
der RolleRole-for-MyRule
anzufü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 AWS 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 an:
-
Der Parameter
--rule
wird für denrule_name
verwendet, den Sie mit put-rule erstellt haben. -
Der Parameter
--targets
wird für die Listen-Id
des Ziels in der Zielliste und denARN
der Ziel-Pipeline verwendet.
Der folgende Beispielbefehl legt fest, dass für die Regel mit dem Namen
MyCodeCommitRepoRule
die Ziel-Id
aus 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 BeispielARN
fü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
-
Migrieren Sie Abfrage-Pipelines (CodeCommit Quelle) (AWS 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 deine EventBridge Regel
Wenn Sie AWS CloudFormation Ihre Pipelines erstellen und verwalten, enthält Ihre Vorlage Inhalte wie die 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 AWS CloudFormation Pipeline-Vorlage zu aktualisieren und eine Regel zu erstellen EventBridge
-
Verwenden Sie in der Vorlage unter die
AWS::IAM::Role
AWS CloudFormation 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? Durch das Hinzufügen der
AWS::IAM::Role
Ressource können AWS CloudFormation Sie Berechtigungen für erstellen EventBridge. Diese Ressource wird Ihrem AWS CloudFormation Stack hinzugefügt. -
-
Verwenden Sie in der Vorlage unter die
AWS::Events::Rule
AWS CloudFormation RessourceResources
, um eine EventBridge Regel hinzuzufügen. Dieses Ereignismuster erzeugt ein Ereignis, das Push-Änderungen an Ihrem Repository überwacht. Wenn eine Änderung des Repository-Status EventBridge erkannt wird, wird die Regel inStartPipelineExecution
Ihrer Zielpipeline aufgerufen.Warum nehme ich diese Änderung vor? Durch Hinzufügen der
AWS::Events::Rule
Ressource kann AWS CloudFormation das Ereignis erstellt werden. Diese Ressource wird Ihrem AWS CloudFormation Stack hinzugefügt. -
Speichern Sie die aktualisierte Vorlage auf Ihrem lokalen Computer und öffnen Sie die AWS 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 AWS 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 Execute (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
PollForSourceChanges
infalse
. Wenn SiePollForSourceChanges
nicht in Ihre Pipeline-Definition einbezogen haben, fügen Sie das Objekt hinzu und legen es auffalse
fest.Warum nehme ich diese Änderung vor? Durch Ändern dieses Parameters in
false
werden periodische Prüfungen deaktiviert. Sie können daher nur die ereignisbasierte Erkennung von Änderungen verwenden.
Wenn Sie diese Ressourcen mit erstellen AWS 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 Abfrage-Pipelines mit einer für Ereignisse aktivierten S3-Quelle
Bei einer Pipeline mit einer Amazon S3 S3-Quelle ändern Sie die Pipeline so, dass die Änderungserkennung über EventBridge und mit einem Quell-Bucket, der für Ereignisbenachrichtigungen aktiviert ist, automatisiert wird. Dies ist die empfohlene Methode, wenn Sie das CLI oder verwenden, AWS CloudFormation um Ihre Pipeline zu migrieren.
Anmerkung
Dazu gehört 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 Ereignisregel und ein CloudTrail Trail für Sie eingerichtet. Informationen zu diesen Schritten finden Sie unterMigrieren Sie Polling-Pipelines mit einer S3-Quelle und einem S3-Trail CloudTrail .
Migrieren Sie Abfrage-Pipelines mit einer S3-Quelle, die für Ereignisse aktiviert ist () CLI
Gehen Sie wie folgt vor, um eine Pipeline zu bearbeiten, die Polling (regelmäßige Prüfungen) verwendet, um stattdessen ein Ereignis in zu verwenden. EventBridge Wenn Sie eine Pipeline erstellen möchten, informieren Sie sich unter Eine Pipeline, Phasen und Aktionen erstellen.
Um eine ereignisgesteuerte Pipeline mit Amazon S3 zu erstellen, bearbeiten Sie den PollForSourceChanges
Parameter Ihrer Pipeline und erstellen dann die folgenden Ressourcen:
-
EventBridge Ereignisregel
-
IAMRolle, damit das EventBridge Ereignis Ihre Pipeline starten kann
Um eine EventBridge Regel mit Amazon S3 als Ereignisquelle und CodePipeline als Ziel zu erstellen und die Berechtigungsrichtlinie anzuwenden
-
Erteilen Sie Berechtigungen EventBridge , die CodePipeline zum Aufrufen der Regel verwendet werden können. Weitere Informationen finden Sie unter Verwenden ressourcenbasierter Richtlinien für Amazon. EventBridge
-
Verwenden Sie das folgende Beispiel, um die Vertrauensrichtlinie zu erstellen, damit EventBridge Sie die Servicerolle übernehmen können. Geben Sie ihr den Namen
trustpolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
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 erstellt EventBridge.
aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
-
Erstellen Sie die BerechtigungsrichtlinieJSON, wie hier für die genannte Pipeline gezeigt
MyFirstPipeline
. Geben Sie der Berechtigungsrichtlinie den NamenpermissionspolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
-
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 sie CodePipeline als Ziel hinzuzufügen, rufen Sie den put-targets Befehl auf und geben Sie die
--targets
Parameter--rule
und an.Der folgende Befehl legt fest, dass für die Regel mit dem Namen
EnabledS3SourceRule
die Ziel-Id
aus 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 BeispielARN
fü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 get-pipeline Befehl aus, um die Pipeline-Struktur in eine JSON Datei zu kopieren. Geben Sie für eine Pipeline mit dem Namen
MyFirstPipeline
den folgenden Befehl ein:aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
Dieser 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 Klartext-Editor und bearbeiten Sie die Quellphase, indem Sie den
PollForSourceChanges
Parameter für einen Bucket mit dem Namenamzn-s3-demo-source-bucket
to ändernfalse
, wie in diesem Beispiel gezeigt.Warum nehme ich diese Änderung vor? Durch Festlegen dieses Parameters in
false
werden 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 der Pipeline-Struktur arbeiten, die mit dem get-pipeline Befehl abgerufen wurde, 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 update-pipeline Befehl aus und geben Sie die JSON Pipeline-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.json
Dieser 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 Abfrage-Pipelines mit einer für Ereignisse aktivierten S3-Quelle (Vorlage)AWS CloudFormation
Dieses Verfahren gilt für eine Pipeline, bei der im Quell-Bucket Ereignisse aktiviert sind.
Gehen Sie wie folgt vor, um Ihre Pipeline mit einer Amazon S3 S3-Quelle von der Abfrage 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 die folgenden Ressourcen zu Ihrer Vorlage hinzu:
-
EventBridge Regel und IAM Rolle, damit dieses Ereignis Ihre Pipeline starten kann.
Wenn Sie Ihre Pipelines AWS CloudFormation zur Erstellung und Verwaltung 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 eine EventBridge Regel mit Amazon S3 als Ereignisquelle und CodePipeline als Ziel zu erstellen und die Berechtigungsrichtlinie anzuwenden
-
Verwenden Sie in der Vorlage unter die
AWS::IAM::Role
AWS CloudFormation 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? Durch das Hinzufügen einer
AWS::IAM::Role
AWS CloudFormation Ressource können Sie Berechtigungen für erstellen EventBridge. Diese Ressource wird Ihrem AWS CloudFormation Stack hinzugefügt. -
-
Verwenden Sie die
AWS::Events::Rule
AWS CloudFormation Ressource, um eine EventBridge Regel hinzuzufügen. Dieses Ereignismuster erzeugt ein Ereignis, das die Erstellung oder Löschung von Objekten in Ihrem Amazon S3 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 inStartPipelineExecution
Ihrer Zielpipeline aufgerufen.Warum nehme ich diese Änderung vor? Durch Hinzufügen der
AWS::Events::Rule
Ressource kann AWS CloudFormation das Ereignis erstellt werden. Diese Ressource wird Ihrem AWS CloudFormation Stack hinzugefügt. -
Speichern Sie Ihre aktualisierte Vorlage auf Ihrem lokalen Computer und öffnen Sie die AWS 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 AWS 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 Execute (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
PollForSourceChanges
infalse
. Wenn SiePollForSourceChanges
nicht in Ihre Pipeline-Definition einbezogen haben, fügen Sie das Objekt hinzu und legen es auffalse
fest.Warum nehme ich diese Änderung vor? Durch Ändern von
PollForSourceChanges
infalse
werden periodische Prüfungen deaktiviert. Sie können daher nur die ereignisbasierte Erkennung von Änderungen verwenden.
Wenn Sie diese Ressourcen erstellen, wird Ihre Pipeline ausgelöst, wenn Dateien in Ihrem Repository erstellt oder aktualisiert werden. AWS CloudFormation
Anmerkung
Hören Sie hier nicht auf. Obwohl Ihre Pipeline erstellt wurde, müssen Sie eine zweite AWS CloudFormation Vorlage für Ihre Amazon S3 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
Bei einer Pipeline mit einer Amazon S3 S3-Quelle ändern Sie die Pipeline so, dass die Änderungserkennung automatisiert wird EventBridge. Wählen Sie aus den folgenden Methoden, um die Migration zu implementieren:
-
Konsole: Migrieren von Abfrage-Pipelines (CodeCommit oder Amazon S3 S3-Quelle) (Konsole)
-
CLI: Migrieren Sie Polling-Pipelines mit einer S3-Quelle und CloudTrail trail () CLI
-
AWS CloudFormation: Migrieren Sie Abfrage-Pipelines mit einer S3-Quelle und einem CloudTrail S3-Trail (Vorlage)AWS CloudFormation
Migrieren Sie Polling-Pipelines mit einer S3-Quelle und CloudTrail trail () CLI
Gehen Sie wie folgt vor, um eine Pipeline zu bearbeiten, die Polling (regelmäßige Prüfungen) verwendet, um stattdessen ein Ereignis in zu verwenden. EventBridge Wenn Sie eine Pipeline erstellen möchten, informieren Sie sich unter Eine Pipeline, Phasen und Aktionen erstellen.
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
-
IAMRolle, damit das EventBridge Event deine Pipeline starten kann
Um einen AWS CloudTrail Trail zu erstellen und die Protokollierung zu aktivieren
Um mit dem einen Trail AWS CLI zu erstellen, 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 Erstellen eines Pfads mit der AWS Befehlszeilenschnittstelle.
-
Rufen Sie den Befehl create-trail auf und beziehen Sie die Parameter
--name
und--s3-bucket-name
ein.Warum nehme ich diese Änderung vor? Dadurch wird der für Ihren S3-Quell-Bucket erforderliche CloudTrail Trail erstellt.
Der folgende Befehl verwendet
--name
und--s3-bucket-name
zum Erstellen eines Trails mit dem Namenmy-trail
und 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
--name
verwendet, um die Protokollierung auf einem Trail mit der Bezeichnungmy-trail
zu starten.aws cloudtrail start-logging --name my-trail
-
Rufen Sie den Befehl put-event-selectors auf und beziehen Sie die Parameter
--trail-name
und--event-selectors
ein. 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? Dieser Befehl filtert Ereignisse.
Beispiel:
Im folgenden Beispielbefehl werden
--trail-name
und--event-selectors
verwendet, um die Verwaltung von Datenereignissen für einen Quell-Bucket und einen Präfix namensamzn-s3-demo-source-bucket/myFolder
anzugeben.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"] }] }]'
Um eine EventBridge Regel mit Amazon S3 als Ereignisquelle und CodePipeline als Ziel zu erstellen und die Berechtigungsrichtlinie anzuwenden
-
Erteilen Sie Berechtigungen EventBridge , die CodePipeline zum Aufrufen der Regel verwendet werden können. Weitere Informationen finden Sie unter Verwenden ressourcenbasierter Richtlinien für Amazon. EventBridge
-
Verwenden Sie das folgende Beispiel, um die Vertrauensrichtlinie zu erstellen, damit EventBridge Sie die Servicerolle übernehmen können. Geben Sie ihr den Namen
trustpolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
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 erstellt EventBridge.
aws iam create-role --role-name Role-for-MyRule --assume-role-policy-document file://trustpolicyforEB.json
-
Erstellen Sie die BerechtigungsrichtlinieJSON, wie hier für die genannte Pipeline gezeigt
MyFirstPipeline
. Geben Sie der Berechtigungsrichtlinie den NamenpermissionspolicyforEB.json
.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:StartPipelineExecution" ], "Resource": [ "arn:aws:codepipeline:us-west-2:80398EXAMPLE:MyFirstPipeline" ] } ] }
-
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 sie CodePipeline als Ziel hinzuzufügen, rufen Sie den put-targets Befehl auf und geben Sie die
--targets
Parameter--rule
und an.Der folgende Befehl legt fest, dass für die Regel mit dem Namen
MyS3SourceRule
die Ziel-Id
aus 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 BeispielARN
fü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
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 get-pipeline Befehl aus, um die Pipeline-Struktur in eine JSON Datei zu kopieren. Geben Sie für eine Pipeline mit dem Namen
MyFirstPipeline
den folgenden Befehl ein:aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
Dieser 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 Klartext-Editor und bearbeiten Sie die Quellphase, indem Sie den
PollForSourceChanges
Parameter für einen Bucket mit dem Namenamzn-s3-demo-source-bucket
to ändernfalse
, wie in diesem Beispiel gezeigt.Warum nehme ich diese Änderung vor? Durch Festlegen dieses Parameters in
false
werden 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 der Pipeline-Struktur arbeiten, die mit dem get-pipeline Befehl abgerufen wurde, 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 update-pipeline Befehl aus und geben Sie die JSON Pipeline-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.json
Dieser 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 Abfrage-Pipelines mit einer S3-Quelle und einem CloudTrail S3-Trail (Vorlage)AWS CloudFormation
Gehen Sie wie folgt vor, um Ihre Pipeline mit einer Amazon S3 S3-Quelle von der Abfrage 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 die folgenden Ressourcen zu Ihrer Vorlage hinzu:
-
EventBridge erfordert, dass alle Amazon S3 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 Datenereignisse für Trails protokollieren und Verwaltungsereignisse für Trails protokollieren.
-
EventBridge Regel und IAM Rolle, damit dieses Ereignis unsere Pipeline starten kann.
Wenn Sie Ihre Pipelines AWS CloudFormation zur Erstellung und Verwaltung 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 eine EventBridge Regel mit Amazon S3 als Ereignisquelle und CodePipeline als Ziel zu erstellen und die Berechtigungsrichtlinie anzuwenden
-
Verwenden Sie in der Vorlage unter die
AWS::IAM::Role
AWS CloudFormation 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? Durch das Hinzufügen einer
AWS::IAM::Role
AWS CloudFormation Ressource können Sie Berechtigungen für erstellen EventBridge. Diese Ressource wird Ihrem AWS CloudFormation Stack hinzugefügt. -
-
Verwenden Sie die
AWS::Events::Rule
AWS CloudFormation Ressource, um eine EventBridge Regel hinzuzufügen. Dieses Ereignismuster erzeugt ein EreignisCopyObject
,PutObject
das IhrenCompleteMultipartUpload
Amazon S3 S3-Quell-Bucket überwacht. Fügen Sie darüber hinaus ein Ziel für Ihre Pipeline ein. WennCopyObject
,PutObject
oderCompleteMultipartUpload
auftritt, ruft diese RolleStartPipelineExecution
in Ihrer Ziel-Pipeline auf.Warum nehme ich diese Änderung vor? Durch das Hinzufügen der
AWS::Events::Rule
Ressource kann AWS CloudFormation das Ereignis erstellt werden. Diese Ressource wird Ihrem AWS CloudFormation Stack hinzugefügt. -
Fügen Sie diesen Ausschnitt zu Ihrer ersten Vorlage hinzu, um Stack-übergreifende Funktionalität zu ermöglichen:
-
Speichern Sie Ihre aktualisierte Vorlage auf Ihrem lokalen Computer und öffnen Sie die AWS 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 AWS 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 Execute (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
PollForSourceChanges
infalse
. Wenn SiePollForSourceChanges
nicht in Ihre Pipeline-Definition einbezogen haben, fügen Sie das Objekt hinzu und legen es auffalse
fest.Warum nehme ich diese Änderung vor? Durch Ändern von
PollForSourceChanges
infalse
werden 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 S3-Pipeline zu erstellen
-
Verwenden Sie in einer separaten Vorlage unter
Resources
, dieAWS::CloudTrail::Trail
AWS CloudFormation RessourcenAWS::S3::Bucket
AWS::S3::BucketPolicy
, und, um eine einfache Bucket-Definition und einen Trail für bereitzustellen CloudTrail.Warum nehme ich diese Änderung vor? Angesichts des aktuellen Limits von fünf Trails pro Konto muss der CloudTrail Trail separat erstellt und verwaltet werden. (Siehe Grenzwerte unter AWS CloudTrail.) Sie können jedoch viele Amazon S3 S3-Buckets in einen einzigen Trail aufnehmen, sodass Sie den Trail einmal erstellen und dann bei Bedarf Amazon S3 S3-Buckets für andere Pipelines hinzufügen können. Fügen Sie den folgenden Code in Ihre zweite Beispielvorlagendatei ein.
Wenn Sie diese Ressourcen erstellen, wird Ihre Pipeline ausgelöst, wenn Dateien in Ihrem Repository erstellt oder aktualisiert werden. AWS CloudFormation
Anmerkung
Hören Sie hier nicht auf. Obwohl Ihre Pipeline erstellt wurde, müssen Sie eine zweite AWS CloudFormation Vorlage für Ihre Amazon S3 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 Quellaktion der GitHub Version 1 zu Verbindungen
Sie können eine Quellaktion der GitHub Version 1 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 der GitHub Version 1.
Für eine Pipeline mit einer Quellaktion für GitHub Version 1 empfehlen wir, die Pipeline so zu ändern, dass eine Aktion der GitHub Version 2 verwendet wird, sodass die Änderungserkennung automatisiert wird. AWS CodeConnections Weitere Informationen zum Arbeiten mit Verbindungen finden Sie unterGitHub 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 aus Version 1
Verwenden Sie die Pipeline-Bearbeitungsseite, um Ihre Aktion aus Version 1 durch eine GitHub Aktion aus Version 2 GitHub zu ersetzen.
Um Ihre GitHub Aktion aus Version 1 zu ersetzen
-
Melden Sie sich bei der CodePipeline Konsole an.
-
Wählen Sie Ihre Pipeline und dann Bearbeiten aus. Wählen Sie in Ihrer Quellstufe die Option Phase bearbeiten aus. Es wird eine Meldung angezeigt, in der empfohlen wird, Ihre Aktion zu aktualisieren.
-
Wählen Sie unter Aktionsanbieter die Option GitHub (Version 2) aus.
-
Führen Sie eine der folgenden Aktionen aus:
-
Wenn Sie noch keine Verbindung zu Ihrem Anbieter hergestellt haben, wählen Sie unter Verbindung die Option Connect aus GitHub. Fahren Sie mit Schritt 2 fort: Verbindung herstellen 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 fort: Speichern Sie die Quellaktion für Ihre Verbindung.
-
Schritt 2: Stellen Sie eine Verbindung her zu GitHub
Nachdem Sie sich entschieden haben, die Verbindung herzustellen, wird die GitHub Seite Connect angezeigt.
Um eine Verbindung herzustellen zu GitHub
-
Unter GitHub Verbindungseinstellungen wird Ihr Verbindungsname unter Verbindungsname angezeigt.
Wählen Sie unter GitHub Apps eine App-Installation aus oder wählen Sie 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, ob Sie fortfahren möchten.
-
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 Installationsseite die Option Installieren aus.
-
Auf der GitHub Seite Connect 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
owner-name/repository-name
wie in diesem Beispiel gezeigt ein:my-account/my-repository
-
Wählen Sie unter Ausgabeartefaktformat das Format für Ihre Artefakte aus.
-
Um die Ausgabeartefakte der GitHub Aktion mit der Standardmethode zu speichern, wählen Sie CodePipelineStandard. 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, sodass nachgelagerte Aktionen Git-Befehle direkt ausführen können, wählen Sie Vollständiger Klon. Diese Option kann nur von CodeBuild Downstream-Aktionen verwendet werden.
Wenn Sie diese Option wählen, müssen Sie die Berechtigungen für Ihre CodeBuild Projektservice-Rolle aktualisieren, wie unter beschriebenFügen Sie CodeBuild GitClone Berechtigungen für Verbindungen zu Bitbucket, Enterprise Server oder .com GitHub hinzu GitHub GitLab. Ein Tutorial, das Ihnen zeigt, wie Sie die Option Vollständiges Klonen verwenden, finden Sie unterTutorial: Vollständigen Klon mit einer GitHub Pipeline-Quelle verwenden.
-
-
Unter Ausgabeartefakte können Sie den Namen des Ausgabeartefakts für diese Aktion beibehalten, z. B.
SourceArtifact
Wählen Sie Fertig, um die Aktionsseite 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.
Stellen Sie eine Verbindung zu GitHub (CLI) her
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 dem CLI Oder hergestellt haben AWS CloudFormation, bearbeiten Sie die Verbindung in der Konsole, um ihren Status festzulegenAVAILABLE
.
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
--provider-type
und--connection-name
für Ihre Verbindung an. In diesem Beispiel lautet der Name des DrittanbietersGitHub
und der angegebene VerbindungsnameMyConnection
.aws codeconnections create-connection --provider-type GitHub --connection-name MyConnection
Bei Erfolg gibt dieser Befehl ARN Verbindungsinformationen zurück, die den folgenden ähneln.
{ "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 Quellaktion der GitHub Version 1 zu Webhooks
Sie können Ihre Pipeline migrieren, um Webhooks zu verwenden, um Änderungen in Ihrem Quell-Repository zu erkennen. GitHub Diese Migration zu Webhooks gilt nur für die Aktion GitHub Version 1.
-
Konsole: Migrieren Sie Polling-Pipelines zu Webhooks (Quellaktionen der GitHub Version 1) (Konsole)
-
CLI: Migrieren Sie Polling-Pipelines zu Webhooks (Quellaktionen der GitHub Version 1) () CLI
-
AWS CloudFormation: Aktualisieren Sie die Pipelines für Push-Ereignisse (Quellaktionen der GitHub Version 1) (AWS 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. Generieren Sie für optimale Sicherheit für jeden Webhook, den Sie erstellen, ein eindeutiges geheimes Token. Das geheime Token ist eine willkürliche Zeichenfolge, die Sie angeben und die zur Berechnung und Signierung der gesendeten Webhook-Payloads GitHub verwendet wird 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 (Quellaktionen der GitHub Version 1) (Konsole)
Für die Quellaktion der GitHub Version 1 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
Gehen Sie wie folgt vor, um eine Pipeline zu bearbeiten, die stattdessen Polling (regelmäßige Prüfungen) verwendet EventBridge . Wenn Sie eine Pipeline erstellen möchten, informieren Sie sich unter Eine Pipeline, Phasen und Aktionen erstellen.
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 Management Console 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 eintritt (empfohlen).
Es wird eine Meldung mit dem Hinweis angezeigt, dass ein Webhook CodePipeline erstellt AWS CodePipeline wird GitHub , um Quellenänderungen zu erkennen: erstellt einen Webhook für Sie. Sie können sich in den folgenden Optionen abmelden. Wählen Sie Aktualisieren. CodePipeline Erzeugt zusätzlich zum Webhook Folgendes:
-
Ein Geheimnis, das nach dem Zufallsprinzip generiert wurde und zur Autorisierung der Verbindung verwendet wird. GitHub
-
Der WebhookURL, der mithilfe des öffentlichen Endpunkts für die Region generiert wurde.
CodePipeline registriert den Webhook bei. GitHub Dieser abonniert den URL Empfang von Repository-Ereignissen.
-
-
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 mit dem eine Änderung AWS CLI an der Quelle festschreiben, die in der Quellphase der Pipeline angegeben wurde.
Migrieren Sie Polling-Pipelines zu Webhooks (Quellaktionen der GitHub Version 1) () 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 Eine Pipeline, Phasen und Aktionen erstellen.
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 das CLI oder verwenden AWS CloudFormation , um eine Pipeline zu erstellen und einen Webhook hinzuzufügen, müssen Sie regelmäßige Prü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 AWS CloudFormation OR-Pipeline, die PollForSourceChanges
standardmäßig auf true gesetzt ist und nicht in der Ausgabe der Pipeline-Struktur angezeigt wird. Weitere Hinweise zu PollForSourceChanges Standardwerten finden Sie unter. Gültige Einstellungen für den PollForSourceChanges Parameter
-
Erstellen und speichern Sie in einem Texteditor eine JSON Datei für den Webhook, den Sie erstellen möchten. 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-input
und--region
ein.Der folgende Beispielbefehl erstellt einen Webhook mit der
webhook_json
JSON Datei.aws codepipeline put-webhook --cli-input-json file://webhook_json.json --region "eu-central-1"
-
In der in diesem Beispiel gezeigten Ausgabe ARN werden die URL und für einen Webhook mit dem Namen zurückgegeben.
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 diesem Beispiel wird dem Webhook Tagging hinzugefügt, indem dem Webhook der Tag-Schlüssel
Project
und der WertProjectA
hinzugefügt werden. Weitere Hinweise zum Markieren 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
So bearbeiten Sie den Parameter Ihrer Pipeline PollForSourceChanges
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 get-pipeline Befehl aus, um die Pipeline-Struktur in eine JSON Datei zu kopieren. Für eine Pipeline mit dem Namen
MyFirstPipeline
würden Sie beispielsweise den folgenden Befehl verwenden:aws codepipeline get-pipeline --name
MyFirstPipeline
>pipeline.json
Dieser 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 Klartext-Editor und bearbeiten Sie die Quellphase, indem Sie den
PollForSourceChanges
Parameter ändern oder hinzufügen. In diesem Beispiel für ein Repository mit dem NamenUserGitHubRepo
ist der Parameter auffalse
festgelegt.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": "****" }, -
Wenn Sie mit der Pipeline-Struktur arbeiten, die mit dem get-pipeline Befehl abgerufen wurde, müssen Sie die Struktur in der JSON Datei bearbeiten, indem Sie die
metadata
Linien aus der Datei entfernen. Andernfalls kann der update-pipeline-Befehl sie nicht nutzen. Entfernen Sie den"metadata"
Abschnitt aus der Pipeline-Struktur in der JSON Datei, einschließlich der"updated"
Felder:{ }
und"created"
"pipelineARN"
, und.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 update-pipeline Befehl aus und geben Sie dabei die JSON Pipeline-Datei an, ähnlich wie im Folgenden:
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.json
Dieser 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 (Quellaktionen der GitHub Version 1) (AWS CloudFormation Vorlage)
Gehen Sie wie folgt vor, um Ihre Pipeline (mit einer GitHub Quelle) von regelmäßigen Überprüfungen (Polling) bis hin zur ereignisbasierten Ä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 eine GitHub Webhook-Ressource zu Ihrer Vorlage hinzu.
Wenn Sie AWS CloudFormation Ihre Pipelines erstellen und verwalten, hat 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 AWS Secrets Manager zum Speichern Ihrer Anmeldeinformationen verwenden. 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 AWS CloudFormation Vorlage, um Ihre Anmeldeinformationen zu speichern.
Wenn Sie das CLI oder verwenden AWS CloudFormation , um eine Pipeline zu erstellen und einen Webhook hinzuzufügen, müssen Sie die regelmäßigen Prü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 AWS CloudFormation OR-Pipeline, die PollForSourceChanges
standardmäßig auf true gesetzt ist und nicht in der Ausgabe der Pipeline-Struktur 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
Resources
Ihre Parameter hinzu: -
Verwenden Sie die
AWS::CodePipeline::Webhook
AWS CloudFormation Ressource, um einen Webhook hinzuzufügen.Anmerkung
Die angegebene
TargetAction
muss mit der in der Pipeline definiertenName
-Eigenschaft Ihrer Quellaktion übereinstimmen.Wenn auf gesetzt
RegisterWithThirdParty
isttrue
, stellen Sie sicher, dass der mit dem verknüpfte Benutzer die erforderlichen Bereiche festlegenOAuthToken
kann. 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-Fehler 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 AWS 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 AWS 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 Execute (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
PollForSourceChanges
infalse
. Wenn SiePollForSourceChanges
nicht 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
false
werden periodische Prüfungen deaktiviert. Sie können daher nur die ereignisbasierte Erkennung von Änderungen verwenden.
Wenn Sie diese Ressourcen mit erstellen AWS CloudFormation, wird der definierte Webhook im angegebenen GitHub Repository erstellt. Ihre Pipeline wird bei einem Commit ausgelöst.