Mit Aktionstypen arbeiten - 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.

Mit Aktionstypen arbeiten

Aktionstypen sind vorkonfigurierte Aktionen, die Sie als Anbieter für Kunden erstellen, indem Sie eines der unterstützten Integrationsmodelle in AWS CodePipeline verwenden.

Sie können Aktionstypen anfordern, anzeigen und aktualisieren. Wenn der Aktionstyp für Ihr Konto als Eigentümer erstellt wurde, können Sie ihn verwenden, AWS CLI um die Eigenschaften und die Struktur Ihres Aktionstyps anzuzeigen oder zu aktualisieren. Wenn Sie der Anbieter oder Eigentümer des Aktionstyps sind, können Ihre Kunden die Aktion auswählen und sie zu ihren Pipelines hinzufügen, sobald sie in CodePipeline verfügbar ist.

Anmerkung

Sie erstellen vor owner Ort Aktionen, die mit custom einem Job-Worker ausgeführt werden sollen. Sie erstellen sie nicht mit einem Integrationsmodell. Informationen zu benutzerdefinierten Aktionen finden Sie unterErstellen und fügen Sie eine benutzerdefinierte Aktion hinzu in CodePipeline.

Komponenten des Aktionstyps

Die folgenden Komponenten bilden einen Aktionstyp.

  • Aktionstyp-ID — Die ID besteht aus der Kategorie, dem Besitzer, dem Anbieter und der Version. Das folgende Beispiel zeigt eine Aktionstyp-ID mit einem Besitzer vonThirdParty, einer Kategorie vonTest, einem Anbieter namens TestProvider und einer Version von1.

    { "Category": "Test", "Owner": "ThirdParty", "Provider": "TestProvider", "Version": "1" },
  • Executor-Konfiguration — Das Integrationsmodell oder die Action Engine, das bei der Erstellung der Aktion angegeben wurde. Wenn Sie den Executor für einen Aktionstyp angeben, wählen Sie einen von zwei Typen:

    • Lambda: Der Besitzer des Aktionstyps schreibt die Integration als Lambda-Funktion, die immer dann aufgerufen wird, CodePipeline wenn ein Job für die Aktion verfügbar ist.

    • JobWorker: Der Eigentümer des Aktionstyps schreibt die Integration als Job Worker, der in Kunden-Pipelines nach verfügbaren Jobs sucht. Der Job-Worker führt dann den Job aus und sendet das Job-Ergebnis mithilfe CodePipeline von APIs zurück an. CodePipeline

      Anmerkung

      Das Jobworker-Integrationsmodell ist nicht das bevorzugte Integrationsmodell.

  • Eingabe- und Ausgabeartefakte: Grenzwerte für die Artefakte, die der Eigentümer des Aktionstyps für Kunden der Aktion festlegt.

  • Berechtigungen: Die Berechtigungsstrategie, mit der Kunden bestimmt werden, die auf den Aktionstyp eines Drittanbieters zugreifen können. Die verfügbaren Berechtigungsstrategien hängen vom ausgewählten Integrationsmodell für den Aktionstyp ab.

  • URLs: Deep-Links zu Ressourcen, mit denen der Kunde interagieren kann, z. B. zur Konfigurationsseite des Aktionstyp-Inhabers.

Fordern Sie einen Aktionstyp an

Wenn ein neuer CodePipeline Aktionstyp von einem Drittanbieter angefordert wird, wird der Aktionstyp für den Aktionstyp erstellt CodePipeline, und der Eigentümer kann den Aktionstyp verwalten und anzeigen.

Ein Aktionstyp kann entweder eine private oder eine öffentliche Aktion sein. Wenn Ihr Aktionstyp erstellt wird, ist er privat. Wenn Sie beantragen möchten, dass ein Aktionstyp in eine öffentliche Aktion geändert wird, wenden Sie sich an das CodePipeline Serviceteam.

Bevor Sie Ihre Aktionsdefinitionsdatei, die Ressourcen für den Ausführenden und die Aktionstypanforderung für das CodePipeline Team erstellen, müssen Sie ein Integrationsmodell auswählen.

Schritt 1: Wählen Sie Ihr Integrationsmodell

