Erstellen Sie eine benutzerdefinierte Aktion und fügen Sie sie hinzu in CodePipeline - AWS CodePipeline

View a markdown version of this page

Erstellen Sie eine benutzerdefinierte Aktion und fügen Sie sie hinzu in CodePipeline - AWS CodePipeline

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.

Erstellen Sie eine benutzerdefinierte Aktion und fügen Sie sie hinzu in CodePipeline

AWS CodePipeline enthält eine Reihe von Aktionen, mit denen Sie Ressourcen für Ihren automatisierten Release-Prozess konfigurieren, testen und bereitstellen können. Falls Ihr Freigabeverfahren Aktivitäten beinhaltet, die nicht durch die Standardaktionen abgedeckt sind (wie z. B. ein intern entwickelter Erstellungsprozess oder eine Testsuite), können Sie dafür eine benutzerdefinierte Aktion erstellen und diese Ihrer Pipeline hinzufügen. Sie können das verwenden AWS CLI , um benutzerdefinierte Aktionen in Pipelines zu erstellen, die Ihrem AWS Konto zugeordnet sind.

Sie können benutzerdefinierte Aktionen für die folgenden AWS CodePipeline Aktionskategorien erstellen:

  • Eine benutzerdefinierte Build-Aktionen für die Erstellung oder Umwandlung von Elementen

  • Eine benutzerdefinierte Deploy-Aktion zur Bereitstellung der Elemente für eine(n) oder mehrere Server, Webseiten oder Repositorys

  • Eine benutzerdefinierte Testaktion für die Konfiguration und Ausführung von automatisierten Tests

  • Eine benutzerdefinierte Aufrufaktionen für das Ausführen von Funktionen

Wenn Sie eine benutzerdefinierte Aktion erstellen, müssen Sie auch einen Job-Worker erstellen, der Jobanfragen CodePipeline für diese benutzerdefinierte Aktion abfragt, den Job ausführt und das Statusergebnis an zurückgibt CodePipeline. Dieser Auftragsworker kann sich auf einem beliebigem Computer oder einer beliebigen Ressource befinden, solange er Zugriff auf den öffentlichen Endpunkt für CodePipeline besitzt. Um Zugriff und Sicherheit einfach zu verwalten, sollten Sie erwägen, Ihren Job Worker auf einer Amazon EC2-Instance zu hosten.

Das folgende Diagramm zeigt einen umfassenden Überblick über eine Pipeline mit einer benutzerdefinierten Build-Aktion:

Ein umfassender Überblick über eine Pipeline mit einer benutzerdefinierten Build-Aktion.

Wenn eine Pipeline eine benutzerdefinierte Aktion als Teil einer Phase enthält, erstellt die Pipeline eine Jobanfrage. Ein benutzerdefinierter Auftragsworker erkennt diese Anforderung und führt den Auftrag aus (in diesem Beispiel ein benutzerdefinierter Vorgang mit Software von Drittanbietern). Sobald die Aktion abgeschlossen ist, wird vom Auftragsworker das Ergebnis über die erfolgreiche oder fehlgeschlagene Durchführung zurückgegeben. Wenn ein erfolgreiches Ergebnis eingeht, stellt die Pipeline die Revision und ihre Artefakte für die nächste Aktion bereit. Wenn ein Fehler zurückgegeben wird, stellt die Pipeline die Revision nicht für die nächste Aktion in der Pipeline bereit.

Anmerkung

Für diese Anleitungen müssen Sie die Schritte unter Erste Schritte mit CodePipeline ausgeführt haben.

Erstellen einer benutzerdefinierten Aktion

