View a markdown version of this page

Verwenden Sie Variablen in Ihrem Dokument mit benutzerdefinierten Komponenten - EC2 Image Builder

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.

Verwenden Sie Variablen in Ihrem Dokument mit benutzerdefinierten Komponenten

Variablen bieten eine Möglichkeit, Daten mit aussagekräftigen Namen zu versehen, die in der gesamten Anwendung verwendet werden können. Sie können benutzerdefinierte Variablen mit einfachen und lesbaren Formaten für komplexe Workflows definieren und sie im YAML-Anwendungskomponentendokument für eine AWSTOE Komponente referenzieren.

Dieser Abschnitt enthält Informationen, die Ihnen helfen, Variablen für Ihre AWSTOE Komponente im Dokument für die YAML-Anwendungskomponente zu definieren, einschließlich Syntax, Namenseinschränkungen und Beispielen.

Konstanten

Konstanten sind unveränderliche Variablen, die nach ihrer Definition nicht geändert oder überschrieben werden können. Konstanten können mithilfe von Werten im Abschnitt eines Dokuments definiert werden. constants AWSTOE

Regeln für Konstantennamen
  • Der Name muss zwischen 3 und 128 Zeichen lang sein.

  • Der Name darf nur alphanumerische Zeichen (a-z, 0-9) A-Z, Bindestriche (-) oder Unterstriche (_) enthalten.

  • Der Name muss innerhalb des Dokuments eindeutig sein.

  • Der Name muss als YAML-Zeichenfolge angegeben werden.

Syntax

constants: - <name>: type: <constant type> value: <constant value>
Tastenname Erforderlich Beschreibung

name

Ja

Name der Konstante. Muss für das Dokument eindeutig sein (er darf nicht mit anderen Parameternamen oder Konstanten identisch sein).

value

Ja Wert der Konstante.

type

Ja Typ der Konstante. Der unterstützte Typ iststring.
Verweisen Sie auf konstante Werte in einem Dokument

Sie können in Step- oder Loop-Eingaben in Ihrem YAML-Dokument wie folgt auf Konstanten verweisen:

  • Bei konstanten Verweisen wird zwischen Groß- und Kleinschreibung unterschieden, und der Name muss exakt übereinstimmen.

  • Der Name muss in doppelte geschweifte Klammern eingeschlossen werden. {{ MyConstant }}

  • Leerzeichen sind innerhalb der geschweiften Klammern zulässig und werden automatisch gekürzt. Beispielsweise sind alle der folgenden Verweise gültig:

    {{ MyConstant }}, {{ MyConstant}}, {{MyConstant }}, {{MyConstant}}

  • Der Verweis im YAML-Dokument muss als Zeichenfolge (in einfache oder doppelte Anführungszeichen eingeschlossen) angegeben werden.

    Zum Beispiel: - {{ MyConstant }} ist nicht gültig, da es nicht als Zeichenfolge identifiziert wird.

    Die folgenden Verweise sind jedoch beide gültig: - '{{ MyConstant }}' und- "{{ MyConstant }}".

Beispiele

In Schritteingaben referenzierte Konstante

name: Download AWS CLI version 2 schemaVersion: 1.0 constants: - Source: type: string value: https://awscli.amazonaws.com/AWSCLIV2.msi phases: - name: build steps: - name: Download action: WebDownload inputs: - source: '{{ Source }}' destination: 'C:\Windows\Temp\AWSCLIV2.msi'

In Loop-Eingängen wird auf eine Konstante verwiesen

name: PingHosts schemaVersion: 1.0 constants: - Hosts: type: string value: 127.0.0.1,amazon.com phases: - name: build steps: - name: Ping action: ExecuteBash loop: forEach: list: '{{ Hosts }}' delimiter: ',' inputs: commands: - ping -c 4 {{ loop.value }}

Parameters

Parameter sind veränderbare Variablen mit Einstellungen, die die aufrufende Anwendung zur Laufzeit bereitstellen kann. Sie können Parameter im Parameters Abschnitt des YAML-Dokuments definieren.

Regeln für Parameternamen
  • Der Name muss zwischen 3 und 128 Zeichen lang sein.

  • Der Name darf nur alphanumerische Zeichen (a-z, 0-9) A-Z, Bindestriche (-) oder Unterstriche (_) enthalten.

  • Der Name muss innerhalb des Dokuments eindeutig sein.

  • Der Name muss als YAML-Zeichenfolge angegeben werden.

