

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Usa le variabili nel tuo documento componente personalizzato
<a name="toe-user-defined-variables"></a>

Le variabili forniscono un modo per etichettare i dati con nomi significativi che possono essere utilizzati in un'applicazione. È possibile definire variabili personalizzate con formati semplici e leggibili per flussi di lavoro complessi e farvi riferimento nel documento del componente dell'applicazione YAML per un componente. AWSTOE 

Questa sezione fornisce informazioni per aiutarvi a definire le variabili per il AWSTOE componente nel documento del componente dell'applicazione YAML, tra cui sintassi, vincoli di nome ed esempi.

## Costanti
<a name="user-defined-vars-constants"></a>

Le costanti sono variabili immutabili che non possono essere modificate o sovrascritte una volta definite. Le costanti possono essere definite utilizzando i valori nella sezione di un documento. `constants` AWSTOE 

**Regole per i nomi delle costanti**
+ La lunghezza del nome deve essere compresa tra 3 e 128 caratteri.
+ Il nome può contenere solo caratteri alfanumerici (a-z, A-Z, 0-9), trattini (-) o caratteri di sottolineatura (\$1).
+ Il nome deve essere univoco all'interno del documento.
+ Il nome deve essere specificato come stringa YAML.

**Sintassi**

```
constants:
  - <name>:
      type: <constant type>
      value: <constant value>
```


| Nome chiave | Richiesto | Descrizione | 
| --- | --- | --- | 
|  `name`  |  Sì  | Nome della costante. Deve essere univoco per il documento (non deve essere uguale a nessun altro nome di parametro o costante). | 
| `value` | Sì | Valore della costante. | 
| `type` | Sì | Tipo di costante. Il tipo supportato èstring. | 

**Valori costanti di riferimento in un documento**  
Puoi fare riferimento alle costanti negli input step o loop all'interno del tuo documento YAML, come segue:
+ I riferimenti alle costanti fanno distinzione tra maiuscole e minuscole e il nome deve corrispondere esattamente.
+ Il nome deve essere racchiuso tra parentesi doppie arricciate. `{{` *MyConstant* `}}`
+ Gli spazi all'interno delle parentesi arricciate sono consentiti e vengono tagliati automaticamente. Ad esempio, tutti i seguenti riferimenti sono validi:

  `{{ MyConstant }}`, `{{ MyConstant}}`, `{{MyConstant }}`, `{{MyConstant}}`
+ Il riferimento nel documento YAML deve essere specificato come stringa (racchiusa tra virgolette singole o doppie).

  Ad esempio: non `- {{ MyConstant }}` è valido, in quanto non è identificato come stringa.

  Tuttavia, i seguenti riferimenti sono entrambi validi: `- '{{ MyConstant }}'` e`- "{{ MyConstant }}"`.

**Esempi**  
Costante a cui si fa riferimento negli ingressi Step

```
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'
```

Costante referenziata negli ingressi in loop