Um eine benutzerdefinierte Aktion zu erstellen, verwenden Sie AWS CLI
  1. Öffnen Sie einen Texteditor und erstellen Sie eine JSON-Datei mit der Aktion, dem Aktionsanbieter und allen erforderlichen Einstellungen für Ihre benutzerdefinierte Aktion. Ihre JSON-Datei für eine benutzerdefinierte Aktion mit nur einer Eigenschaft könnte beispielsweise wie folgt aussehen:

    { "category": "Build", "provider": "My-Build-Provider-Name", "version": "1", "settings": { "entityUrlTemplate": "https://my-build-instance/job/{Config:ProjectName}/", "executionUrlTemplate": "https://my-build-instance/job/{Config:ProjectName}/lastSuccessfulBuild/{ExternalExecutionId}/" }, "configurationProperties": [{ "name": "ProjectName", "required": true, "key": true, "secret": false, "queryable": false, "description": "The name of the build project must be provided when this action is added to the pipeline.", "type": "String" }], "inputArtifactDetails": { "maximumCount": integer, "minimumCount": integer }, "outputArtifactDetails": { "maximumCount": integer, "minimumCount": integer }, "tags": [{ "key": "Project", "value": "ProjectA" }] }

    In diesem Beispiel wird der benutzerdefinierten Aktion Tagging hinzugefügt, indem der benutzerdefinierten Aktion der Tag-Schlüssel Project und der Wert ProjectA hinzugefügt werden. Weitere Hinweise zum Taggen von Ressourcen in finden Sie CodePipeline unterTaggen von Ressourcen.

    Die JSON-Datei enthält zwei Eigenschaften, entityUrlTemplate und executionUrlTemplate. Solange die Konfigurationseigenschaft erforderlich und nicht geheim ist, können Sie über das Format {Config:name} in den URL-Vorlagen auf einen Namen in den Konfigurationseigenschaften der benutzerdefinierten Aktion verweisen. Im obigen Beispiel bezieht sich der entityUrlTemplate Wert beispielsweise auf die KonfigurationseigenschaftProjectName.

    • entityUrlTemplate: Der statische Link mit Informationen über die Dienstanbieter für die Aktion. Im Beispiel umfasst das Build-System einen statischen Link zu den einzelnen Build-Projekten. Das Linkformat variiert je nach Build-Anbieter oder Dienstanbieter (beispielsweise bei anderen Aktionstypen wie Test). Sie müssen dieses Linkformat so angeben, dass der Benutzer beim Hinzufügen der benutzerdefinierten Aktion mit dem Link eine Webseite im Browser öffnen kann, die die Einzelheiten für das Build-Projekt (oder die Testumgebung) enthält.

    • executionUrlTemplate: Der dynamische Link, der mit Informationen zur aktuellen oder letzten Ausführung der Aktion aktualisiert wird. Wenn Ihr benutzerdefinierter Auftragsworker den Status eines Auftrags aktualisiert (z. B. bei Erfolg, Fehler oder während der Ausführung), stellt er zusätzlich eine externalExecutionId bereit, die zur Vervollständigung des Links verwendet wird. Dieser Link kann verwendet werden, um Details zum Ausführen einer Aktion bereitzustellen.

    Wenn Sie die Aktion beispielsweise in der Pipeline anzeigen, sehen Sie die beiden folgenden Links:

    Links in der CodePipeline Konsole führen zu weiteren Informationen über den Lauf einer Pipeline.

    1 Dieser statische Link wird angezeigt, nachdem Sie Ihre benutzerdefinierte Aktion hinzugefügt haben. Er verweist auf die Adresse in entityUrlTemplate, die Sie bei der Erstellung Ihrer benutzerdefinierten Aktion angegeben haben.

    2 Dieser dynamische Link wird nach jeder Ausführung der Aktion aktualisiert und verweist auf die Adresse in executionUrlTemplate, die Sie bei der Erstellung Ihrer benutzerdefinierten Aktion angegeben haben.

    Weitere Informationen zu diesen Linktypen sowie zu RevisionURLTemplate und ThirdPartyURL finden Sie unter ActionTypeSettings und CreateCustomActionType in der CodePipeline API-Referenz. Weitere Informationen über die Anforderungen zur Aktionsstruktur und zur Erstellung einer Aktion finden Sie unter CodePipeline Referenz zur Pipeline-Struktur.

  2. Speichern Sie die JSON-Datei und geben Sie ihr einen Namen, den Sie sich leicht merken können (z. BMyCustomAction.. json).

  3. Öffnen Sie eine Terminalsitzung (Linux, OS X, Unix) oder eine Eingabeaufforderung (Windows) auf einem Computer, auf dem die AWS CLI installiert ist.

  4. Verwenden Sie den, AWS CLI um den aws codepipeline create-custom-action-type Befehl auszuführen, und geben Sie dabei den Namen der JSON-Datei an, die Sie gerade erstellt haben.

    Um beispielsweise eine benutzerdefinierte Build-Aktion zu erstellen:

    Wichtig

    Achten Sie darauf, dass file:// vor dem Dateinamen steht. Dies ist bei diesem Befehl erforderlich.

    aws codepipeline create-custom-action-type --cli-input-json file://MyCustomAction.json
  5. Dieser Befehl gibt die gesamte Struktur der erstellten, benutzerdefinierten Aktion sowie die für Sie hinzugefügte JobList-Aktionskonfigurationseigenschaft zurück. Wenn Sie die benutzerdefinierte Aktion zu einer Pipeline hinzufügen, können Sie JobList nutzen, um die Projekte vom Anbieter anzugeben, für die Sie Aufträge abfragen können. Ohne entsprechende Konfiguration werden bei der Abfrage von Aufträgen durch Ihren benutzerdefinierten Auftragsworker alle verfügbaren Aufträge zurückgegeben.

    Der vorherige Befehl könnte beispielsweise eine Struktur ähnlich der Folgenden zurückgeben:

    { "actionType": { "inputArtifactDetails": { "maximumCount": 1, "minimumCount": 1 }, "actionConfigurationProperties": [ { "secret": false, "required": true, "name": "ProjectName", "key": true, "description": "The name of the build project must be provided when this action is added to the pipeline." } ], "outputArtifactDetails": { "maximumCount": 0, "minimumCount": 0 }, "id": { "category": "Build", "owner": "Custom", "version": "1", "provider": "My-Build-Provider-Name" }, "settings": { "entityUrlTemplate": "https://my-build-instance/job/{Config:ProjectName}/", "executionUrlTemplate": "https://my-build-instance/job/mybuildjob/lastSuccessfulBuild/{ExternalExecutionId}/" } } }
    Anmerkung

    Als Teil der create-custom-action-type Befehlsausgabe umfasst der id Abschnitt Folgendes"owner": "Custom": CodePipeline weist benutzerdefinierte Aktionstypen automatisch Custom als Eigentümer zu. Dieser Wert kann zugewiesen oder geändert werden, wenn Sie den Befehl create-custom-action-type oder den Befehl update-pipeline verwenden.