Syntax

parameters: - <name>: type: <parameter type> default: <parameter value> description: <parameter description>

Tastenname

Erforderlich

Beschreibung

name

Ja

Der Name des Parameters. Muss für das Dokument eindeutig sein (er darf nicht mit anderen Parameternamen oder Konstanten identisch sein).

type

Ja

Der Datentyp des Parameters. Zu den unterstützten Typen gehören:string.

default

Nein

Der Standardwert für den Parameter.

description

Nein

Beschreibt den Parameter.

Referenzparameterwerte in einem Dokument

Sie können Parameter in Step- oder Loop-Eingaben innerhalb Ihres YAML-Dokuments wie folgt referenzieren:

  • Bei Parameterreferenzen wird zwischen Groß- und Kleinschreibung unterschieden, und der Name muss exakt übereinstimmen.

  • Der Name muss in doppelte geschweifte Klammern eingeschlossen werden. {{ MyParameter }}

  • Leerzeichen sind innerhalb der geschweiften Klammern zulässig und werden automatisch gekürzt. Beispielsweise sind alle der folgenden Verweise gültig:

    {{ MyParameter }}, {{ MyParameter}}, {{MyParameter }}, {{MyParameter}}

  • Der Verweis im YAML-Dokument muss als Zeichenfolge (in einfache oder doppelte Anführungszeichen eingeschlossen) angegeben werden.

    Zum Beispiel: - {{ MyParameter }} ist nicht gültig, da es nicht als Zeichenfolge identifiziert wird.

    Die folgenden Verweise sind jedoch beide gültig: - '{{ MyParameter }}' und- "{{ MyParameter }}".

Beispiele

Die folgenden Beispiele zeigen, wie Sie Parameter in Ihrem YAML-Dokument verwenden können:

  • Beziehen Sie sich auf einen Parameter in den Schritteingaben:

    name: Download AWS CLI version 2 schemaVersion: 1.0 parameters: - Source: type: string default: 'https://awscli.amazonaws.com/AWSCLIV2.msi' description: The AWS CLI installer source URL. phases: - name: build steps: - name: Download action: WebDownload inputs: - source: '{{ Source }}' destination: 'C:\Windows\Temp\AWSCLIV2.msi'
  • Beziehen Sie sich auf einen Parameter in Loop-Eingängen:

    name: PingHosts schemaVersion: 1.0 parameters: - Hosts: type: string default: 127.0.0.1,amazon.com description: A comma separated list of hosts to ping. phases: - name: build steps: - name: Ping action: ExecuteBash loop: forEach: list: '{{ Hosts }}' delimiter: ',' inputs: commands: - ping -c 4 {{ loop.value }}

Parameter zur Laufzeit überschreiben

Sie können die --parameters Option AWS CLI mit einem Schlüssel-Wert-Paar verwenden, um zur Laufzeit einen Parameterwert festzulegen.

  • <name><value>Geben Sie das Schlüssel-Wert-Paar für den Parameter als Namen und Wert an, getrennt durch ein Gleichheitszeichen (=).

  • Mehrere Parameter müssen durch ein Komma getrennt werden.

  • Parameternamen, die im YAML-Komponentendokument nicht gefunden werden, werden ignoriert.

  • Der Parametername und der Wert sind beide erforderlich.

Wichtig

Bei den Komponentenparametern handelt es sich um reine Textwerte, die angemeldet sind AWS CloudTrail. Wir empfehlen, dass Sie AWS Secrets Manager oder den AWS Systems Manager Parameter Store verwenden, um Ihre Geheimnisse zu speichern. Weitere Informationen zu Secrets Manager finden Sie unter Was ist Secrets Manager? im AWS Secrets Manager Benutzerhandbuch. Weitere Informationen zum AWS Systems Manager Parameterspeicher finden Sie unter AWS Systems Manager Parameterspeicher im AWS Systems Manager Benutzerhandbuch.

Syntax

--parameters name1=value1,name2=value2...

CLI-Option

Erforderlich

Description

--parameter name =value,...

Nein

