View a markdown version of this page

Aktionsreferenz für Befehle - 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.

Aktionsreferenz für Befehle

Mit der Aktion „Befehle“ können Sie Shell-Befehle in einer virtuellen Recheninstanz ausführen. Wenn Sie die Aktion ausführen, werden die in der Aktionskonfiguration angegebenen Befehle in einem separaten Container ausgeführt. Alle Artefakte, die als Eingabeartefakte für eine CodeBuild Aktion angegeben sind, sind in dem Container verfügbar, in dem die Befehle ausgeführt werden. Mit dieser Aktion können Sie Befehle angeben, ohne zuerst ein CodeBuild Projekt erstellen zu müssen. Weitere Informationen finden Sie unter ActionDeclaration und OutputArtifact in der AWS CodePipeline -API-Referenz.

Wichtig

Diese Aktion verwendet CodePipeline Managed CodeBuild Compute, um Befehle in einer Build-Umgebung auszuführen. Für die Ausführung der Befehlsaktion fallen separate Gebühren in an AWS CodeBuild.

Anmerkung

Die Aktion Befehle ist nur für Pipelines vom Typ V2 verfügbar.

Überlegungen zur Aktion „Befehle“

Die folgenden Überlegungen gelten für die Aktion Befehle.

  • Die Befehlsaktion verwendet CodeBuild Ressourcen, die der CodeBuild Aktion ähneln, ermöglicht jedoch Shell-Umgebungsbefehle in einer virtuellen Recheninstanz, ohne dass ein Build-Projekt zugeordnet oder erstellt werden muss.

    Anmerkung

    Für die Ausführung der Befehlsaktion fallen separate Gebühren an AWS CodeBuild.

  • Da die Aktion „Befehle“ in CodeBuild Ressourcen CodePipeline verbraucht, werden die von der Aktion ausgeführten Builds den Build-Limits für Ihr Konto in CodeBuild zugeordnet. Builds, die mit der Aktion „Befehle“ ausgeführt werden, werden auf die für dieses Konto konfigurierten gleichzeitigen Build-Limits angerechnet.

  • Das Timeout für Builds mit der Aktion „Befehle“ beträgt 55 Minuten, basierend auf CodeBuild Builds.

  • Die Compute-Instance verwendet eine isolierte Build-Umgebung in CodeBuild.

    Anmerkung

    Da die isolierte Build-Umgebung auf Kontoebene verwendet wird, kann eine Instanz für eine weitere Pipeline-Ausführung wiederverwendet werden.

  • Alle Formate außer mehrzeiligen Formaten werden unterstützt. Bei der Befehlseingabe müssen Sie das einzeilige Format verwenden.

  • Die Befehlsaktion wird für kontoübergreifende Aktionen unterstützt. Um eine Aktion für kontoübergreifende Befehle hinzuzufügen, fügen Sie in der Aktionsdeklaration die Aktion actionRoleArn aus Ihrem Zielkonto hinzu.

  • Übernimmt für diese Aktion CodePipeline die Pipeline-Service-Rolle und verwendet diese Rolle, um den Zugriff auf Ressourcen zur Laufzeit zu ermöglichen. Es wird empfohlen, die Servicerolle so zu konfigurieren, dass die Berechtigungen auf die Aktionsebene beschränkt sind.

  • Die der CodePipeline Servicerolle hinzugefügten Berechtigungen werden unter detailliert beschrieben. Fügen Sie der CodePipeline Servicerolle Berechtigungen hinzu

  • Die zum Anzeigen von Protokollen in der Konsole erforderliche Berechtigung ist unter detailliert beschriebenZum Anzeigen von Rechenprotokollen in der Konsole sind Berechtigungen erforderlich.

  • Im Gegensatz zu anderen Aktionen in CodePipeline legen Sie keine Felder in der Aktionskonfiguration fest. Sie legen die Felder für die Aktionskonfiguration außerhalb der Aktionskonfiguration fest.

Dienstrolle, Richtlinien, Berechtigungen

Wenn die Aktion CodePipeline ausgeführt wird, CodePipeline wird eine Protokollgruppe erstellt, die den Namen der Pipeline wie folgt verwendet. Auf diese Weise können Sie die Berechtigungen zum Protokollieren von Ressourcen anhand des Pipeline-Namens einschränken.

/aws/codepipeline/MyPipelineName

Wenn Sie eine vorhandene Servicerolle verwenden, müssen Sie die folgenden Berechtigungen für die Servicerolle hinzufügen, um die Aktion Befehle verwenden zu können.

  • Protokolle: CreateLogGroup

  • Protokolle: CreateLogStream

  • Protokolle: PutLogEvents

Beschränken Sie in der Erklärung zur Servicerolle die Berechtigungen auf die Pipeline-Ebene, wie im folgenden Beispiel gezeigt.