Erstellen eines Auftragsworkers für Ihre benutzerdefinierte Aktion

Für benutzerdefinierte Aktionen ist ein Job-Worker erforderlich, der Jobanfragen für die benutzerdefinierte Aktion abfragt, den Job ausführt und das Statusergebnis an CodePipeline zurückgibt. CodePipeline Der Auftragsworker kann sich auf einem beliebigen Computer oder einer beliebigen Ressource befinden, solange er Zugriff auf den öffentlichen Endpunkt für CodePipeline besitzt.

Sie können Ihren Auftragsworker auf vielerlei Arten gestalten. In den folgenden Abschnitten erhalten Sie praktische Anleitungen für die Entwicklung Ihres benutzerdefinierten Auftragsworkers für CodePipeline.

Wählen und Konfigurieren einer Strategie für die Berechtigungsverwaltung Ihres Auftragsworkers

Um einen benutzerdefinierten Job-Worker für Ihre benutzerdefinierte Aktion in zu entwickeln CodePipeline, benötigen Sie eine Strategie für die Integration von Benutzer- und Rechteverwaltung.

Die einfachste Strategie besteht darin, die Infrastruktur, die Sie für Ihren benutzerdefinierten Job Worker benötigen, hinzuzufügen, indem Sie Amazon EC2-Instances mit einer IAM-Instance-Rolle erstellen, sodass Sie die Ressourcen, die Sie für Ihre Integration benötigen, problemlos skalieren können. Sie können die integrierte Integration mit verwenden AWS , um die Interaktion zwischen Ihrem benutzerdefinierten Job Worker und zu vereinfachen. CodePipeline