```
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>

I parametri sono variabili mutabili, con impostazioni che l'applicazione chiamante può fornire in fase di esecuzione. È possibile definire i parametri nella `Parameters` sezione del documento YAML.

**Regole per i nomi dei parametri**
+ La lunghezza del nome deve essere compresa tra 3 e 128 caratteri.
+ Il nome può contenere solo caratteri alfanumerici (a-z, A-Z, 0-9), trattini (-) o caratteri di sottolineatura (\$1).
+ Il nome deve essere univoco all'interno del documento.
+ Il nome deve essere specificato come stringa YAML.

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

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


| Nome chiave | Richiesto | Descrizione | 
| --- | --- | --- | 
| `name` | Sì | Nome del parametro. Deve essere univoco per il documento (non deve essere uguale a nessun altro nome di parametro o costante). | 
| `type` | Sì | Il tipo di dati del parametro. I tipi supportati includono:`string`. | 
| `default` | No | Il valore predefinito per il parametro. | 
| `description` | No | Descrive il parametro. | 

### Valori dei parametri di riferimento in un documento
<a name="vars-parameters-referencing"></a>

Puoi fare riferimento ai parametri negli input step o loop all'interno del tuo documento YAML, come segue:
+ I riferimenti ai parametri fanno distinzione tra maiuscole e minuscole e il nome deve corrispondere esattamente.
+ Il nome deve essere racchiuso tra parentesi graffe doppie. `{{` *MyParameter* `}}`
+ Gli spazi all'interno delle parentesi arricciate sono consentiti e vengono tagliati automaticamente. Ad esempio, tutti i seguenti riferimenti sono validi:

  `{{ MyParameter }}`, `{{ MyParameter}}`, `{{MyParameter }}`, `{{MyParameter}}`
+ Il riferimento nel documento YAML deve essere specificato come stringa (racchiusa tra virgolette singole o doppie).

  Ad esempio: non `- {{ MyParameter }}` è valido, in quanto non è identificato come stringa.

  Tuttavia, i seguenti riferimenti sono entrambi validi: `- '{{ MyParameter }}'` e`- "{{ MyParameter }}"`.

**Esempi**  
Gli esempi seguenti mostrano come utilizzare i parametri nel documento YAML:
+ Fate riferimento a un parametro in Step Inputs:

  ```
  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'
  ```
+ Fate riferimento a un parametro negli ingressi del loop:

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

### Sostituisci i parametri in fase di esecuzione
<a name="vars-parameters-set-at-runtime"></a>

È possibile utilizzare l'`--parameters`opzione AWS CLI con una coppia chiave-valore per impostare il valore di un parametro in fase di esecuzione.
+ <name><value>Specificate la coppia chiave-valore del parametro come nome e valore, separati da un segno di uguale (=).
+ Più parametri devono essere separati da una virgola.
+ I nomi dei parametri che non si trovano nel documento del componente YAML vengono ignorati.
+ Il nome e il valore del parametro sono entrambi obbligatori.

**Importante**  
I parametri dei componenti sono valori di testo semplice e vengono registrati. AWS CloudTrail Ti consigliamo di utilizzare Gestione dei segreti AWS o il AWS Systems Manager Parameter Store per archiviare i tuoi segreti. Per ulteriori informazioni su Secrets Manager, vedi [Cos'è Secrets Manager?](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html) nella *Guida Gestione dei segreti AWS per l'utente*. Per ulteriori informazioni su AWS Systems Manager Parameter Store, vedere [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) nella *Guida AWS Systems Manager per l'utente*.

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

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


| Opzione CLI | Richiesto | Description | 
| --- | --- | --- | 
| --parameters *name* =*value*,... | No | Questa opzione accetta l'elenco delle coppie chiave-valore, con il nome del parametro come chiave. | 

**Esempi**  
Gli esempi seguenti mostrano come utilizzare i parametri nel documento YAML:
+ La coppia chiave-valore del parametro specificata in questa `--parameter` opzione non è valida:

  ```
  --parameters ntp-server=
  ```
+ Imposta una coppia chiave-valore di parametro con l'opzione in`--parameter`: AWS CLI

  ```
  --parameters ntp-server=ntp-server-windows-qe.us-east1.amazon.com
  ```
+ Imposta più coppie chiave-valore di parametri con l'opzione in`--parameter`: AWS CLI

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

## Usa i parametri del Parameter Store di Systems Manager
<a name="toe-ssm-parameters"></a>

È possibile fare riferimento ai parametri AWS Systems Manager Parameter Store (parametri SSM) nei documenti dei componenti aggiungendo alle variabili il prefisso. `aws:ssm` Ad esempio, 

`{{ aws:ssm:/my/param }}`si risolve al valore del parametro SSM. `/my/param`

Questa funzionalità supporta i seguenti tipi di parametri SSM:
+ Stringa: esegue il mapping al tipo di AWSTOE stringa.
+ StringList — Esegue il mapping al AWSTOE `stringList` tipo.
+ SecureString — Esegue il mapping al tipo di AWSTOE stringa.

Per ulteriori informazioni sull'archivio dei parametri, vedere [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) nella *Guida AWS Systems Manager per l'utente*.

Puoi anche fare riferimento ai Gestione dei segreti AWS segreti utilizzando un parametro `SecureString` SSM. Ad esempio: `{{ aws:ssm:/aws/reference/secretsmanager/test/test-secret }}`. Per ulteriori informazioni, vedere [Riferimento ai Gestione dei segreti AWS segreti dai parametri del Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/integration-ps-secretsmanager.html).

**Importante**  
Image Builder esclude la risoluzione `SecureString` dei parametri dai suoi registri. Tuttavia, l'utente è anche responsabile di garantire che le informazioni riservate non vengano registrate tramite i comandi immessi nel documento del componente. Ad esempio, se si utilizza il `echo` comando con una stringa sicura, il comando scrive un valore in chiaro nel registro.

### Autorizzazioni IAM richieste
<a name="toe-ssm-parameters-permissions"></a>

Per utilizzare i parametri Systems Manager nei componenti, il ruolo dell'istanza deve disporre dell'`ssm:GetParameter`autorizzazione per la risorsa parametrica ARN. Esempio:

------
#### [ JSON ]

****  

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

------

Per accedere ai valori crittografati, sono inoltre necessarie le seguenti autorizzazioni:
+ Aggiungi `kms:Decrypt` per `SecureString` parametri o Gestione dei segreti AWS valori crittografati con un servizio gestito AWS KMS key dal cliente.
+ Aggiungi `secretsmanager:GetSecretValue` se fai riferimento a un segreto di Secrets Manager.

### Fai riferimento a un parametro SSM in un documento componente
<a name="toe-ssm-parameters-example"></a>

L'esempio seguente mostra come fare riferimento a un parametro Systems Manager Parameter Store dei parametri di Systems Manager in un componente:

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

### Risoluzione variabile dinamica di runtime per i parametri SSM
<a name="toe-dynamic-vars"></a>

AWSTOE fornisce la seguente funzione integrata che è possibile utilizzare all'interno dei riferimenti alle variabili per manipolare o trasformare i valori in fase di esecuzione.

#### funzione di risoluzione
<a name="toe-function-resolve"></a>

La `resolve` funzione risolve un riferimento a una variabile all'interno di un altro riferimento a una variabile, consentendo il riferimento dinamico al nome della variabile. Ciò è utile quando si lavora con parametri SSM in cui parte del percorso del parametro può essere variabile e passata come parametro del documento.

La `resolve` funzione supporta solo la risoluzione dinamica della parte relativa al nome di un parametro SSM.

##### Sintassi
<a name="toe-function-resolve-syntax"></a>

L'`dynamic_variable`esempio seguente rappresenta il nome di un parametro SSM e deve essere uno dei seguenti:
+ Un riferimento a un parametro SSM (ad esempio,) `aws:ssm:/my/param`
+ Un riferimento a un parametro del documento componente (ad esempio,`parameter-name`)

```
{{ aws:ssm:resolve(dynamic_variable) }}
```

##### Esempio: risolvi un parametro SSM in fase di esecuzione
<a name="toe-function-resolve-examples"></a>

L'esempio seguente mostra come utilizzare la `resolve` funzione in un documento del componente YAML:

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