{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME", "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*" ] }

Um Protokolle in der Konsole mithilfe der Dialogseite mit den Aktionsdetails anzuzeigen, muss der Konsolenrolle die Berechtigung zum Anzeigen von Protokollen hinzugefügt werden. Weitere Informationen finden Sie im Beispiel für eine Konsolenberechtigungsrichtlinie unterZum Anzeigen von Rechenprotokollen in der Konsole sind Berechtigungen erforderlich.

Aktionstyp

  • Kategorie: Compute

  • Eigentümer: AWS

  • Anbieter: Commands

  • Version: 1

Konfigurationsparameter

Befehle

Erforderlich: Ja

Sie können Shell-Befehle für die Ausführung der Commands Aktion angeben. In der Konsole werden Befehle in separaten Zeilen eingegeben. In der CLI werden Befehle als separate Zeichenfolgen eingegeben.

Anmerkung

Multi-line Formate werden nicht unterstützt und führen zu einer Fehlermeldung. Single-line Das Format muss für die Eingabe von Befehlen in das Feld Befehle verwendet werden.

Wichtig

Die ComputeType Werte EnvironmentType und stimmen mit denen in überein CodeBuild. Wir unterstützen eine Teilmenge der verfügbaren Typen. Weitere Informationen finden Sie unter Erstellen von Umgebungs-Compute-Typen.

EnvironmentType

Erforderlich: Nein

Das Betriebssystemimage für die Build-Umgebung, die die Aktion „Befehle“ unterstützt. Die folgenden Werte sind für Build-Umgebungen gültig:

  • LINUX_CONTAINER

  • WINDOWS_SERVER_2022_CONTAINER

Die Auswahl für ermöglicht EnvironmentType dann den Berechnungstyp für dieses Betriebssystem im Feld. ComputeType Weitere Informationen zu den für diese Aktion verfügbaren CodeBuild Berechnungstypen finden Sie in der Referenz zu den Berechnungsmodi und -typen der Build-Umgebung im CodeBuild Benutzerhandbuch.

Anmerkung

Wenn nicht angegeben, wird die Berechnung für die Build-Umgebung standardmäßig wie folgt durchgeführt:

  • Berechnungstyp: BUILD_GENERAL1_SMALL

  • Umgebungstyp: LINUX_CONTAINER

ComputeType

Erforderlich: Nein

Basierend auf der Auswahl für EnvironmentType kann der Berechnungstyp angegeben werden. Die folgenden Werte sind für die Berechnung verfügbar. Beachten Sie jedoch, dass die verfügbaren Optionen je nach Betriebssystem variieren können.

  • BUILD_GENERAL1_SMALL

  • BUILD_GENERAL1_MEDIUM

  • BUILD_GENERAL1_LARGE

Wichtig

Einige Berechnungstypen sind mit bestimmten Umgebungstypen nicht kompatibel. Beispielsweise ist WINDOWS_SERVER_2022_CONTAINER nicht mit BUILD_GENERAL1_SMALL kompatibel. Die Verwendung inkompatibler Kombinationen führt dazu, dass die Aktion fehlschlägt und ein Laufzeitfehler generiert wird.

Ausgabevariablen

Erforderlich: Nein

Geben Sie die Namen der Variablen in Ihrer Umgebung an, die Sie exportieren möchten. Eine Referenz zu CodeBuild Umgebungsvariablen finden Sie im CodeBuild Benutzerhandbuch unter Umgebungsvariablen in Build-Umgebungen.

Dateien

Erforderlich: Nein

Sie können Dateien, die Sie exportieren möchten, als Ausgabeartefakte für die Aktion bereitstellen.

Das unterstützte Format für Dateien ist dasselbe wie für CodeBuild Dateimuster. Geben Sie beispielsweise **/ für alle Dateien ein. Weitere Informationen finden Sie in der Referenz zur Build-Spezifikation für CodeBuild im CodeBuild Benutzerhandbuch.

Die Aktionsseite „Bearbeiten“ für eine neue Pipeline mit der Aktion „Befehle“
VpcId

Erforderlich: Nein

Die VPC-ID für Ihre Ressourcen.

Subnets

Erforderlich: Nein

Die Subnetze für die VPC. Dieses Feld wird benötigt, wenn Ihre Befehle eine Verbindung zu Ressourcen in einer VPC herstellen müssen.

SecurityGroupIds

Erforderlich: Nein

Die Sicherheitsgruppen für die VPC. Dieses Feld wird benötigt, wenn Ihre Befehle eine Verbindung zu Ressourcen in einer VPC herstellen müssen.

Im Folgenden finden Sie ein JSON-Beispiel für die Aktion mit den angezeigten Konfigurationsfeldern für Umgebung und Berechnungstyp sowie einer Beispielumgebungsvariablen.

{ "name": "Commands1", "actionTypeId": { "category": "Compute", "owner": "AWS", "provider": "Commands", "version": "1" }, "inputArtifacts": [ { "name": "SourceArtifact" } ], "commands": [ "ls", "echo hello", "echo $BEDROCK_TOKEN", ], "configuration": { "EnvironmentType": "LINUX_CONTAINER", "ComputeType": "BUILD_GENERAL1_MEDIUM" }, "environmentVariables": [ { "name": "BEDROCK_TOKEN", "value": "apiTokens:bedrockToken", "type": "SECRETS_MANAGER" } ], "runOrder": 1 }

Input artifacts (Eingabeartefakte)

  • Anzahl der Artefakte: 1 to 10

Ausgabeartefakte

  • Anzahl der Artefakte: 0 to 1

Umgebungsvariablen

Key (Schlüssel)

Der Schlüssel in einem Schlüssel-Wert-Umgebungsvariablenpaar, z. B. BEDROCK_TOKEN

Wert

Der Wert für das Schlüssel-Wert-Paar, z. B. apiTokens:bedrockToken Der Wert kann mit Ausgabevariablen aus Pipeline-Aktionen oder Pipeline-Variablen parametrisiert werden.

Wenn Sie den SECRETS_MANAGER Typ verwenden, muss dieser Wert der Name eines Geheimnisses sein, das Sie bereits in AWS Secrets Manager gespeichert haben.

Typ

Gibt die Art der Verwendung des Umgebungsvariablenwerts an. Der Wert kann entweder PLAINTEXT oder SECRETS_MANAGER sein. Wenn der Wert gleich istSECRETS_MANAGER, geben Sie die Secrets-Referenz im EnvironmentVariable Wert an. Wenn keine Angabe gemacht wird, gilt der Standardwert PLAINTEXT.

Anmerkung

Wir raten dringend davon ab, Klartext-Umgebungsvariablen zum Speichern vertraulicher Werte, insbesondere AWS Anmeldeinformationen, zu verwenden. Wenn Sie die CodeBuild Konsole oder verwenden AWS CLI, werden Klartext-Umgebungsvariablen im Klartext angezeigt. Wenn es sich um vertrauliche Werte handelt, sollten Sie stattdessen den Typ SECRETS_MANAGER verwenden.

Anmerkung

Wenn Sie die Konfigurationname,value, und type für Ihre Umgebungsvariablen eingeben, insbesondere wenn die Umgebungsvariable die Syntax der CodePipeline Ausgabevariablen enthält, überschreiten Sie nicht die Grenze von 1000 Zeichen für das Wertefeld der Konfiguration. Ein Validierungsfehler wird zurückgegeben, wenn dieser Grenzwert überschritten wird.

Ein Beispiel für eine Aktionsdeklaration, die eine Umgebungsvariable zeigt, finden Sie unter. Konfigurationsparameter

Anmerkung
  • Der SECRETS_MANAGER Typ wird nur für die Aktion „Befehle“ unterstützt.

  • Geheimnisse, auf die in der Aktion „Befehle“ verwiesen wird, werden in den Build-Protokollen ähnlich CodeBuild wie geschwärzt. Pipeline-Benutzer, die Bearbeitungszugriff auf die Pipeline haben, können jedoch potenziell immer noch auf diese geheimen Werte zugreifen, indem sie die Befehle ändern.

  • Um die verwenden zu können SecretsManager, müssen Sie Ihrer Pipeline-Servicerolle die folgenden Berechtigungen hinzufügen:

    { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "SECRET_ARN" ] }