Um Amazon EC2-Instances einzurichten
  1. Erfahren Sie mehr über Amazon EC2 und finden Sie heraus, ob es die richtige Wahl für Ihre Integration ist. Informationen finden Sie unter Amazon EC2 — Virtual Server Hosting.

  2. Beginnen Sie mit der Erstellung Ihrer Amazon EC2-Instances. Weitere Informationen finden Sie unter Erste Schritte mit Amazon EC2 Linux-Instances.

Eine weitere Strategie, die Sie in Betracht ziehen sollten, ist die Verwendung von Identity Federation mit IAM, um Ihr vorhandenes Identitätsanbietersystem und Ihre Ressourcen zu integrieren. Diese Strategie ist besonders nützlich, wenn Sie bereits einen Unternehmensidentitätsanbieter haben oder eine Konfiguration vorgenommen wurde, um Benutzer mit Web-Identitätsanbietern zu unterstützen. Mit einem Identitätsverbund können Sie sicheren Zugriff auf AWS Ressourcen gewähren CodePipeline, auch ohne IAM-Benutzer erstellen oder verwalten zu müssen. Sie können Funktionen und Richtlinien für die Sicherheitsanforderungen bezüglich Passwörtern und die Rotation von Anmeldeinformationen nutzen. Sie können Beispielanwendungen als Vorlage für Ihre selbsterstellten Anwendungen verwenden.

So richten Sie einen Identitätsverbund ein
  1. Erfahren Sie mehr über den IAM-Identitätsverbund. Weitere Informationen finden Sie unter Manage Federation.

  2. Sehen Sie sich die Beispiele in Scenarios for Granting Temporary Access an, um das Szenario für den temporären Zugriff zu ermitteln, das am besten für Ihre benutzerdefinierte Aktion geeignet ist.

  3. Sehen Sie sich die für Ihre Infrastruktur relevanten Codebeispiele zum Identitätsverbund an. Diese sind beispielsweise:

  4. Erste Schritte bei der Konfiguration eines Identitätsverbunds. Weitere Informationen finden Sie im IAM-Benutzerhandbuch unter Identitätsanbieter und Verbund.

Erstellen Sie eine der folgenden Optionen, um sie unter Ihrem zu verwenden AWS-Konto , wenn Sie Ihre benutzerdefinierte Aktion und Ihren Job Worker ausführen.

Benutzer benötigen programmgesteuerten Zugriff, wenn sie AWS außerhalb von interagieren möchten. AWS-Managementkonsole Die Art und Weise, wie programmgesteuerter Zugriff gewährt wird, hängt vom Benutzertyp ab, der zugreift. AWS

Um Benutzern programmgesteuerten Zugriff zu gewähren, wählen Sie eine der folgenden Optionen.

Welcher Benutzer benötigt programmgesteuerten Zugriff? Bis Von
IAM (Empfohlen) Verwenden Sie Konsolenanmeldedaten als temporäre Anmeldeinformationen, um programmatische Anforderungen an die AWS SDKs AWS CLI oder APIs zu signieren. AWS

Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten.

Mitarbeiteridentität

(Benutzer, die in IAM Identity Center verwaltet werden)

Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an die AWS SDKs oder AWS CLI APIs zu signieren. AWS

Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten.

IAM Verwenden Sie temporäre Anmeldeinformationen, um programmatische Anfragen an die AWS SDKs oder APIs AWS CLI zu signieren. AWS Folgen Sie den Anweisungen unter Verwenden temporärer Anmeldeinformationen mit AWS Ressourcen im IAM-Benutzerhandbuch.
IAM

(Nicht empfohlen)

Verwenden Sie langfristige Anmeldeinformationen, um programmatische Anfragen an die AWS CLI, AWS SDKs oder APIs zu signieren. AWS

Befolgen Sie die Anweisungen für die Schnittstelle, die Sie verwenden möchten.

Es folgt ein Beispiel für eine Richtlinie, die Sie für die Verwendung mit Ihrem benutzerdefinierten Auftragsworker erstellen können. Diese Richtlinie dient lediglich als Beispiel und wird unverändert bereitgestellt.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codepipeline:PollForJobs", "codepipeline:AcknowledgeJob", "codepipeline:GetJobDetails", "codepipeline:PutJobSuccessResult", "codepipeline:PutJobFailureResult" ], "Resource": [ "arn:aws:codepipeline:us-east-2::actionType:custom/Build/MyBuildProject/1/" ] } ] }
Anmerkung