Wählen Sie Ihr Integrationsmodell und erstellen Sie dann die Konfiguration für dieses Modell. Nachdem Sie das Integrationsmodell ausgewählt haben, müssen Sie Ihre Integrationsressourcen konfigurieren.

  • Für das Lambda-Integrationsmodell erstellen Sie eine Lambda-Funktion und fügen Berechtigungen hinzu. Fügen Sie Ihrer Integrator-Lambda-Funktion Berechtigungen hinzu, um dem CodePipeline Dienst Berechtigungen zum Aufrufen mithilfe des CodePipeline Dienstprinzipals zu gewähren:. codepipeline.amazonaws.com Die Berechtigungen können über die Befehlszeile AWS CloudFormation oder über die Befehlszeile hinzugefügt werden.

    • Beispiel für das Hinzufügen von Berechtigungen mit AWS CloudFormation:

      CodePipelineLambdaBasedActionPermission: Type: 'AWS::Lambda::Permission' Properties: Action: 'lambda:invokeFunction' FunctionName: {"Fn::Sub": "arn:${AWS::Partition}:lambda:${AWS::Region}:${AWS::AccountId}:function:function-name"} Principal: codepipeline.amazonaws.com
    • Dokumentation für die Befehlszeile

  • Für das Job Worker-Integrationsmodell erstellen Sie eine Integration mit einer Liste zulässiger Konten, über die der Job Worker über die CodePipeline APIs nach Jobs abfragt.

Schritt 2: Erstellen Sie eine Aktionstyp-Definitionsdatei

Sie definieren einen Aktionstyp in einer Aktionstyp-Definitionsdatei mithilfe von JSON. In der Datei geben Sie die Aktionskategorie, das Integrationsmodell, das zur Verwaltung des Aktionstyps verwendet wird, und die Konfigurationseigenschaften an.

Anmerkung

Nachdem Sie eine öffentliche Aktion erstellt haben, können Sie die Aktionstypeigenschaft unter properties von optional bis nicht ändernrequired. Sie können die auch nicht ändernowner.

Weitere Informationen zu den Parametern der Aktionstyp-Definitionsdatei finden Sie unter ActionTypeDeclarationund UpdateActionTypein der CodePipeline API-Referenz.

Die Aktionstyp-Definitionsdatei besteht aus acht Abschnitten:

  • description: Die Beschreibung für den Aktionstyp, der aktualisiert werden soll.

  • executor: Informationen über den Executor für einen Aktionstyp, der mit einem unterstützten Integrationsmodell (entweder Lambda oder) erstellt wurde. job worker Je nach Typ Ihres Executors können Sie nur entweder jobWorkerExecutorConfiguration oder lambdaExecutorConfiguration angeben.

    • configuration: Ressourcen für die Konfiguration des Aktionstyps, basierend auf dem ausgewählten Integrationsmodell. Verwenden Sie für das Lambda-Integrationsmodell die Lambda-Funktion ARN. Verwenden Sie für das Job Worker-Integrationsmodell das Konto oder die Liste der Konten, von denen aus der Job Worker ausgeführt wird.

    • jobTimeout: Das Timeout in Sekunden für den Job. Eine Aktionsausführung kann aus mehreren Aufträgen bestehen. Dies ist das Timeout für einen einzelnen Job und nicht für die gesamte Aktionsausführung.

      Anmerkung

      Für das Lambda-Integrationsmodell beträgt das maximale Timeout 15 Minuten.

    • policyStatementsTemplate: Die Richtlinienerklärung, die die Berechtigungen im CodePipeline Kundenkonto festlegt, die für die erfolgreiche Ausführung einer Aktion erforderlich sind.

    • type: Das Integrationsmodell, das zur Erstellung und Aktualisierung des Aktionstyps verwendet wurde, entweder Lambda oderJobWorker.

  • id: Die Kategorie, der Besitzer, der Anbieter und die Versions-ID für den Aktionstyp:

    • category: Die Art der Aktion kann in der Phase „Quelle“, „Build“, „Bereitstellen“, „Testen“, „Aufrufen“ oder „Genehmigung“ ausgeführt werden.

    • provider: Der Anbieter des aufgerufenen Aktionstyps, z. B. die Firma oder der Produktname des Anbieters. Der Anbietername wird bei der Erstellung des Aktionstyps angegeben.

    • owner: Der Ersteller des Aktionstyps, der aufgerufen wird: AWS oderThirdParty.

    • version: Eine Zeichenfolge, die zur Versionierung des Aktionstyps verwendet wird. Setzen Sie für die erste Version die Versionsnummer auf 1.

  • inputArtifactDetails: Die Anzahl der Artefakte, die in der vorherigen Phase der Pipeline zu erwarten sind.

  • outputArtifactDetails: Die Anzahl der Artefakte, die vom Ergebnis der Aktionstypphase zu erwarten sind.

  • permissions: Details zur Identifizierung der Konten mit Berechtigungen zur Verwendung des Aktionstyps.

  • properties: Die Parameter, die für die Ausführung Ihrer Projektaufgaben erforderlich sind.

    • description: Die Beschreibung der Eigenschaft, die Benutzern angezeigt wird.

    • optional: Ob die Konfigurationseigenschaft optional ist.

    • noEcho: Ob der vom Kunden eingegebene Feldwert nicht im Protokoll enthalten ist. Wenntrue, dann wird der Wert geschwärzt, wenn er mit einer GetPipeline API-Anfrage zurückgegeben wird.

    • key: Ob die Konfigurationseigenschaft ein Schlüssel ist.

    • queryable: Ob die Eigenschaft beim Polling verwendet wird. Ein Aktionstyp kann bis zu eine abfragbare Eigenschaft haben. Wenn dies der Fall ist, muss diese Eigenschaft erforderlich und nicht geheim sein.

    • name: Der Eigenschaftsname, der Benutzern angezeigt wird.

  • urls: Ihren Benutzern wird eine Liste der URLs CodePipeline angezeigt.

    • entityUrlTemplate: URL zu den externen Ressourcen für den Aktionstyp, z. B. eine Konfigurationsseite.

    • executionUrlTemplate: URL zu den Details für die letzte Ausführung der Aktion.

    • revisionUrlTemplate: In der CodePipeline Konsole angezeigte URL zu der Seite, auf der Kunden die Konfiguration der externen Aktion aktualisieren oder ändern können.

    • thirdPartyConfigurationUrl: URL einer Seite, auf der sich Benutzer für einen externen Service registrieren und die Erstkonfiguration der von diesem Service bereitgestellten Aktion durchführen können.