Diese Option verwendet eine Liste von Schlüssel-Wert-Paaren mit dem Parameternamen als Schlüssel.

Beispiele

Die folgenden Beispiele zeigen, wie Sie Parameter in Ihrem YAML-Dokument verwenden können:

  • Das in dieser --parameter Option angegebene Parameter-Schlüssel-Wert-Paar ist nicht gültig:

    --parameters ntp-server=
  • Legen Sie ein Parameter-Schlüssel-Wert-Paar mit der --parameter folgenden Option fest: AWS CLI

    --parameters ntp-server=ntp-server-windows-qe.us-east1.amazon.com
  • Legen Sie mehrere Parameter-Schlüssel-Wert-Paare mit der Option im --parameter Feld fest: AWS CLI

    --parameters ntp-server=ntp-server.amazon.com,http-url=https://internal-us-east1.amazon.com

Verwenden Sie die Parameter Store-Parameter von Systems Manager

Sie können AWS Systems Manager Parameter Store-Parameter (SSM-Parameter) in Ihren Komponentendokumenten referenzieren, indem Sie Variablen das Präfix voranstellen. aws:ssm Zum Beispiel

{{ aws:ssm:/my/param }}wird in den Wert des SSM-Parameters aufgelöst. /my/param

Diese Funktion unterstützt die folgenden SSM-Parametertypen:

  • Zeichenfolge — Entspricht dem AWSTOE String-Typ.

  • StringList — Ordnet dem AWSTOE stringList Typ zu.

  • SecureString — Ordnet dem AWSTOE String-Typ zu.

Weitere Informationen zum Parameterspeicher finden Sie unter AWS Systems Manager Parameterspeicher im AWS Systems Manager Benutzerhandbuch.

Sie können auch mithilfe eines SSM-Parameters SecureString auf AWS Secrets Manager Geheimnisse verweisen. Beispiel: {{ aws:ssm:/aws/reference/secretsmanager/test/test-secret }}. Weitere Informationen finden Sie unter Referenzieren von AWS Secrets Manager Geheimnissen aus Parameterspeicher-Parametern.

Wichtig

Image Builder schließt die SecureString Parameterauflösung aus seinen Protokollen aus. Sie sind jedoch auch dafür verantwortlich, sicherzustellen, dass vertrauliche Informationen nicht über Befehle protokolliert werden, die im Komponentendokument ausgegeben werden. Wenn Sie den echo Befehl beispielsweise mit einer sicheren Zeichenfolge verwenden, schreibt der Befehl einen Klartextwert in das Protokoll.

Erforderliche IAM-Berechtigungen

Um Systems Manager Manager-Parameter in Ihren Komponenten verwenden zu können, muss Ihre Instanzrolle über die ssm:GetParameter Berechtigung für die Parameterressource ARN verfügen. Beispiel:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ssm:GetParameter", "Resource": "arn:aws:ssm:*:111122223333:parameter/ImageBuilder-*" } ] }

Für den Zugriff auf verschlüsselte Werte benötigen Sie außerdem die folgenden Berechtigungen:

  • Fügen Sie kms:Decrypt SecureString Parameter oder AWS Secrets Manager Werte hinzu, die verschlüsselt sind und von einem Kunden verwaltet werden AWS KMS key.

  • Fügen Sie hinzusecretsmanager:GetSecretValue, wenn Sie auf ein Secrets Manager Manager-Geheimnis verweisen.

Verweisen Sie in einem Komponentendokument auf einen SSM-Parameter

Das folgende Beispiel zeigt, wie auf einen Systems Manager Parameter Store-Parameter von Systems Manager Manager-Parametern in einer Komponente verwiesen wird:

name: UseSSMParameterVariable description: This is a sample component document that prints out the value of an SSM Parameter. Never do this for a SecureString parameter. schemaVersion: 1.0 phases: - name: verify steps: - name: EchoParameterValue action: ExecuteBash inputs: commands: - echo "Log SSM parameter name: /my/test/param, value {{ aws:ssm:/my/test/param }}."

Dynamische Auflösung von Laufzeitvariablen für SSM-Parameter

AWSTOE bietet die folgende integrierte Funktion, die Sie innerhalb von Variablenreferenzen verwenden können, um Werte zur Laufzeit zu manipulieren oder zu transformieren.

Funktion auflösen