Erwägen Sie die Verwendung der AWSCodePipelineCustomActionAccess verwalteten Richtlinie.

Entwickeln eines Auftragsworkers für Ihre benutzerdefinierte Aktion

Nachdem Sie Ihre Strategie für die Verwaltung von Berechtigungen ausgewählt haben, sollten Sie sich überlegen, wie Ihr Mitarbeiter mit der Bearbeitung umgehen wird CodePipeline. Das folgende übersichtliche Diagramm zeigt den Arbeitsablauf einer benutzerdefinierten Aktion und eines Jobworkers für einen Build-Prozess.

Der Arbeitsablauf einer benutzerdefinierten Aktion und eines Job-Workers für einen Build-Prozess.
  1. Ihr Jobbearbeiter fragt CodePipeline nach Jobs mithilfe vonPollForJobs.

  2. Wenn eine Pipeline durch eine Veränderung in der Quellphase ausgelöst wird (wenn beispielsweise ein Entwickler eine Änderung vornimmt), wird das automatisierte Freigabeverfahren gestartet. Der Vorgang wird bis zu der Phase fortgesetzt, in der Ihre benutzerdefinierte Aktion konfiguriert wurde. Wenn Ihre Aktion in dieser Phase erreicht wird, wird ein Auftrag in CodePipeline die Warteschlange gestellt. Dieser Auftrag wird angezeigt, wenn Ihr Auftragsworker erneut PollForJobs aufruft, um den Status abzurufen. Entnehmen Sie PollForJobs die Auftragsdetails und geben Sie diese an Ihren Auftragsworker zurück.

  3. Der Jobworker ruft anAcknowledgeJob, um CodePipeline eine Auftragsbestätigung zu senden. CodePipeline gibt eine Bestätigung zurück, aus der hervorgeht, dass der für die Stelle zuständige Mitarbeiter den Job fortsetzen soll (InProgress). Wenn mehrere Mitarbeiter nach Stellen fragen und ein anderer Mitarbeiter die Stelle bereits beansprucht hat, wird eine InvalidNonceException Fehlerantwort zurückgegeben. CodePipeline Wartet nach der InProgress Bestätigung auf die Rückgabe der Ergebnisse.

  4. Der Job-Worker initiiert Ihre benutzerdefinierte Aktion für die Revision, und dann wird Ihre Aktion ausgeführt. Zusammen mit allen anderen Aktionen gibt Ihre benutzerdefinierte Aktion ein Ergebnis an den Job-Worker zurück. Im Beispiel einer benutzerdefinierten Build-Aktion ruft die Aktion Artefakte aus dem Amazon S3-Bucket ab, erstellt sie und schiebt erfolgreich erstellte Artefakte zurück in den Amazon S3-Bucket.

  5. Während die Aktion ausgeführt wird, kann der Job-Worker einen Continuation-Token (die Serialisierung des vom Job-Worker generierten Status des Jobs, z. B. eine Build-ID im JSON-Format oder einen Amazon S3-Objektschlüssel) aufrufenPutJobSuccessResult, sowie die ExternalExecutionId Informationen, die zum Ausfüllen des Links verwendet werdenexecutionUrlTemplate. Dadurch wird die Konsolenansicht der Pipeline während des Vorgangs mit einem funktionierenden Link zu spezifischen Aktionsdetails versehen. Dieses Vorgehen ist zwar nicht erforderlich, jedoch eine bewährte Methode, da sie Benutzern das Abrufen des Status der benutzerdefinierten Aktion ermöglicht, während diese ausgeführt wird.

    Sobald PutJobSuccessResult aufgerufen wird, gilt der Auftrag als abgeschlossen. Es wird ein neuer Job erstellt CodePipeline , der das Fortsetzungstoken enthält. Dieser Auftrag wird angezeigt, wenn Ihr Auftragsworker erneut PollForJobs aufruft. Dieser neue Auftrag kann für die Überprüfung des Aktionsstatus verwendet werden und wird entweder mit einem Fortsetzungstoken oder nach Abschluss der Aktion ohne ein Fortsetzungstoken zurückgegeben.

    Anmerkung

    Wenn Ihr Auftragsworker alle Aufgaben für eine benutzerdefinierte Aktion übernimmt, sollten Sie erwägen, die Verarbeitung Ihres Auftragsworkers in mindestens zwei Schritte aufzuteilen. Im ersten Schritt wird die Detailseite für Ihre Aktion aufgebaut. Sobald Sie die Detailseite erstellt haben, kann der Status des Auftragsworkers je nach Größenbeschränkungen serialisiert und als Fortsetzungstoken zurückgesendet werden (siehe Kontingente in AWS CodePipeline). Sie können beispielsweise den Status der Aktion in die Zeichenfolge schreiben, die Sie als Fortsetzungstoken verwenden. Im zweiten Verarbeitungsschritt (und allen nachfolgenden Schritten) Ihres Auftragsworkers wird die eigentliche Aufgabe ausgeführt. Der letzte Schritt gibt Erfolg oder Misserfolg an zurück CodePipeline, ohne dass der letzte Schritt ein Fortsetzungstoken enthält.

    Weitere Informationen zur Verwendung des Fortsetzungstokens finden Sie in den Spezifikationen für PutJobSuccessResult unter CodePipeline -API-Referenz.

  6. Sobald die benutzerdefinierte Aktion abgeschlossen ist, gibt der Jobworker das Ergebnis der benutzerdefinierten Aktion an zurück, CodePipeline indem er eine von zwei APIs aufruft:

    • PutJobSuccessResultohne ein Fortsetzungstoken, was darauf hinweist, dass die benutzerdefinierte Aktion erfolgreich ausgeführt wurde

    • PutJobFailureResult, was darauf hinweist, dass die benutzerdefinierte Aktion nicht erfolgreich ausgeführt wurde

    Je nach Ergebnis fährt die Pipeline entweder mit der nächsten Aktion fort (bei Erfolg) oder wird unterbrochen (bei Fehlern).