Der folgende Code zeigt ein Beispiel für eine Definitionsdatei für einen Aktionstyp.

{ "actionType": { "description": "string", "executor": { "configuration": { "jobWorkerExecutorConfiguration": { "pollingAccounts": [ "string" ], "pollingServicePrincipals": [ "string" ] }, "lambdaExecutorConfiguration": { "lambdaFunctionArn": "string" } }, "jobTimeout": number, "policyStatementsTemplate": "string", "type": "string" }, "id": { "category": "string", "owner": "string", "provider": "string", "version": "string" }, "inputArtifactDetails": { "maximumCount": number, "minimumCount": number }, "outputArtifactDetails": { "maximumCount": number, "minimumCount": number }, "permissions": { "allowedAccounts": [ "string" ] }, "properties": [ { "description": "string", "key": boolean, "name": "string", "noEcho": boolean, "optional": boolean, "queryable": boolean } ], "urls": { "configurationUrl": "string", "entityUrlTemplate": "string", "executionUrlTemplate": "string", "revisionUrlTemplate": "string" } } }

Schritt 3: Registrieren Sie Ihre Integration bei CodePipeline

Um Ihren Aktionstyp bei zu registrieren CodePipeline, wenden Sie sich mit Ihrer Anfrage an das CodePipeline Serviceteam.

Das CodePipeline Serviceteam registriert die neue Aktionstyp-Integration, indem es Änderungen an der Service-Codebasis vornimmt. CodePipeline registriert zwei neue Aktionen: eine öffentliche Aktion und eine private Aktion. Sie verwenden die private Aktion zum Testen, und wenn Sie bereit sind, aktivieren Sie die öffentliche Aktion, um den Kundenverkehr zu bedienen.

Um eine Anfrage für eine Lambda-Integration zu registrieren
  • Senden Sie mit dem folgenden Formular eine Anfrage an das CodePipeline Serviceteam.

    This issue will track the onboarding of [Name] in CodePipeline. [Contact engineer] will be the primary point of contact for this integration. Name of the action type as you want it to appear to customers: Example.com Testing Initial onboard checklist: 1. Attach an action type definition file in JSON format. This includes the schema for the action type 2. A list of test accounts for the allowlist which can access the new action type [{account, account_name}] 3. The Lambda function ARN 4. List of AWS-Regionen where your action will be available 5. Will this be available as a public action?
Um eine Anfrage für eine Jobarbeiterintegration zu registrieren
  • Senden Sie mit dem folgenden Formular eine Anfrage an das CodePipeline Serviceteam.

    This issue will track the onboarding of [Name] in CodePipeline. [Contact engineer] will be the primary point of contact for this integration. Name of the action type as you want it to appear to customers: Example.com Testing Initial onboard checklist: 1. Attach an action type definition file in JSON format. This includes the schema for the action type. 2. A list of test accounts for the allowlist which can access the new action type [{account, account_name}] 3. URL information: Website URL: https://www.example.com/%TestThirdPartyName%/%TestVersionNumber% Example URL pattern where customers will be able to review their configuration information for the action: https://www.example.com/%TestThirdPartyName%/%customer-ID%/%CustomerActionConfiguration% Example runtime URL pattern: https://www.example.com/%TestThirdPartyName%/%customer-ID%/%TestRunId% 4. List of AWS-Regionen where your action will be available 5. Will this be available as a public action?