Die resolve Funktion löst eine Variablenreferenz innerhalb einer anderen Variablenreferenz auf und ermöglicht so eine dynamische Referenzierung von Variablennamen. Dies ist nützlich, wenn Sie mit SSM-Parametern arbeiten, bei denen ein Teil des Parameterpfads variabel sein und als Dokumentparameter übergeben werden kann.

Die resolve Funktion unterstützt nur die dynamische Auflösung des Namensteils eines SSM-Parameters.

Syntax

Das dynamic_variable folgende Beispiel stellt den Namen eines SSM-Parameters dar und muss einer der folgenden sein:

  • Eine SSM-Parameterreferenz (zum Beispiel) aws:ssm:/my/param

  • Eine Parameterreferenz für ein Komponentendokument (z. B.parameter-name)

{{ aws:ssm:resolve(dynamic_variable) }}
Beispiel: Einen SSM-Parameter zur Laufzeit auflösen

Das folgende Beispiel zeigt, wie die resolve Funktion in einem YAML-Komponentendokument verwendet wird:

name: SsmParameterTest description: This component verifies an SSM parameter variable reference with the echo command. schemaVersion: 1.0 parameters: - parameter-name: type: string description: "test" phases: - name: validate steps: - name: PrintDynamicVariable action: ExecuteBash inputs: commands: - echo "{{ aws:ssm:resolve(parameter-name) }}"

Verwenden Sie Umgebungsvariablen

AWSTOE kann Umgebungsvariablen des Betriebssystems auflösen, die auf der Build- oder Testinstanz gesetzt sind. Um auf eine Umgebungsvariable zu verweisen, stellen Sie dem Variablennamen ein Präfix voranenv:. {{ env:MY_VAR }}Löst sich beispielsweise in den Wert der MY_VAR Umgebungsvariablen auf der Instanz auf.

AWSTOE stimmt exakt mit den Namen der Umgebungsvariablen überein. Ein Name kann alle Zeichen enthalten, die für das Betriebssystem gültig sind, einschließlich Punkte, Leerzeichen und Klammern. {{ env:ProgramFiles(x86) }}Ist beispielsweise eine gültige Referenz unter Windows.

Das folgende Beispiel zeigt, wie auf eine Umgebungsvariable in einer Komponente verwiesen wird:

name: UseEnvironmentVariable description: This sample component prints out the value of an environment variable. schemaVersion: 1.0 phases: - name: build steps: - name: EchoEnvironmentVariable action: ExecuteBash inputs: commands: - echo "The value of SOME_VAR is {{ env:SOME_VAR }}."

Umgebungsvariablen, die Image Builder bereitstellt

Wenn Image Builder eine Komponente auf einer Build- oder Testinstanz ausführt, legt es Umgebungsvariablen fest, die den aktuellen Image-Build beschreiben. Ihre Komponenten lesen diese Werte mit dem zuvor in diesem Thema beschriebenen AWSTOE env: Variablenpräfix.

Image Builder stellt die folgenden Umgebungsvariablen bereit.

Name

Description

IMAGE_WORKFLOW_EXECUTION_ID

Die ID der Workflow-Ausführung für den aktuellen Image-Build.

IMAGE_STEP_EXECUTION_ID

Die ID der Workflow-Schrittausführung, die die Komponente ausführt.

IMAGE_BUILD_VERSION_ARN

Der Amazon-Ressourcenname (ARN) der Image-Build-Version, die Image Builder erstellt.

IMAGE_PIPELINE_ARN

Der ARN der Image-Pipeline. Dieser Wert ist eine leere Zeichenfolge, wenn der Build nicht über eine Pipeline ausgeführt wird.

IMAGE_PHASE

Die aktuelle Phase der Image-Erstellung: BUILDING während der Erstellungsphase oder TESTING während der Testphase.

Diese Phase unterscheidet sich von den AWSTOE Phasen der einzelnen Dokumente (buildvalidate, undtest). Der IMAGE_PHASE Wert nimmt niemals einen Phasennamen für das Komponentendokument an.

IMAGE_VERSION

Die semantische Version des Bildes (z. B.2.1.1).

IMAGE_BUILD_VERSION

Die Build-Versionsnummer des Images (z. B.1).