Benutzerdefinierte Auftragsworkerarchitektur und Beispiele

Nachdem Sie den komplexen Workflow entworfen haben, können Sie Ihren Auftragsworker erstellen. Durch die Einzelheiten Ihrer benutzerdefinierten Aktion wird zwar letztendlich festgelegt, was für Ihren Auftragsworker erforderlich ist, aber die meisten Auftragsworker für benutzerdefinierte Aktionen verfügen über die folgenden Funktionen:

  • Es wird nach Aufträgen gesucht, die CodePipeline verwendet werdenPollForJobs.

  • Bestätigen von Aufträgen und Zurückgeben der Ergebnisse zur CodePipeline Verwendung von AcknowledgeJobPutJobSuccessResult, und. PutJobFailureResult

  • Artefakte werden abgerufen, and/or indem Artefakte für die Pipeline in den Amazon S3-Bucket eingegeben werden. Um Artefakte aus dem Amazon S3-Bucket herunterzuladen, müssen Sie einen Amazon S3-Client erstellen, der Signature Version 4-Signing (Sig V4) verwendet. Sig V4 ist erforderlich für AWS KMS.

    Um Artefakte in den Amazon S3-Bucket hochzuladen, müssen Sie die Amazon PutObject S3-Anfrage zusätzlich so konfigurieren, dass sie Verschlüsselung verwendet. Derzeit wird nur AWS Key Management Service (AWS KMS) für die Verschlüsselung unterstützt. AWS KMS verwendet AWS KMS keys. Um zu wissen, ob ein Von AWS verwalteter Schlüssel oder ein vom Kunden verwalteter Schlüssel zum Hochladen von Artefakten verwendet werden soll, muss sich Ihr benutzerdefinierter Job-Worker die Auftragsdaten ansehen und die Eigenschaft des Verschlüsselungsschlüssels überprüfen. Wenn die Eigenschaft festgelegt ist, sollten Sie bei der Konfiguration diese vom Kunden verwaltete Schlüssel-ID verwenden AWS KMS. Wenn die Schlüsseleigenschaft Null ist, verwenden Sie die Von AWS verwalteter Schlüssel. CodePipeline verwendet den, Von AWS verwalteter Schlüssel sofern nicht anders konfiguriert.

    Ein Beispiel, das zeigt, wie die AWS KMS Parameter in Java oder.NET erstellt werden, finden Sie unter Specifying the AWS Key Management Service in Amazon S3 Using the AWS SDKs. Weitere Informationen zum Amazon S3-Bucket für finden Sie CodePipeline unterCodePipeline Konzepte.