Schritt 4: Aktivieren Sie Ihre neue Integration

Wenden Sie sich an das CodePipeline Serviceteam, wenn Sie bereit sind, die neue Integration öffentlich zu verwenden.

Fügen Sie einer Pipeline (Konsole) einen verfügbaren Aktionstyp hinzu

Sie fügen Ihren Aktionstyp zu einer Pipeline hinzu, damit Sie ihn testen können. Sie können dies tun, indem Sie eine neue Pipeline erstellen oder eine bestehende bearbeiten.

Anmerkung

Wenn es sich bei Ihrem Aktionstyp um eine Aktion der Kategorie „Quelle“, „Build“ oder „Bereitstellung“ handelt, können Sie ihn hinzufügen, indem Sie eine Pipeline erstellen. Wenn sich Ihr Aktionstyp in der Testkategorie befindet, müssen Sie ihn hinzufügen, indem Sie eine vorhandene Pipeline bearbeiten.

Um Ihren Aktionstyp über die CodePipeline Konsole zu einer vorhandenen Pipeline hinzuzufügen
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die CodePipeline Konsole unter http://console.aws.amazon.com/codesuite/codepipeline/home.

  2. Wählen Sie in der Liste der Pipelines die Pipeline aus, der Sie den Aktionstyp hinzufügen möchten.

  3. Wählen Sie auf der Übersichtsseite der Pipeline die Option Bearbeiten aus.

  4. Wählen Sie, ob Sie die Phase bearbeiten möchten. Wählen Sie in der Phase, in der Sie Ihren Aktionstyp hinzufügen möchten, die Option Aktionsgruppe hinzufügen aus. Die Seite Aktion bearbeiten wird angezeigt.

  5. Geben Sie auf der Seite Aktion bearbeiten im Feld Aktionsname einen Namen für die Aktion ein. Dies ist der Name, der für die Phase in Ihrer Pipeline angezeigt wird.

  6. Wählen Sie unter Aktionsanbieter Ihren Aktionstyp aus der Liste aus.

    Beachten Sie, dass der Wert in der Liste auf dem in der Aktionstyp-Definitionsdatei provider angegebenen Wert basiert.

  7. Geben Sie im Feld Eingabeartefakte den Namen des Artefakts in diesem Format ein:

    Artifactname::FileName

    Beachten Sie, dass die zulässigen Mindest- und Höchstmengen auf der Grundlage der in der Aktionstyp-Definitionsdatei inputArtifactDetails angegebenen Werte definiert werden.

  8. Wählen Sie Connect<Action_Name>.

    Ein Browserfenster wird geöffnet und stellt eine Verbindung zu der Website her, die Sie für Ihren Aktionstyp erstellt haben.

  9. Melden Sie sich als Kunde auf Ihrer Website an und führen Sie die Schritte aus, die ein Kunde zur Verwendung Ihres Aktionstyps unternimmt. Ihre Schritte variieren je nach Aktionskategorie, Website und Konfiguration, beinhalten aber in der Regel eine Abschlussaktion, die den Kunden zur Seite Aktion bearbeiten zurückbringt.

  10. Auf der Seite Aktion CodePipeline bearbeiten werden die zusätzlichen Konfigurationsfelder für die Aktion angezeigt. Bei den angezeigten Feldern handelt es sich um die Konfigurationseigenschaften, die Sie in der Aktionsdefinitionsdatei angegeben haben. Geben Sie die Informationen in die Felder ein, die für Ihren Aktionstyp angepasst sind.

    Wenn in der Aktionsdefinitionsdatei beispielsweise eine Eigenschaft mit dem Namen angegeben wurdeHost, wird auf der Seite Aktion bearbeiten für Ihre Aktion ein Feld mit der Bezeichnung Host angezeigt.

  11. Geben Sie im Feld Ausgabeartefakte den Namen des Artefakts in diesem Format ein:

    Artifactname::FileName

    Beachten Sie, dass die zulässigen Mindest- und Höchstmengen auf der Grundlage der in der Aktionstyp-Definitionsdatei outputArtifactDetails angegebenen Werte definiert werden.

  12. Wählen Sie Fertig, um zur Seite mit den Pipeline-Details zurückzukehren.

    Anmerkung

    Ihre Kunden können optional die CLI verwenden, um den Aktionstyp zu ihrer Pipeline hinzuzufügen.

  13. Um Ihre Aktion zu testen, übernehmen Sie eine Änderung an der Quelle, die in der Quellphase der Pipeline angegeben wurde, oder folgen Sie den Schritten unter Manuelles Starten einer Pipeline.