Berechtigungen für Servicerollen: Befehle, Aktion

Um die Unterstützung von Befehlen zu erhalten, fügen Sie Ihrer Richtlinienerklärung Folgendes hinzu:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:iam::*:role/Service*", "arn:aws:iam::*:role/Service*" ] } ] }

Aktionserklärung (Beispiel)

YAML
name: Commands_action actionTypeId: category: Compute owner: AWS provider: Commands version: '1' runOrder: 1 configuration: {} commands: - ls - echo hello - 'echo pipeline Execution Id is #{codepipeline.PipelineExecutionId}' outputArtifacts: - name: BuildArtifact files: - **/ inputArtifacts: - name: SourceArtifact outputVariables: - AWS_DEFAULT_REGION region: us-east-1 namespace: compute
JSON
{ "name": "Commands_action", "actionTypeId": { "category": "Compute", "owner": "AWS", "provider": "Commands", "version": "1" }, "runOrder": 1, "configuration": {}, "commands": [ "ls", "echo hello", "echo pipeline Execution Id is #{codepipeline.PipelineExecutionId}" ], "outputArtifacts": [ { "name": "BuildArtifact", "files": [ "**/" ] } ], "inputArtifacts": [ { "name": "SourceArtifact" } ], "outputVariables": [ "AWS_DEFAULT_REGION" ], "region": "us-east-1", "namespace": "compute" }

Die folgenden verwandten Ressourcen bieten Ihnen nützliche Informationen für die Arbeit mit dieser Aktion.