Ein komplexeres Beispiel für einen benutzerdefinierten Job-Worker ist verfügbar unter GitHub. Dieses Beispiel ist ein Open Source-Beispiel und wird unverändert bereitgestellt.

Hinzufügen einer benutzerdefinierten Aktion zu einer Pipeline

Sobald Sie einen Job Worker haben, können Sie Ihre benutzerdefinierte Aktion zu einer Pipeline hinzufügen, indem Sie eine neue erstellen und sie auswählen, wenn Sie den Assistenten zum Erstellen einer Pipeline verwenden, indem Sie eine vorhandene Pipeline bearbeiten und die benutzerdefinierte Aktion hinzufügen, oder indem Sie die SDKs oder die APIs verwenden. AWS CLI

Anmerkung

Sie können eine Pipeline über den "Create Pipeline" (Pipeline erstellen)-Assistenten anlegen, die eine benutzerdefinierte Aktion enthält, wenn sie eine Build- oder Deploy-Aktion ist. Wenn sich Ihre benutzerdefinierte Aktion in der Testkategorie befindet, müssen Sie sie durch Bearbeiten einer vorhandenen Pipeline hinzufügen.

Hinzufügen einer benutzerdefinierten Aktion zu einer bestehenden Pipeline (CLI)

Sie können den verwenden AWS CLI , um einer vorhandenen Pipeline eine benutzerdefinierte Aktion hinzuzufügen.

  1. Öffnen Sie eine Terminalsitzung (Linux, macOS oder Unix) oder eine Befehlszeile (Windows) und führen Sie den get-pipeline Befehl aus, um die Pipeline-Struktur, die Sie bearbeiten möchten, 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.

  2. Öffnen Sie die JSON-Datei in einem Texteditor und bearbeiten Sie die Struktur der Datei, um Ihre benutzerdefinierte Aktion zu einer vorhandenen Stufe hinzuzufügen.

    Anmerkung

    Wenn Sie möchten, dass Ihre Aktion mit einer anderen Aktion in dieser Stufe parallel ausgeführt wird, weisen Sie ihr den gleichen runOrder-Wert wie der anderen Aktion zu.

    Um beispielsweise die Struktur einer Pipeline zu bearbeiten und ihr eine Stufe mit dem Namen Build hinzufügen und gleichzeitig eine benutzerdefinierte Aktion zu dieser Stufe hinzuzufügen, können Sie die JSON-Datei so ändern, dass die Build-Stufe vor einer Bereitstellungsstufe eingefügt ist. Beispiel:

    , { "name": "MyBuildStage", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "MyBuildCustomAction", "actionTypeId": { "category": "Build", "owner": "Custom", "version": "1", "provider": "My-Build-Provider-Name" }, "outputArtifacts": [ { "name": "MyBuiltApp" } ], "configuration": { "ProjectName": "MyBuildProject" }, "runOrder": 1 } ] }, { "name": "Staging", "actions": [ { "inputArtifacts": [ { "name": "MyBuiltApp" } ], "name": "Deploy-CodeDeploy-Application", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "CodePipelineDemoApplication", "DeploymentGroupName": "CodePipelineDemoFleet" }, "runOrder": 1 } ] } ] }
  3. 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.json

    Dieser Befehl gibt die gesamte Struktur der bearbeiteten Pipeline zurück.

  4. Öffnen Sie die CodePipeline Konsole und wählen Sie den Namen der Pipeline, die Sie gerade bearbeitet haben.

    Die Pipeline zeigt die Änderungen an. Wenn Sie das nächste Mal eine Änderung am Quellspeicherort durchführen, führt die Pipeline die Revision über die überarbeitete Struktur der Pipeline aus.