Um eine Pipeline mit Ihrem Aktionstyp zu erstellen, folgen Sie den Schritten unter Eine Pipeline, Phasen und Aktionen erstellen und wählen Sie Ihren Aktionstyp aus so vielen Phasen aus, wie Sie testen möchten.

Zeigen Sie einen Aktionstyp an

Sie können die CLI verwenden, um Ihren Aktionstyp anzuzeigen. Verwenden Sie den get-action-type Befehl, um Aktionstypen anzuzeigen, die mithilfe eines Integrationsmodells erstellt wurden.

Um einen Aktionstyp anzuzeigen
  1. Erstellen Sie eine JSON-Eingabedatei und geben Sie der Datei einen Namenfile.json. Fügen Sie Ihre Aktionstyp-ID im JSON-Format hinzu, wie im folgenden Beispiel gezeigt.

    { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider", "version": "1" }
  2. Führen Sie den Befehl in einem Terminalfenster oder in der get-action-type Befehlszeile aus.

    aws codepipeline get-action-type --cli-input-json file://file.json

    Dieser Befehl gibt die Aktionsdefinitionsausgabe für einen Aktionstyp zurück. Dieses Beispiel zeigt einen Aktionstyp, der mit dem Lambda-Integrationsmodell erstellt wurde.

    { "actionType": { "executor": { "configuration": { "lambdaExecutorConfiguration": { "lambdaFunctionArn": "arn:aws:lambda:us-west-2:<account-id>:function:my-function" } }, "type": "Lambda" }, "id": { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider", "version": "1" }, "inputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "outputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "permissions": { "allowedAccounts": [ "<account-id>" ] }, "properties": [] } }

Aktualisieren Sie einen Aktionstyp

Sie können die CLI verwenden, um Aktionstypen zu bearbeiten, die mit einem Integrationsmodell erstellt wurden.

Bei einem öffentlichen Aktionstyp können Sie den Besitzer nicht aktualisieren, Sie können optionale Eigenschaften nicht in Erforderlich ändern und Sie können nur neue optionale Eigenschaften hinzufügen.

  1. Verwenden Sie den get-action-type Befehl, um die Struktur für Ihren Aktionstyp abzurufen. Kopieren Sie die Struktur.

  2. Erstellen Sie eine JSON-Eingabedatei und geben Sie ihr einen Namenaction.json. Fügen Sie die Aktionstypstruktur ein, die Sie im vorherigen Schritt kopiert haben. Aktualisieren Sie alle Parameter, die Sie ändern möchten. Sie können auch optionale Parameter hinzufügen.

    Weitere Informationen zu den Parametern für die Eingabedatei finden Sie in der Beschreibung der Aktionsdefinitionsdatei unterSchritt 2: Erstellen Sie eine Aktionstyp-Definitionsdatei.

    Das folgende Beispiel zeigt, wie ein mit dem Lambda-Integrationsmodell erstellter Beispielaktionstyp aktualisiert wird. In diesem Beispiel werden die folgenden Änderungen vorgenommen:

    • Ändert den provider Namen inTestProvider1.

    • Fügt ein Job-Timeout-Limit von 900 Sekunden hinzu.

    • Fügt eine Aktionskonfigurationseigenschaft mit dem Namen hinzuHost, die dem Kunden angezeigt wird, der die Aktion verwendet.

      { "actionType": { "executor": { "configuration": { "lambdaExecutorConfiguration": { "lambdaFunctionArn": "arn:aws:lambda:us-west-2:<account-id>:function:my-function" } }, "type": "Lambda", "jobTimeout": 900 }, "id": { "category": "Test", "owner": "ThirdParty", "provider": "TestProvider1", "version": "1" }, "inputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "outputArtifactDetails": { "minimumCount": 0, "maximumCount": 1 }, "permissions": { "allowedAccounts": [ "account-id" ] }, "properties": { "description": "Owned build action parameter description", "optional": true, "noEcho": false, "key": true, "queryable": false, "name": "Host" } } }
  3. Führen Sie im Terminal oder in der Befehlszeile den update-action-type Befehl aus

    aws codepipeline update-action-type --cli-input-json file://action.json

    Dieser Befehl gibt die Ausgabe des Aktionstyps zurück, die Ihren aktualisierten Parametern entspricht.