Das folgende Beispiel zeigt, wie Image Builder Builder-Umgebungsvariablen in einer Komponente gelesen werden:

name: UseImageBuilderEnvironmentVariables description: This sample component prints out Image Builder environment variable values. schemaVersion: 1.0 phases: - name: build steps: - name: EchoImageBuildValues action: ExecuteBash inputs: commands: - echo "Image phase: {{ env:IMAGE_PHASE }}." - echo "Image build version ARN: {{ env:IMAGE_BUILD_VERSION_ARN }}."

Verwenden Sie Variablen mit Instanzmetadaten (IMDS)

AWSTOE kann Werte aus dem Amazon EC2 Instance Metadata Service (IMDS) auf der Build- oder Test-Instance auflösen. Um auf einen Metadatenwert zu verweisen, stellen Sie dem Metadatenpfad ein Präfix voran. aws:imds: Der Pfad ist relativ zur meta-data/ Metadatenkategorie der Instanz. Wird beispielsweise in die Instanz-ID {{ aws:imds:instance-id }} aufgelöst. Die Referenz {{ aws:imds:placement/region }} wird in die aufgelöst. AWS-Region

Nicht unterstützte Metadatenpfade

AWSTOE unterstützt die Pfade iam/ und die identity-credentials/ Metadatenpfade nicht. Diese Pfade geben vertrauliche Anmeldeinformationen zurück. AWSTOE lehnt Verweise auf sie ab, wenn das Komponentendokument validiert wird.

Weitere Informationen zu Instance-Metadaten finden Sie unter Verwenden von Instance-Metadaten zur Verwaltung Ihrer EC2-Instance im Amazon EC2 EC2-Benutzerhandbuch.

Das folgende Beispiel zeigt, wie auf einen IMDS-Wert in einer Komponente verwiesen wird:

name: UseInstanceMetadataVariable description: This sample component prints out the instance ID from IMDS. schemaVersion: 1.0 phases: - name: build steps: - name: EchoInstanceId action: ExecuteBash inputs: commands: - echo "The instance ID is {{ aws:imds:instance-id }}."

Verwenden Sie Kontextvariablen

AWSTOE stellt Kontextvariablen bereit, die die aktuelle Ausführung und Instanz beschreiben. Um auf eine Kontextvariable zu verweisen, stellen Sie dem Schlüssel ein Präfix vorancontext:. Wird beispielsweise in die AWS Konto-ID {{ context:accountId }} aufgelöst.

AWSTOE stellt die folgenden Kontextvariablen bereit.

Key (Schlüssel)

Description

executionId

Die ID der aktuellen AWSTOE Ausführung.

accountId

Die ID des AWS Kontos, in dem die Instanz ausgeführt wird.

region

Die AWS-Region , in der die Instanz ausgeführt wird.

osPlatform

Die Betriebssystemplattform der Instance (z. B. linux oderwindows).

osName

Der Name des Betriebssystems (zum Beispiel Amazon Linux oderUbuntu). AWSTOE Liest diesen Wert unter Linux von/etc/os-release.

osVersion

Die Version des Betriebssystems (zum Beispiel2023). AWSTOE Liest diesen Wert unter Linux von/etc/os-release. Unter Windows und macOS ist dieser Wert eine leere Zeichenfolge.

date

Das aktuelle Datum in UTC im YYYY-MM-DD Format (z. B.2026-06-15).

dateTime

Das aktuelle Datum und die aktuelle Uhrzeit in UTC im Format RFC 3339 (z. B.2026-06-15T10:30:00Z).

uuid

Eine zufällig generierte UUID der Version 4.

hostname

Der Hostname der Instanz.

phase

Der Name der aktuell laufenden Phase.

step

Der Name des aktuell ausgeführten Schritts.

Anmerkung

Um die Instanz-ID abzurufen, verwenden Sie die IMDS-Variable {{ aws:imds:instance-id }} anstelle einer Kontextvariablen.

Das folgende Beispiel zeigt, wie auf Kontextvariablen in einer Komponente verwiesen wird:

name: UseContextVariables description: This sample component prints out context variable values. schemaVersion: 1.0 phases: - name: build steps: - name: EchoContextValues action: ExecuteBash inputs: commands: - echo "Account: {{ context:accountId }}, OS: {{ context:osName }}."