

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
<a name="toe-user-defined-variables"></a>

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
<a name="user-defined-vars-constants"></a>

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, A-Z, 0-9), Bindestriche (-) oder Unterstriche (\$1) 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 in 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
<a name="user-defined-vars-parameters"></a>

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, A-Z, 0-9), Bindestriche (-) oder Unterstriche (\$1) enthalten.
+ Der Name muss innerhalb des Dokuments eindeutig sein.
+ Der Name muss als YAML-Zeichenfolge angegeben werden.

### Syntax
<a name="vars-parameters-syntax"></a>

```
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
<a name="vars-parameters-referencing"></a>

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 in 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
<a name="vars-parameters-set-at-runtime"></a>

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?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) im *AWS Secrets Manager Benutzerhandbuch*. Weitere Informationen zum AWS Systems Manager Parameterspeicher finden Sie unter [AWS Systems Manager Parameterspeicher](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) im *AWS Systems Manager Benutzerhandbuch*.

#### Syntax
<a name="vars-runtime-parameters-syntax"></a>

```
--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
<a name="toe-ssm-parameters"></a>

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 — Ordnet dem AWSTOE String-Typ zu.
+ 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](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) 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](https://docs.aws.amazon.com/systems-manager/latest/userguide/integration-ps-secretsmanager.html).

**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
<a name="toe-ssm-parameters-permissions"></a>

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 hinzu`secretsmanager:GetSecretValue`, wenn Sie auf ein Secrets Manager Manager-Geheimnis verweisen.

### Verweisen Sie in einem Komponentendokument auf einen SSM-Parameter
<a name="toe-ssm-parameters-example"></a>

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
<a name="toe-dynamic-vars"></a>

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

#### Funktion auflösen
<a name="toe-function-resolve"></a>

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
<a name="toe-function-resolve-syntax"></a>

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
<a name="toe-function-resolve-examples"></a>

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) }}"
```