

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à.

# Gestisci i flussi di lavoro di creazione e test per le immagini di Image Builder
<a name="manage-image-workflows"></a>

Un flusso di lavoro di immagini definisce la sequenza di passaggi che EC2 Image Builder esegue durante le fasi di creazione, test e distribuzione del processo di creazione dell'immagine. Questo fa parte del framework generale del flusso di lavoro di Image Builder.

**Vantaggi del flusso di lavoro relativo**
+ I flussi di lavoro basati sulle immagini offrono maggiore flessibilità, visibilità e controllo sul processo di creazione delle immagini.
+ È possibile aggiungere passaggi di flusso di lavoro personalizzati quando si definisce il documento del flusso di lavoro oppure è possibile scegliere di utilizzare il flusso di lavoro predefinito di Image Builder.
+ È possibile escludere le fasi del flusso di lavoro incluse nei flussi di lavoro con immagini predefiniti.
+ È possibile creare flussi di lavoro di solo test che ignorano completamente il processo di creazione. Puoi fare lo stesso per creare flussi di lavoro di sola compilazione o di sola distribuzione.

**Nota**  
Non puoi modificare un flusso di lavoro esistente, ma puoi clonarlo o creare una nuova versione.

**Topics**
+ [Framework del flusso di lavoro: fasi](#wf-stages)
+ [Accesso al servizio](#wf-service-access)
+ [Usa flussi di lavoro gestiti per le tue immagini](#use-managed-workflows)
+ [Elenca i flussi di lavoro con immagini](list-image-workflows.md)
+ [Crea un flusso di lavoro basato su immagini](image-workflow-create-resource.md)
+ [Creare un documento di workflow YAML](image-workflow-create-document.md)

## Framework del flusso di lavoro: fasi
<a name="wf-stages"></a>

Per personalizzare i flussi di lavoro relativi alle immagini, è importante comprendere le fasi del flusso di lavoro che costituiscono il framework del flusso di lavoro per la creazione di immagini.

Il framework del flusso di lavoro per la creazione di immagini include le seguenti fasi distinte.

1. **Fase di creazione** (pre-snapshot): durante la fase di creazione, apporti modifiche all'istanza di EC2 build di Amazon che esegue la tua immagine di base, per creare la linea di base per la tua nuova immagine. Ad esempio, la ricetta può includere componenti che installano un'applicazione o modificano le impostazioni del firewall del sistema operativo.

   Una volta completata con successo questa fase, Image Builder crea un'istantanea o un'immagine contenitore che utilizza per la fase di test e oltre.

1. **Fase di test** (post-snapshot): durante la fase di test, ci sono alcune differenze tra le immagini di creazione e le immagini del contenitore. AMIs Per i flussi di lavoro AMI, Image Builder avvia EC2 un'istanza dall'istantanea creata come fase finale della fase di creazione. I test vengono eseguiti sulla nuova istanza per convalidare le impostazioni e garantire che l'istanza funzioni come previsto. Per i flussi di lavoro in container, i test vengono eseguiti sulla stessa istanza utilizzata per la creazione.

1. **Fase di distribuzione** (post-creazione): durante la fase di distribuzione, una volta completata la creazione dell'immagine e dopo aver superato con successo tutti i test, l'immagine di output viene sottoposta a varie fasi di distribuzione. Queste fasi comprendono le operazioni di copia AMI, la modifica degli attributi dell'immagine, la condivisione delle immagini e altre fasi di distribuzione correlate.

## Accesso al servizio
<a name="wf-service-access"></a>

Per eseguire flussi di lavoro di immagini, Image Builder necessita dell'autorizzazione per eseguire azioni del flusso di lavoro. È possibile specificare il ruolo [AWSServiceRoleForImageBuilder](security-iam-awsmanpol.md#sec-iam-manpol-AWSServiceRoleForImageBuilder)collegato al servizio oppure specificare il proprio ruolo personalizzato per l'accesso al servizio, come segue.
+ **Console****: nella procedura guidata alla pipeline, **fase 3, definisci il processo di creazione dell'immagine**, seleziona il ruolo collegato al servizio o il tuo ruolo personalizzato dall'elenco dei ruoli **IAM nel pannello di accesso** al servizio.**
+ **API Image Builder**: nella richiesta di [CreateImage](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_CreateImage.html)azione, specifica il ruolo collegato al servizio o il tuo ruolo personalizzato come valore per il parametro. `executionRole`

*Per ulteriori informazioni su come creare un ruolo di servizio, consulta [Creazione di un ruolo per delegare le autorizzazioni a un AWS servizio nella Guida per l'utente](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html).AWS Identity and Access Management *

## Usa flussi di lavoro gestiti per le tue immagini
<a name="use-managed-workflows"></a>

I flussi di lavoro gestiti vengono creati e gestiti da. AWS Quando utilizzi flussi di lavoro gestiti nelle tue pipeline di immagini o per la creazione di immagini una tantum, puoi selezionare l'Amazon Resource Name (ARN) del flusso di lavoro gestito che desideri utilizzare. Amazon fornisce le versioni più recenti a cui sono state applicate patch e altri aggiornamenti. Per ottenere un elenco di flussi di lavoro gestiti[Elenca i flussi di lavoro con immagini](list-image-workflows.md), consulta e filtra su **Owner = Amazon** (console).

# Elenca i flussi di lavoro con immagini
<a name="list-image-workflows"></a>

Nella pagina di elenco dei **flussi** di lavoro di immagini nella console Image Builder, puoi ottenere un elenco delle risorse del flusso di lavoro delle immagini che possiedi o a cui hai accesso, insieme ad alcuni dettagli chiave su queste risorse. Puoi anche utilizzare comandi o azioni con l'API Image Builder o AWS CLI elencare i SDKs flussi di lavoro di immagini nel tuo account.

Puoi utilizzare uno dei seguenti metodi per elencare le risorse del flusso di lavoro basato sulle immagini che possiedi o a cui hai accesso. Per l'azione API, vedere [ListWorkflows](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_ListWorkflows.html)nel riferimento all'*API EC2 Image Builder*. Per la richiesta SDK associata, fai riferimento al link [Vedi anche](https://docs.aws.amazon.com/imagebuilder/latest/APIReference/API_ListWorkflows.html#API_ListWorkflows_SeeAlso) nella stessa pagina.

Puoi filtrare i seguenti dettagli per semplificare l'elenco dei risultati. Ad esempio, se filtri **Owner = Amazon** nella console, l'elenco mostra solo i flussi di lavoro AWS gestiti.
+ Flusso di lavoro
+ Versione
+ Tipo
+ Owner

------
#### [ Console ]

**Dettagli del flusso di lavoro**  
I dettagli sulla pagina con **l'elenco dei flussi** di lavoro di immagini nella console Image Builder includono quanto segue:
+ **Workflow**: il nome della versione più recente della risorsa Image Workflow. Nella console Image Builder, la colonna **Workflow** si collega alla pagina dei dettagli del flusso di lavoro.
+ **Versione**: la versione più recente della risorsa Image Workflow.
+ **Tipo**: il tipo di flusso di lavoro: `BUILD``TEST`, o`DISTRIBUTION`.
+ **Proprietario**: il proprietario della risorsa del flusso di lavoro.
+ **Ora di creazione**: la data e l'ora in cui Image Builder ha creato la versione più recente della risorsa Image Workflow.
+ **ARN**: Amazon Resource Name (ARN) della versione corrente della risorsa Image Workflow.

**Elenca i flussi di lavoro con immagini**  
Per elencare le risorse del flusso di lavoro delle immagini nella console Image Builder, effettuate le seguenti operazioni:

1. Aprire la console EC2 Image Builder all'indirizzo. [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/)

1. Scegliete **Image Workflows** dal pannello di navigazione.

**Filtra i risultati**  
Nella pagina con l'elenco dei **flussi di lavoro con immagini**, puoi cercare flussi di lavoro di immagini specifici per filtrare i risultati. I seguenti filtri sono disponibili per i flussi di lavoro relativi alle immagini:

`Workflow`

Puoi inserire tutto o parte del nome di un flusso di lavoro per semplificare i risultati. L'impostazione predefinita prevede la visualizzazione di tutti i flussi di lavoro nell'elenco.

`Version`

È possibile inserire tutto o parte di un numero di versione per semplificare i risultati. L'impostazione predefinita prevede la visualizzazione di tutte le versioni nell'elenco.

`Type`

È possibile filtrare in base al tipo di flusso di lavoro o visualizzare tutti i tipi. L'impostazione predefinita prevede la visualizzazione di tutti i tipi di flusso di lavoro nell'elenco.
+ *BUILD*
+ *TEST*
+ *DISTRIBUZIONE*

`Owner`

Quando selezioni il filtro proprietario dalla barra di ricerca, Image Builder mostra un elenco dei proprietari dei flussi di lavoro di immagini nel tuo account. È possibile selezionare un proprietario dall'elenco per semplificare i risultati. L'impostazione predefinita prevede la visualizzazione di tutti i proprietari nell'elenco.
+ *Account AWS*— L'account proprietario della risorsa del flusso di lavoro.
+ *Amazon*: risorse per il flusso di lavoro che Amazon possiede e gestisce.

------
#### [ AWS CLI ]

Quando esegui il **[list-workflows](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-workflows.html)** comando in AWS CLI, puoi ottenere un elenco di flussi di lavoro di immagini di cui sei proprietario o a cui hai accesso.

L'esempio di comando seguente mostra come utilizzare il **list-workflows** comando senza filtri per elencare tutte le risorse del flusso di lavoro di immagini di Image Builder di cui si è proprietari o a cui si ha accesso.

**Esempio: elenca tutti i flussi di lavoro relativi alle immagini**

```
aws imagebuilder list-workflows
```

**Output:**

```
{
    "workflowVersionList": [
        {
            "name": "example-test-workflow",
            "dateCreated": "2023-11-21T22:53:14.347Z",
            "version": "1.0.0",
            "owner": "111122223333",
            "type": "TEST",
            "arn": "arn:aws:imagebuilder:us-west-2:111122223333:workflow/test/example-test-workflow/1.0.0"
        },
        {
            "name": "example-build-workflow",
            "dateCreated": "2023-11-20T12:26:10.425Z",
            "version": "1.0.0",
            "owner": "111122223333",
            "type": "BUILD",
            "arn": "arn:aws:imagebuilder:us-west-2:111122223333:workflow/build/example-build-workflow/1.0.0"
        },
        {
            "name": "example-distribution-workflow",
            "dateCreated": "2025-11-19T10:25:10.425Z",
            "version": "1.0.0",
            "owner": "111122223333",
            "type": "DISTRIBUTION",
            "arn": "arn:aws:imagebuilder:us-west-2:111122223333:workflow/distribution/example-distribution-workflow/1.0.0"
        }
    ]
}
```

Quando si esegue il **list-workflows** comando, è possibile applicare filtri per semplificare i risultati, come illustrato nell'esempio seguente. *Per ulteriori informazioni su come filtrare i risultati, vedete il comando [list-workflows nel Command Reference](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/list-workflows.html).AWS CLI *

**Esempio: filtro per creare flussi di lavoro**

```
aws imagebuilder list-workflows --filters name="type",values="BUILD"
```

**Output:**

```
{
    "workflowVersionList": [
        {
            "name": "example-build-workflow",
            "dateCreated": "2023-11-20T12:26:10.425Z",
            "version": "1.0.0",
            "owner": "111122223333",
            "type": "BUILD",
            "arn": "arn:aws:imagebuilder:us-west-2:111122223333:workflow/build/example-build-workflow/1.0.0"
        }
    ]
}
```

------

# Crea un flusso di lavoro basato su immagini
<a name="image-workflow-create-resource"></a>

Quando crei un flusso di lavoro di immagini, hai un maggiore controllo sul processo di creazione delle immagini. È possibile specificare quale flusso di lavoro viene eseguito quando Image Builder crea l'immagine e quali flussi di lavoro vengono eseguiti quando verifica l'immagine. È inoltre possibile specificare una chiave gestita dal cliente per crittografare le risorse del flusso di lavoro. Per ulteriori informazioni sulla crittografia per le risorse del flusso di lavoro, consulta[Crittografia e gestione delle chiavi in Image Builder](data-protection.md#ib-encryption).

Per la creazione di immagini, puoi specificare un flusso di lavoro in fase di creazione e uno o più flussi di lavoro in fase di test. Puoi persino saltare completamente la fase di compilazione o test, a seconda delle tue esigenze. Le azioni intraprese dal flusso di lavoro vengono configurate nel documento di definizione YAML utilizzato dal flusso di lavoro. Per ulteriori informazioni sulla sintassi del documento YAML, consulta. [Creare un documento di workflow YAML](image-workflow-create-document.md)

Per i passaggi per creare un nuovo flusso di lavoro di compilazione o test, seleziona la scheda corrispondente all'ambiente che utilizzerai.

------
#### [ Console di gestione AWS ]

È possibile utilizzare il seguente processo per creare un nuovo flusso di lavoro nella console Image Builder.

1. Aprire la console EC2 Image Builder all'indirizzo. [https://console.aws.amazon.com/imagebuilder/](https://console.aws.amazon.com/imagebuilder/)

1. Scegliete **Image Workflows** dal pannello di navigazione. Viene visualizzato un elenco di flussi di lavoro basati su immagini di cui il tuo account è proprietario o a cui ha accesso.
**Nota**  
Nel tuo elenco vedrai sempre le risorse del flusso di lavoro gestito da Amazon che Image Builder utilizza per i flussi di lavoro predefiniti. **Per visualizzare i dettagli di questi flussi di lavoro, puoi selezionare il link Workflow.**

1. Per creare un nuovo flusso di lavoro, scegli **Crea flusso di lavoro con immagini**. Viene visualizzata la pagina **Crea flusso di lavoro con immagini**.

1. Configura i dettagli per il tuo nuovo flusso di lavoro. Per creare un flusso di lavoro di creazione, seleziona l'opzione **Crea** nella parte superiore del modulo. Per creare un flusso di lavoro di **test, seleziona l'opzione Test** nella parte superiore del modulo. Image Builder compila l'elenco dei **modelli** in base a questa opzione. Tutti gli altri passaggi sono gli stessi per i flussi di lavoro di compilazione e test.

**Generali**  
La sezione generale include le impostazioni che si applicano alla risorsa del flusso di lavoro, come il nome e la descrizione. Le impostazioni generali includono quanto segue:
   + **Nome del flusso di lavoro delle immagini** (obbligatorio): il nome del flusso di lavoro delle immagini. Il nome deve essere univoco nel tuo account. Il nome può avere una lunghezza massima di 128 caratteri. I caratteri validi includono lettere, numeri`-`, spazi e`_`.
   + **Versione** (obbligatoria): la versione semantica della risorsa del flusso di lavoro da creare (*major.minor.patch*).
   + **Descrizione** (opzionale): aggiungi facoltativamente una descrizione per il tuo flusso di lavoro.
   + **Chiave KMS** (opzionale): puoi crittografare le risorse del flusso di lavoro con una chiave gestita dal cliente. Per ulteriori informazioni, consulta [Crittografa i flussi di lavoro relativi alle immagini con una chiave gestita dal cliente](data-protection.md#ib-workflow-encrypt-cmk).

**Documento di definizione**  
Il documento del flusso di lavoro YAML contiene tutte le configurazioni per il flusso di lavoro.

**Inizia a usare**
   + Per iniziare con un modello predefinito di Image Builder come base per il flusso di lavoro, selezionate l'opzione **Inizia dai** modelli. Questa opzione è selezionata per impostazione predefinita. Dopo aver scelto il modello da utilizzare dall'elenco **Modelli**, la configurazione predefinita dal modello selezionato viene copiata nel **Contenuto** del documento del nuovo flusso di lavoro, dove è possibile apportare modifiche.
   + Per definire il documento del flusso di lavoro da zero, selezionate l'opzione **Inizia da zero**. Questo compila il **Contenuto** con una breve descrizione di alcune parti importanti del formato del documento per aiutarti a iniziare.

   Il pannello **Contenuto** include una barra di stato nella parte inferiore che mostra gli avvisi o gli errori relativi al documento YAML. Per ulteriori informazioni su come creare un documento di workflow YAML, consulta. [Creare un documento di workflow YAML](image-workflow-create-document.md)

1. Una volta completato il flusso di lavoro o se desideri salvare lo stato di avanzamento e riprenderlo in un secondo momento, scegli **Crea** flusso di lavoro.

------
#### [ AWS CLI ]

Prima di eseguire il **[create-workflow](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-workflow.html)** comando in AWS CLI, devi creare il documento YAML che contiene tutta la configurazione per il tuo flusso di lavoro. Per ulteriori informazioni, consulta [Creare un documento di workflow YAML](image-workflow-create-document.md).

L'esempio seguente mostra come creare un flusso di lavoro di compilazione con il comando [AWS CLI create-workflow](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-workflow.html). Il `--data` parametro si riferisce a un documento YAML che contiene la configurazione di build per il flusso di lavoro creato.

**Esempio: creazione di un flusso di lavoro**

```
aws imagebuilder create-workflow --name example-build-workflow --semantic-version 1.0.0 --type BUILD --data file://example-build-workflow.yml
```

**Output:**

```
{
	"workflowBuildVersionArn": "arn:aws:imagebuilder:us-west-2:111122223333:workflow/build/example-build-workflow/1.0.0/1",
	"clientToken": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
```

L'esempio seguente mostra come creare un flusso di lavoro di test con il comando [create-workflow](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/imagebuilder/create-workflow.html) AWS CLI . Il `--data` parametro si riferisce a un documento YAML che contiene la configurazione di build per il flusso di lavoro creato.

**Esempio: creazione di un flusso di lavoro di test**

```
aws imagebuilder create-workflow --name example-test-workflow --semantic-version 1.0.0 --type TEST --data file://example-test-workflow.yml
```

**Output:**

```
{
	"workflowBuildVersionArn": "arn:aws:imagebuilder:us-west-2:111122223333:workflow/test/example-test-workflow/1.0.0/1",
	"clientToken": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222"
}
```

------

# Creare un documento di workflow YAML
<a name="image-workflow-create-document"></a>

Il documento di definizione del formato YAML configura le fasi di input, output e flusso di lavoro per le fasi di creazione e test del processo di creazione dell'immagine. Puoi iniziare da modelli che includono passaggi standardizzati oppure puoi iniziare da zero per definire il tuo flusso di lavoro. Sia che utilizzi un modello o inizi da zero, puoi personalizzare il flusso di lavoro in base alle tue esigenze.

## Struttura di un documento di workflow YAML
<a name="workflow-document-structure"></a>

Il documento del flusso di lavoro YAML utilizzato da Image Builder per eseguire azioni di creazione e test delle immagini è strutturato come segue.
+ [Identificazione del documento di workflow](#wfdoc-struct-ident)
+ [Parametri di input del documento del workflow](#wfdoc-struct-param)
+ [Fasi del documento del workflow](#wfdoc-struct-step)
+ [Output dei documenti del flusso di lavoro](#wfdoc-struct-output)

### Identificazione del documento di workflow
<a name="wfdoc-struct-ident"></a>

Identifica in modo univoco il flusso di lavoro. Questa sezione può includere i seguenti attributi.


|  Campo  |  Description  |  Tipo  |  Richiesto  | 
| --- | --- | --- | --- | 
|  nome  |  Il nome del documento del flusso di lavoro.  |  Stringa  |  No  | 
|  description  |  La descrizione del documento.  |  Stringa  |  No  | 
|  schemaVersion  |  La versione dello schema del documento, attualmente 1.0.  |  Stringa  |  Sì  | 

**Esempio**

```
---
name: sample-test-image
description: Workflow for a sample image, with extra configuration options exposed through workflow parameters.
schemaVersion: 1.0
```

### Parametri di input del documento del workflow
<a name="wfdoc-struct-param"></a>

Questa parte del documento del flusso di lavoro definisce i parametri di input che il chiamante può specificare. Se non disponi di parametri, puoi omettere questa sezione. Se specificate dei parametri, ogni parametro può includere i seguenti attributi.


|  Campo  |  Description  |  Tipo  |  Richiesto  |  Vincoli  | 
| --- | --- | --- | --- | --- | 
|  nome  |  Nome del parametro.  |  Stringa  |  Sì  |    | 
|  description  |  La descrizione del parametro.  |  Stringa  |  No  |    | 
|  default  |  Il valore predefinito del parametro, se non viene fornito alcun valore. Se non includete un valore predefinito nella definizione del parametro, il valore del parametro è obbligatorio in fase di esecuzione.  |  Corrisponde al tipo di dati del parametro.  |  No  |    | 
|  tipo  |  Il tipo di dati del parametro. Se non includete il tipo di dati nella definizione del parametro, il tipo di parametro per impostazione predefinita è un valore di stringa richiesto in fase di esecuzione.  |  Stringa  |  Sì  |  Il tipo di dati del parametro deve essere uno dei seguenti: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/imagebuilder/latest/userguide/image-workflow-create-document.html)  | 

**Esempio**

Specificate il parametro nel documento del flusso di lavoro.

```
parameters:
  - name: waitForActionAtEnd
    type: boolean
    default: true
    description: "Wait for an external action at the end of the workflow"
```

Utilizzate il valore del parametro nel documento del flusso di lavoro.

```
$.parameters.waitForActionAtEnd
```

### Fasi del documento del workflow
<a name="wfdoc-struct-step"></a>

Speciifica fino a 15 azioni in fasi per il flusso di lavoro. Le fasi vengono eseguite nell'ordine in cui sono definite nel documento del flusso di lavoro. In caso di errore, il rollback viene eseguito in ordine inverso, iniziando dal passaggio non riuscito e procedendo a ritroso rispetto ai passaggi precedenti.

Ogni passaggio può fare riferimento all'output di qualsiasi azione del passaggio precedente. Questa operazione è nota come *concatenamento o riferimento*. Per fare riferimento all'output di un'azione precedente, puoi usare un JSONPath selettore. Esempio:

```
$.stepOutputs.step-name.output-name
```

Per ulteriori informazioni, consulta [Utilizzate le variabili dinamiche nel documento del flusso di lavoro](wfdoc-dynamic-vars.md).

**Nota**  
Anche se la fase stessa non ha un attributo di output, qualsiasi output di un'azione di passaggio è incluso nella `stepOutput` fase.

Ogni passaggio può includere i seguenti attributi.


|  Campo  |  Description  |  Tipo  |  Richiesto  |  Valore predefinito  |  Vincoli  | 
| --- | --- | --- | --- | --- | --- | 
|  operazione  |  L'azione del flusso di lavoro eseguita da questo passaggio.  |  Stringa  |  Sì  |    |  Deve essere un'azione graduale supportata per i documenti del flusso di lavoro di Image Builder.  | 
|  `if`, seguito da una serie di istruzioni condizionali che modificano l'`if`operatore.  |  Le istruzioni condizionali aggiungono punti decisionali relativi al flusso di controllo al corpo delle fasi del flusso di lavoro.  |  Dict  |  No  |    |  Image Builder supporta le seguenti istruzioni condizionali come modificatori dell'operatore: `if` [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/imagebuilder/latest/userguide/image-workflow-create-document.html)  | 
|  description  |  La descrizione della fase.  |  Stringa  |  No  |    |  Le stringhe vuote non sono consentite. Se inclusa, la lunghezza deve essere compresa tra 1 e 1024 caratteri.  | 
|  inputs  |  Contiene i parametri necessari per l'esecuzione dell'azione del passaggio. È possibile specificare i valori chiave come valori statici o con una JSONPath variabile che si risolve nel tipo di dati corretto.  |  Dict  |  Sì  |    |    | 
|  nome  |  Il nome della fase. Questo nome deve essere univoco all'interno del documento del flusso di lavoro.  |  Stringa  |  Sì  |    |  La lunghezza deve essere compresa tra 3 e 128 caratteri. Può includere caratteri alfanumerici e. `_` Senza spazi.  | 
|  onFailure  |  Configura l'azione da eseguire in caso di errore del passaggio, come segue. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/imagebuilder/latest/userguide/image-workflow-create-document.html)  |  Stringa  |  No  |  `Abort`  |  `Abort` \$1 `Continue`  | 
|  Rollback abilitato  |  Configura se il passaggio verrà ripristinato in caso di errore. È possibile utilizzare un valore booleano statico o una JSONPath variabile dinamica che si risolve in un valore booleano.  |  Boolean  |  No  |  `true`  |  `true` \$1 `false` \$1 o una JSONPath variabile che si risolve in vero o falso.  | 
|  timeoutSeconds  |  Il tempo massimo, in secondi, di esecuzione del passaggio prima di fallire e riprovare, se si verificano nuovi tentativi.  |  Numero intero  |  No  |  Dipende dall'impostazione predefinita definita per l'azione della fase, se applicabile.  |  Non può essere superiore al timeout massimo dell'azione della fase  | 
|  Secondi di attesa  |  Il tempo, in secondi, per il quale verrà interrotta l'esecuzione della fase.  |  Numero intero  |  No  |  0  |  Non può superare i TimeoutSeconds dell'azione del passo  | 

**Esempio**

```
steps:
  - name: LaunchTestInstance
    action: LaunchInstance
    onFailure: Abort
    inputs:
      waitFor: "ssmAgent"

  - name: ApplyTestComponents
    action: ExecuteComponents
    onFailure: Abort
    inputs:
      instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId"

  - name: TerminateTestInstance
    action: TerminateInstance
    onFailure: Continue
    inputs:
      instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId"

  - name: WaitForActionAtEnd
    action: WaitForAction
    if:
      booleanEquals: true
      value: "$.parameters.waitForActionAtEnd"
```

### Output dei documenti del flusso di lavoro
<a name="wfdoc-struct-output"></a>

Definisce gli output per il flusso di lavoro. Ogni output è una coppia di valori chiave che specifica il nome dell'output e il valore. È possibile utilizzare gli output per esportare dati in fase di esecuzione che i flussi di lavoro successivi possono utilizzare. Questa sezione è facoltativa.

Ogni output definito include i seguenti attributi.


|  Campo  |  Description  |  Tipo  |  Richiesto  | 
| --- | --- | --- | --- | 
|  nome  |  Il nome dell'output. Il nome deve essere univoco in tutti i flussi di lavoro che includi nella pipeline.  |  Stringa  |  Sì  | 
|  value  |  Il valore per l'output. Il valore della stringa può essere una variabile dinamica, ad esempio un file di output di un'azione graduale. Per ulteriori informazioni, consulta [Utilizzate le variabili dinamiche nel documento del flusso di lavoro](wfdoc-dynamic-vars.md).  |  Stringa  |  Sì  | 

**Esempio**

Create un ID dell'immagine di output per il documento del flusso di lavoro con l'output del `createProdImage` passaggio.

```
outputs:
  - name: 'outputImageId'
    value: '$.stepOutputs.createProdImage.imageId'
```

Fate riferimento all'output del flusso di lavoro nel flusso di lavoro successivo.

```
$.workflowOutputs.outputImageId
```

# Azioni in fasi supportate per il documento del flusso di lavoro
<a name="wfdoc-step-actions"></a>

Questa sezione include dettagli sulle azioni dei passaggi supportate da Image Builder.Termini utilizzati in questa sezione

AMI  
Amazon Machine Image

ARN  
Nome della risorsa Amazon

**Topics**
+ [ApplyImageConfigurations](#wfdoc-step-action-apply-image-configurations)
+ [BootstrapInstanceForContainer](#wfdoc-step-action-bootstrap-container)
+ [CollectImageMetadata](#wfdoc-step-action-collect-image-metadata)
+ [CollectImageScanFindings](#wfdoc-step-action-collect-findings)
+ [CreateImage](#wfdoc-step-action-create-img-from-inst)
+ [DistributeImage](#wfdoc-step-action-distribute-image)
+ [ExecuteComponents](#wfdoc-step-action-exec-components)
+ [ExecuteStateMachine](#wfdoc-step-action-exec-state-machine)
+ [LaunchInstance](#wfdoc-step-action-launch-instance)
+ [ModifyImageAttributes](#wfdoc-step-action-modify-image-attributes)
+ [RegisterImage](#wfdoc-step-action-register-image)
+ [RunCommand](#wfdoc-step-action-run-command)
+ [RunSysPrep](#wfdoc-step-action-run-sysprep)
+ [SanitizeInstance](#wfdoc-step-action-sanitize-instance)
+ [TerminateInstance](#wfdoc-step-action-terminate-instance)
+ [WaitForAction](#wfdoc-step-action-waitfor)
+ [WaitForSSMAgent](#wfdoc-step-action-wait-for-ssm-agent)

## ApplyImageConfigurations
<a name="wfdoc-step-action-apply-image-configurations"></a>

Questa operazione applica varie configurazioni e integrazioni ai sistemi distribuiti AMIs, ad esempio configurazioni di licenza, configurazioni di modelli di avvio, configurazioni di esportazione S3, configurazioni EC2 Fast Launch e configurazioni dei parametri Systems Manager. Le configurazioni si applicano alle immagini distribuite solo nell'account di origine, ad eccezione delle configurazioni dei parametri SSM che possono essere applicate su più account.

**Timeout predefinito**: 360 minuti

**Timeout massimo: 720 minuti**

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| region | La regione dell'immagine. | Stringa | Sì |  |  | 
| licenseConfigurationArns | L'ARN di configurazione della licenza per l'immagine. | Array | No |  |  | 
| launchTemplateConfigurations |  | Array | No |  |  | 
| launchTemplateConfigurations:launchTemplateId | L'ID del modello di avvio da applicare all'immagine. | Stringa | Sì, se launchTemplateConfigurations è specificato |  |  | 
| launchTemplateConfigurations:ID account | L'account del modello di avvio IDs da applicare all'immagine. | Stringa | No |  |  | 
| launchTemplateConfigurations:setDefaultVersion | L'impostazione della versione predefinita del modello di lancio per l'immagine. | Boolean | No |  |  | 
| s3 ExportConfiguration |  | Array | No |  |  | 
| s3: nome del ruolo ExportConfiguration | Il nome del ruolo di configurazione di esportazione S3 per l'immagine. | Stringa | Sì, se s3ExportConfiguration è specificato |  |  | 
| s3: ExportConfiguration diskImageFormat | Il formato di immagine del disco di configurazione di esportazione S3 per l'immagine. | Stringa | Sì, se s3ExportConfiguration è specificato |  | Valori consentiti: VMDK\$1RAW\$1VHD | 
| ExportConfigurationS3: secchio S3 | Il nome del bucket di configurazione di esportazione S3 per l'immagine. | Stringa | Sì, se è specificato s3ExportConfiguration |  |  | 
| Prefisso S3: S3 ExportConfiguration | Il prefisso del bucket di configurazione di esportazione S3 per l'immagine. | Stringa | No |  |  | 
| fastLaunchConfigurations | La configurazione EC2 Fast Launch per l'immagine. | Array | No |  |  | 
| fastLaunchConfigurationsLa configurazione Fast Launch per l'immagine. ----sep----:enabled |  EC2 Avvio rapido enabled/disabled dell'immagine. | Booleano | Sì, se fastLaunchConfigurations è specificato |  |  | 
| fastLaunchConfigurationsSì se è specificato ----sep----:SnapshotConfiguration |  EC2 Avvio enabled/disabled rapido dell'immagine. | Eseguire la mappatura | No |  |  | 
| fastLaunchConfigurationsAvvio rapido per l'immagine. ----sep----:SnapshotConfiguration: targetResourceCount | EC2 Numero di risorse target di Fast Launch per l'immagine. | Numero intero | No |  |  | 
| fastLaunchConfigurations:maxParallelLaunches | EC2 Fast Launch: numero massimo di lanci paralleli per l'immagine. | Numero intero | No |  |  | 
| fastLaunchConfigurationsFast Launch: numero massimo di lanci paralleli per l'immagine. ----sep----:LaunchTemplate |  |  | No |  |  | 
| fastLaunchConfigurations:LaunchTemplate ----Sep----:LaunchTemplate: launchTemplateId | EC2 ID del modello di avvio di Fast Launch per l'immagine. | Stringa | No |  |  | 
| fastLaunchConfigurationsID del modello di avvio Fast Launch per l'immagine. ----sep----:launchTemplate: launchTemplateName | EC2 Nome del modello di avvio di Fast Launch per l'immagine. | Stringa | No |  |  | 
| fastLaunchConfigurationsNome del modello di avvio Fast Launch per l'immagine. ----sep----:LaunchTemplate: launchTemplateVersion | EC2 Fast Launch lancia la versione del modello per l'immagine. | Stringa | No |  |  | 
| ssmParameterConfigurations | La configurazione dei parametri SSM per l'immagine. | Eseguire la mappatura | No |  |  | 
| ssmParameterConfigurations:amiAccountId | L'ID dell'account AMI del parametro SSM per l'immagine. | Stringa | No |  |  | 
| ssmParameterConfigurationsL'ID dell'account AMI del parametro SSM per l'immagine. ----sep----:ParameterName | Il nome del parametro SSM per l'immagine. | Stringa | Sì, se ssmParameterConfigurations è specificato. |  |  | 
| ssmParameterConfigurationsSì se è specificato ----sep----:DataType | Il tipo di dati del parametro SSM per l'immagine. | Stringa | No |  | Valori consentiti - text\$1aws:ec2:image) | 

**Output: la tabella seguente include** gli output per questa azione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| Immagini configurate | Un elenco di immagini configurate. | Array | 
| Immagini configurate: AccountID | L'ID dell'account di destinazione dell'immagine distribuita. | Stringa | 
| Immagini configurate: nome | Il nome dell'AMI. | Stringa | 
| Immagini configurate: AMIID | L'ID AMI dell'immagine distribuita. | Stringa | 
| Immagini configurate: data di inizio | Ora UTC all'inizio della distribuzione. | Stringa | 
| Immagini configurate: data interrotta | Ora UTC al termine della distribuzione. | Stringa | 
| Immagini configurate: fase | La fase in cui si è interrotta la distribuzione. | Completato\$1 AssociateLicensesRunning \$1 \$1 UpdateLaunchTemplateRunning \$1 PutSsmParametersRunning \$1 UpdateFastLaunchConfiguration ExportAmiQueued ExportAmiRunning | 
| Immagini configurate: regione | Tono dell'immagine distribuita AWS  | Stringa | 
| Immagini configurate: status | Stato della distribuzione. | Completato\$1Fallito\$1Annullato\$1 TimedOut | 
| Immagini configurate: messaggio di errore  | Messaggio di errore, se presente. | Stringa | 

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: ApplyImageConfigurations
  action: ApplyImageConfigurations
  onFailure: Abort
  inputs:
    distributedImages.$: $.stepOutputs.DistributeImageStep.distributedImages
```

Utilizzate l'output del valore dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.ApplyImageConfigurationsStep.configuredImages
```

## BootstrapInstanceForContainer
<a name="wfdoc-step-action-bootstrap-container"></a>

Questa operazione esegue uno script di servizio per avviare l'istanza con i requisiti minimi per eseguire i flussi di lavoro dei container. Image Builder utilizza l'**sendCommand**API Systems Manager per eseguire questo script. Per ulteriori informazioni, vedere [AWS Systems Manager Run Command](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html).

**Nota**  
Lo script bootstrap installa i pacchetti Docker AWS CLI e Docker che sono i prerequisiti per consentire a Image Builder di creare correttamente contenitori Docker. Se non includi questa operazione, la creazione dell'immagine potrebbe fallire.

**Timeout predefinito:** 60 minuti

**Timeout massimo: 720 minuti**

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'ID dell'istanza da avviare. | Stringa | Sì |  | Deve essere l'ID dell'istanza di output della fase del flusso di lavoro che ha avviato l'istanza per questo flusso di lavoro. | 

**Output:** la tabella seguente include gli output per questa azione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| runCommandId | L'ID del Systems Manager sendCommand che ha eseguito lo script di bootstrap sull'istanza. | Stringa | 
| status | Lo stato restituito dal Systems ManagersendCommand. | Stringa | 
| output | Output restituito dal Systems ManagersendCommand. | Stringa | 

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: ContainerBootstrapStep
  action: BootstrapInstanceForContainer
  onFailure: Abort
  inputs:
      instanceId.$: $.stepOutputs.LaunchStep.instanceId
```

Utilizzate l'output del valore dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.ContainerBootstrapStep.status
```

## CollectImageMetadata
<a name="wfdoc-step-action-collect-image-metadata"></a>

Questa operazione è valida solo per i flussi di lavoro di creazione.

EC2 Image Builder esegue [AWS Systems Manager (Systems Manager) Agent](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) sulle EC2 istanze che avvia per creare e testare l'immagine. Image Builder raccoglie informazioni aggiuntive sull'istanza utilizzata durante la fase di creazione con [Systems](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-inventory.html) Manager Inventory. Queste informazioni includono il nome e la versione del sistema operativo (OS), nonché l'elenco dei pacchetti e delle rispettive versioni riportate dal sistema operativo.

**Nota**  
Questa operazione funziona solo per le immagini che creano AMIs.

**Timeout predefinito:** 30 minuti

**Timeout massimo: 720 minuti**

**Rollback:** Image Builder ripristina tutte le risorse Systems Manager create durante questa fase.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'istanza di build a cui applicare le impostazioni dei metadati. | Stringa | Sì |  | Deve essere l'ID dell'istanza di output della fase del flusso di lavoro che ha avviato l'istanza di compilazione per questo flusso di lavoro. | 

**Output:** la tabella seguente include gli output per questa azione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| osVersion | Il nome e la versione del sistema operativo raccolti dall'istanza di build. | Stringa | 
| ID dell'associazione | L'ID di associazione Systems Manager utilizzato per la raccolta dell'inventario. | Stringa | 

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: CollectMetadataStep
  action: CollectImageMetadata
  onFailure: Abort
  inputs:
      instanceId: $.stepOutputs.LaunchStep.instanceId
```

Utilizza l'output dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.CollectMetadataStep.osVersion
```

## CollectImageScanFindings
<a name="wfdoc-step-action-collect-findings"></a>

Se Amazon Inspector è abilitato per il tuo account e la scansione delle immagini è abilitata per la tua pipeline, questa operazione raccoglie i risultati della scansione delle immagini riportati da Amazon Inspector per la tua istanza di test. Questa operazione non è disponibile per i flussi di lavoro di compilazione.

**Timeout predefinito: 120 minuti**

**Timeout massimo: 720 minuti**

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'ID dell'istanza su cui è stata eseguita la scansione. | Stringa | Sì |  | Deve essere l'ID dell'istanza di output della fase del flusso di lavoro che ha avviato l'istanza per questo flusso di lavoro. | 

**Output:** la tabella seguente include gli output per questa azione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| runCommandId | L'ID del Systems Manager sendCommand che ha eseguito lo script per raccogliere i risultati. | Stringa | 
| status | Lo stato restituito dal Systems ManagersendCommand. | Stringa | 
| output | Output restituito dal Systems ManagersendCommand. | Stringa | 

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: CollectFindingsStep
  action: CollectImageScanFindings
  onFailure: Abort
  inputs:
      instanceId.$: $.stepOutputs.LaunchStep.instanceId
```

Utilizzate l'output del valore dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.CollectFindingsStep.status
```

## CreateImage
<a name="wfdoc-step-action-create-img-from-inst"></a>

Questa operazione crea un'immagine da un'istanza in esecuzione con l' EC2 `CreateImage`API Amazon. Durante il processo di creazione, l'azione della fase attende se necessario per verificare che le risorse abbiano raggiunto lo stato corretto prima di continuare.

**Timeout predefinito: 720 minuti**

**Timeout massimo**: 3 giorni

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'istanza da cui creare la nuova immagine. | Stringa | Sì |  | L'istanza per l'ID di istanza fornito deve trovarsi in uno running stato all'inizio di questo passaggio. | 

**Output:** la tabella seguente include gli output per questa azione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| imageId | L'ID AMI dell'immagine creata. | Stringa | 

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: CreateImageFromInstance
  action: CreateImage
  onFailure: Abort
  inputs:
      instanceId.$: "i-1234567890abcdef0"
```

Utilizzate l'output del valore dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.CreateImageFromInstance.imageId
```

## DistributeImage
<a name="wfdoc-step-action-distribute-image"></a>

Questa operazione distribuisce un AMI a regioni e account specifici. Crea copie dell'AMI nelle regioni e negli account di destinazione in base alla configurazione di distribuzione fornita, fornita nelle richieste per l' CreateImage OR CreateImagePipeline APIs o alle impostazioni di distribuzione personalizzate fornite nel flusso di lavoro per sovrascrivere le impostazioni nella configurazione di distribuzione.

**Timeout predefinito**: 360 minuti

**Timeout massimo: 720 minuti**

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| region | L'elenco delle regioni in cui distribuire l'immagine. | Stringa | Sì |  | Lunghezza minima pari a 1. La lunghezza massima è 1024 caratteri. | 
| nome | Il nome della configurazione di distribuzione. | Stringa | No |  |  | 
| description | Le distribuzioni della configurazione di distribuzione. | Stringa | No |  |  | 
| targetAccountIds | Account IDs su cui distribuire l'immagine. | Array | No |  |  | 
| Tag AMI | I tag della configurazione di distribuzione. | Eseguire la mappatura | No |  |  | 
| kmsKeyId | Chiavi KMS da applicare all'immagine distribuita. | Stringa | No |  |  | 

**Output:** la tabella seguente include gli output per questa azione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| Immagini distribuite | Un elenco di immagini distribuite | Array | 
| Immagini distribuite: regione | La AWS regione dell'immagine distribuita. | Stringa | 
| Immagini distribuite: nome | Il nome dell'AMI. | Stringa | 
| Immagini distribuite: AMIID | L'ID AMI dell'immagine distribuita. | Stringa | 
| Immagini distribuite: AccountID | L'ID dell'account di destinazione dell'immagine distribuita. | Stringa | 
| Immagini distribuite: data di inizio | Ora UTC all'inizio della distribuzione. | Stringa | 
| Immagini distribuite: data interrotta | Ora UTC al termine della distribuzione. | Stringa | 
| Immagini distribuite: status | Stato della distribuzione. | Completato\$1Fallito\$1Annullato\$1 TimedOut | 
| Immagini distribuite: fase | La fase in cui si è interrotta la distribuzione. | Completato\$1 CopyAmiRunning | 
| Immagini distribuite: messaggio di errore  | Messaggio di errore, se presente. | Stringa | 

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: DistributeImage
  action: DistributeImage
  onFailure: Abort
  inputs:
    distributions:
      - region.$: "$.parameters.SourceRegion"
        description: "AMI distribution to source region"
        amiTags:
          DistributionTest: "SourceRegion"
          WorkflowStep: "DistributeToSourceRegion"
          BuildDate: "{{imagebuilder:buildDate:yyyyMMHHss}}"
          BuildVersion: "{{imagebuilder:buildVersion}}"
```

Utilizzate l'output del valore dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.DistributeImageStep.distributedImages
```

## ExecuteComponents
<a name="wfdoc-step-action-exec-components"></a>

Questa operazione esegue i componenti specificati nella ricetta per l'immagine corrente in fase di creazione. I flussi di lavoro di compilazione eseguono i componenti di compilazione sull'istanza di compilazione. I flussi di lavoro di test eseguono solo componenti di test sull'istanza di test.

Image Builder utilizza l'**sendCommand**API Systems Manager per eseguire i componenti. Per ulteriori informazioni, vedere [AWS Systems Manager Run Command](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html).

**Timeout predefinito: 720** minuti

**Timeout massimo**: 1 giorno

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'ID dell'istanza su cui devono essere eseguiti i componenti. | Stringa | Sì |  | Deve essere l'ID dell'istanza di output della fase del flusso di lavoro che ha avviato l'istanza per questo flusso di lavoro. | 

**Output:** la tabella seguente include gli output per questa azione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| runCommandId | L'ID del Systems Manager sendCommand che ha eseguito i componenti sull'istanza. | Stringa | 
| status | Lo stato restituito dal Systems ManagersendCommand. | Stringa | 
| output | Output restituito dal Systems ManagersendCommand. | Stringa | 

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: ExecComponentsStep
  action: ExecuteComponents
  onFailure: Abort
  inputs:
      instanceId: $.stepOutputs.LaunchStep.instanceId
```

Utilizza l'output dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.ExecComponentsStep.status
```

## ExecuteStateMachine
<a name="wfdoc-step-action-exec-state-machine"></a>

Questa operazione avvia l'esecuzione di una macchina a AWS Step Functions stati da un flusso di lavoro Image Builder. Image Builder utilizza l'`StartExecution`API Step Functions per avviare la macchina a stati e attende che venga completata. Ciò è utile per integrare flussi di lavoro complessi, processi di convalida della conformità o certificazione nella pipeline di creazione di immagini.

Per ulteriori informazioni, consulta [Learn about state machine in Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-statemachines.html) nella *AWS Step Functions Developer Guide*.

**Timeout predefinito:** 6 ore

**Timeout massimo: 24** ore

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| stateMachineArn | L'ARN della macchina a stati Step Functions da eseguire. | Stringa | Sì |  | Deve essere un ARN valido per una macchina a stati. | 
| input | Dati di input JSON da fornire alla macchina a stati. | Stringa | No | \$1\$1 | Deve essere una stringa JSON valida, lunghezza massima: 16 KiB. | 

**Output:** la tabella seguente include gli output per questa operazione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| executionArn | L'ARN dell'esecuzione della macchina a stati. | Stringa | 
| output | L'output dell'esecuzione della macchina a stati. | Stringa | 

**Autorizzazioni IAM richieste**

Il ruolo di esecuzione personalizzato deve disporre delle seguenti autorizzazioni per utilizzare questa azione:

**Consenti azioni**
+ `states:StartExecution`
+ `states:DescribeExecution`

**Specificare le risorse**
+ `arn:aws:states:us-west-2:111122223333:stateMachine:state-machine-name`
+ `arn:aws:states:us-west-2:111122223333:execution:state-machine-name:*`

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: ValidateImageCompliance
  action: ExecuteStateMachine
  timeoutSeconds: 3600
  onFailure: Abort
  inputs:
    stateMachineArn: arn:aws:states:us-west-2:111122223333:stateMachine:ImageComplianceValidation
    input: |
      {
        "imageId": "{{ $.stepOutputs.CreateImageFromInstance.imageId }}",
        "region": "us-west-2",
        "complianceLevel": "high",
        "requiredScans": ["cve", "benchmark", "configuration"]
      }
```

Utilizzate l'output del valore dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.ValidateImageCompliance.executionArn
```

## LaunchInstance
<a name="wfdoc-step-action-launch-instance"></a>

Questa operazione avvia un'istanza nell'istanza Account AWS e attende che l'agente Systems Manager sia in esecuzione sull'istanza prima di passare alla fase successiva. L'azione di avvio utilizza le impostazioni della ricetta e delle risorse di configurazione dell'infrastruttura associate all'immagine. Ad esempio, il tipo di istanza da avviare deriva dalla configurazione dell'infrastruttura. L'output è l'ID dell'istanza che è stata avviata.

L'`waitFor`input configura la condizione che soddisfa il requisito di completamento della fase.

**Timeout predefinito**: 75 minuti

**Timeout massimo: 720 minuti**

**Rollback:** per le istanze di build, il rollback esegue l'azione che hai configurato nella risorsa di configurazione dell'infrastruttura. Per impostazione predefinita, le istanze di compilazione vengono terminate se la creazione dell'immagine fallisce. Tuttavia, esiste un'impostazione nella configurazione dell'infrastruttura per mantenere l'istanza di build per la risoluzione dei problemi.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| imageIdOverride | L'immagine da usare per avviare l'istanza | Stringa | No |  Fase di creazione: immagine di base della ricetta dell'immagine Fase di test: AMI in uscita dalla fase di costruzione  | Deve essere un ID AMI valido | 
| instanceTypesOverride | Image Builder prova ogni tipo di istanza nell'elenco finché non ne trova uno che si avvia correttamente. | Elenco di String | No | Tipi di istanze specificati nella configurazione dell'infrastruttura | Devono essere tipi di istanza validi | 
| Attendi | La condizione da attendere prima di completare la fase del flusso di lavoro e passare alla fase successiva | Stringa | Sì |  | Image Builder supporta. ssmAgent | 

**Output:** la tabella seguente include gli output per questa operazione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| instanceId | L'ID dell'istanza che è stata avviata. | Stringa | 

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: LaunchStep
  action: LaunchInstance
  onFailure: Abort
  inputs:
    waitFor: ssmAgent
```

Utilizza l'output dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.LaunchStep.instanceId
```

## ModifyImageAttributes
<a name="wfdoc-step-action-modify-image-attributes"></a>

Questa operazione modifica gli attributi del sistema distribuito AMIs, come i permessi di avvio e altri attributi AMI. Funziona in base a AMIs ciò che è stato distribuito alle regioni e agli account target.

**Timeout predefinito:** 120 minuti

**Timeout massimo: 180 minuti**

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| region | La regione dell'immagine. | Stringa | Sì |  |  | 
| Autorizzazione di avvio |  |  | No |  |  | 
| Autorizzazione di avvio: ID utente | L'utente IDs da modificare nelle autorizzazioni di avvio dell'immagine. | Stringa | No |  |  | 
| Autorizzazione di avvio: gruppi di utenti | I gruppi di utenti da modificare nelle autorizzazioni di avvio dell'immagine. | Stringa | No |  |  | 
| Autorizzazione di avvio: organizzazione ARNS | L' AWS organizzazione da modificare nelle autorizzazioni ARNs di avvio per l'immagine. | Stringa | No |  |  | 
| Autorizzazione di avvio: organizationalUnitArns | L'unità AWS organizzativa ARNs da modificare nelle autorizzazioni di avvio dell'immagine. | Stringa | No |  |  | 

**Output:** la tabella seguente include gli output di questa azione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| Immagini modificate | Un elenco di immagini modificate | Array | 
| Immagini modificate: AccountID | L'ID dell'account di destinazione dell'immagine distribuita. | Stringa | 
| Immagini modificate: nome | Il nome dell'AMI. | Stringa | 
| Immagini modificate: AMIID | L'ID AMI dell'immagine distribuita. | Stringa | 
| Immagini modificate: data di inizio | Ora UTC all'inizio della distribuzione. | Stringa | 
| Immagini modificate: data interrotta | Ora UTC al termine della distribuzione. | Stringa | 
| Immagini modificate: Step | La fase in cui si è interrotta la distribuzione. | Completato\$1 ModifyAmiRunning | 
| Immagini modificate: regione | La regione dell'immagine. AWS  | Stringa | 
| Immagini modificate: status | Stato della distribuzione. | Completato\$1Fallito\$1Annullato\$1 TimedOut | 
| Immagini modificate: messaggio di errore  | Messaggio di errore, se presente. | Stringa | 

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: ModifyImageAttributes
  action: ModifyImageAttributes
  onFailure: Abort
  inputs:
    distributedImages.$: $.stepOutputs.DistributeImageStep.distributedImages
```

Utilizzate l'output del valore dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.ModifyImageAttributesStep.modifiedImages
```

## RegisterImage
<a name="wfdoc-step-action-register-image"></a>

Questa operazione registra una nuova Amazon Machine Image (AMI) utilizzando l' EC2 RegisterImage API Amazon. Consente di creare un'AMI da un'istantanea o da un set di istantanee esistente, specificando vari attributi dell'immagine.

**Timeout predefinito**: 540 minuti

**Timeout massimo**: 720 minuti

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| architecture | L'architettura dell'AMI. | Stringa | No |  | Valori validi: i386, x86\$164, arm64, x86\$164\$1mac, arm64\$1mac | 
| blockDeviceMapping | Le voci di mappatura dei dispositivi a blocchi per l'AMI. | Array | No |  |  | 
| BootMode | La modalità di avvio dell'AMI. | Stringa | No |  | Valori validi: legacy-bios, uefi, uefi-preferred | 
| description | Una descrizione per l'AMI. | Stringa | No |  |  | 
| enaSupport | Se è abilitata una rete avanzata con ENA. | Boolean | No |  |  | 
| Posizione dell'immagine | La posizione del manifesto AMI. | Stringa | No |  | Richiesto per il supporto S3 AMIs | 
| Supporto IMDS | Il livello di IMDSv2 supporto. | Stringa | No |  | Valori validi: v2.0 | 
| includeSnapshotTags | Se includere i tag della prima istantanea definita nella mappatura del dispositivo a blocchi. | Boolean | No | FALSE |  Se impostato su true, i tag vengono inclusi come segue: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/imagebuilder/latest/userguide/wfdoc-step-actions.html)  | 
| KernelID | L'ID del kernel da usare. | Stringa | No |  |  | 
| ID del disco RAM | L'ID del disco RAM da utilizzare. | Stringa | No |  |  | 
| rootDeviceName | Il nome del dispositivo principale. | Stringa | No |  | Esempio: /dev/sda1 | 
| sriovNetSupport | Rete migliorata con l'interfaccia Intel 82599 VF. | Stringa | No |  |  | 
| Supporto TPM | Supporto della versione TPM. | Stringa | No |  | Valori validi: v2.0 | 
| Dati UEFI | Dati UEFI con codifica Base64. | Stringa | No |  |  | 
| Tipo di virtualizzazione | Il tipo di virtualizzazione. | Stringa | No |  | Valori validi: hvm, paravirtual | 

**Output:** la tabella seguente include gli output per questa azione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| imageId | L'ID AMI dell'immagine registrata. | Stringa | 

**Autorizzazioni IAM richieste**

Il ruolo di esecuzione personalizzato deve disporre delle seguenti autorizzazioni per utilizzare questa azione:

**Consenti azioni**
+ `ec2:DescribeSnapshots`
+ `ec2:CreateTags`

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: RegisterNewImage
  action: RegisterImage
  onFailure: Abort
  inputs:
    architecture: "x86_64"
    bootMode: "uefi"
    blockDeviceMapping:
      - DeviceName: "/dev/sda1"
        Ebs:
          SnapshotId: "snap-1234567890abcdef0"
          VolumeSize: 100
          VolumeType: "gp3"
    rootDeviceName: "/dev/sda1"
    virtualizationType: "hvm"
```

Utilizzate l'output del valore dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.RegisterNewImage.imageId
```

**Esempio con a SnapshotId from another step e tag snapshot inclusi nell'AMI generata**

```
- name: CreateSnapshot
  action: RunCommand
  onFailure: Abort
  inputs:
    instanceId: "i-1234567890abcdef0"
    documentName: "AWS-RunShellScript"
    parameters:
      commands:
        - "aws ec2 create-snapshot --volume-id vol-1234567890abcdef0 --description 'Snapshot for AMI' --query 'SnapshotId' --output text"

- name: RegisterImageFromSnapshot
  action: RegisterImage
  onFailure: Abort
  inputs:
    architecture: "x86_64"
    bootMode: "uefi"
    blockDeviceMapping:
      - DeviceName: "/dev/sda1"
        Ebs:
          SnapshotId.$: "$.stepOutputs.CreateSnapshot.output[0]"
          VolumeSize: 100
          VolumeType: "gp3"
    includeSnapshotTags: true
    rootDeviceName: "/dev/sda1"
    virtualizationType: "hvm"
```

## RunCommand
<a name="wfdoc-step-action-run-command"></a>

Questa operazione esegue un documento di comando per il flusso di lavoro. Image Builder utilizza l'**sendCommand**API Systems Manager per eseguirlo automaticamente. Per ulteriori informazioni, vedere [AWS Systems Manager Run Command](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html).

**Timeout predefinito: 720** minuti

**Timeout massimo**: 720 minuti

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'ID dell'istanza su cui eseguire il documento di comando. | Stringa | Sì |  | Deve essere l'ID dell'istanza di output della fase del flusso di lavoro che ha avviato l'istanza per questo flusso di lavoro. | 
| documentName | Il nome del documento di comando Systems Manager da eseguire. | Stringa | Sì |  |  | 
| parametri | Un elenco di coppie chiave-valore per tutti i parametri richiesti dal documento di comando. | <string>dizionario<string, list > | Condizionale |  |  | 
| Versione del documento | La versione del documento di comando da eseguire. | Stringa | No | \$1DEFAULT |  | 

**Output:** la tabella seguente include gli output per questa azione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| runCommandId | L'ID del Systems Manager sendCommand che ha eseguito il documento di comando sull'istanza. | Stringa | 
| status | Lo stato restituito dal Systems ManagersendCommand. | Stringa | 
| output | Output restituito dal Systems ManagersendCommand. | Elenco di stringhe | 

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: RunCommandDoc
  action: RunCommand
  onFailure: Abort
  inputs:
    documentName: SampleDocument
    parameters:
        osPlatform: 
          - "linux"
    instanceId.$: $.stepOutputs.LaunchStep.instanceId
```

Utilizzate l'output del valore dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.RunCommandDoc.status
```

## RunSysPrep
<a name="wfdoc-step-action-run-sysprep"></a>

Questa operazione utilizza l'**sendCommand**API Systems Manager per eseguire il `AWSEC2-RunSysprep` documento per le istanze di Windows prima che l'istanza di compilazione si chiuda per l'istantanea. Queste azioni seguono le [AWS migliori pratiche per il rafforzamento e la pulizia dell'immagine](https://aws.amazon.com/articles/public-ami-publishing-hardening-and-clean-up-requirements/).

**Timeout predefinito: 60 minuti**

**Timeout massimo: 720 minuti**

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'ID dell'istanza su cui eseguire il AWSEC2-RunSysprep documento. | Stringa | Sì |  | Deve essere l'ID dell'istanza di output della fase del flusso di lavoro che ha avviato l'istanza per questo flusso di lavoro. | 

**Output:** la tabella seguente include gli output per questa azione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| runCommandId | L'ID del Systems Manager sendCommand che ha eseguito il AWSEC2-RunSysprep documento sull'istanza. | Stringa | 
| status | Lo stato restituito dal Systems ManagersendCommand. | Stringa | 
| output | Output restituito dal Systems ManagersendCommand. | Stringa | 

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: RunSysprep
  action: RunSysPrep
  onFailure: Abort
  inputs:
      instanceId.$: $.stepOutputs.LaunchStep.instanceId
```

Utilizzate l'output del valore dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.RunSysprep.status
```

## SanitizeInstance
<a name="wfdoc-step-action-sanitize-instance"></a>

Questa operazione esegue lo script di sanificazione consigliato per le istanze Linux prima che l'istanza di compilazione si chiuda per l'istantanea. Lo script sanitize aiuta a garantire che l'immagine finale segua le migliori pratiche di sicurezza e che gli artefatti o le impostazioni di build che non devono essere trasferiti all'istantanea vengano rimossi. Per ulteriori informazioni sullo script, consulta. [Pulizia post-compilazione richiesta](security-best-practices.md#post-build-cleanup) Questa operazione non si applica alle immagini dei contenitori.

Image Builder utilizza l'**sendCommand**API Systems Manager per eseguire questo script. Per ulteriori informazioni, vedere [AWS Systems Manager Run Command](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html).

**Timeout predefinito:** 60 minuti

**Timeout massimo: 720 minuti**

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'ID dell'istanza da disinfettare. | Stringa | Sì |  | Deve essere l'ID dell'istanza di output della fase del flusso di lavoro che ha avviato l'istanza per questo flusso di lavoro. | 

**Output:** la tabella seguente include gli output per questa azione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| runCommandId | L'ID del Systems Manager sendCommand che ha eseguito lo script di sanificazione sull'istanza. | Stringa | 
| status | Lo stato restituito dal Systems ManagersendCommand. | Stringa | 
| output | Output restituito dal Systems ManagersendCommand. | Stringa | 

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: SanitizeStep
  action: SanitizeInstance
  onFailure: Abort
  inputs:
      instanceId: $.stepOutputs.LaunchStep.instanceId
```

Utilizzate l'output del valore dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.SanitizeStep.status
```

## TerminateInstance
<a name="wfdoc-step-action-terminate-instance"></a>

Questa operazione termina l'istanza con l'ID dell'istanza passato come input.

**Timeout predefinito: 30 minuti**

**Timeout massimo: 720 minuti**

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'ID dell'istanza da terminare. | Stringa | Sì |  |  | 

**Uscite:** non ci sono uscite per questa operazione.

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro.

```
- name: TerminateInstance
  action: TerminateInstance
  onFailure: Continue
  inputs:
      instanceId.$: i-1234567890abcdef0
```

## WaitForAction
<a name="wfdoc-step-action-waitfor"></a>

Questa operazione mette in pausa il flusso di lavoro in esecuzione e attende di ricevere un'azione esterna dall'azione dell'API Image **SendWorkflowStepAction** Builder. Questo passaggio pubblica un EventBridge evento nel bus degli EventBridge eventi predefinito con il tipo di dettaglio. `EC2 Image Builder Workflow Step Waiting` La fase può anche inviare una notifica SNS se si fornisce un ARN per argomento SNS o richiamare una funzione Lambda in modo asincrono se si fornisce il nome di una funzione Lambda.

**Timeout predefinito: 3 giorni**

**Timeout massimo: 7 giorni**

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| snsTopicArn | Un argomento SNS ARN opzionale a cui inviare una notifica quando la fase del flusso di lavoro è in sospeso. | Stringa | No |  |  | 
| lambdaFunctionName | Un nome o ARN opzionale della funzione Lambda da richiamare in modo asincrono quando la fase del flusso di lavoro è in sospeso. | Stringa | No |  |  | 
| payload | Stringa JSON utilizzata come messaggio per SNS e payload per Lambda. Se fornito, per impostazione predefinita viene inserito un payload personalizzato. message/payload, used for SNS and Lambda respectively. If not provided, generates default message/payload | Stringa | No |  | Deve essere una stringa JSON valida, max 16 KB | 

**Output:** la tabella seguente include gli output per questa azione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| operazione | L'azione restituita dall'azione SendWorkflowStepAction API. | Stringa (RESUMEoSTOP) | 
| motivo | Il motivo dell'azione restituita. | Stringa | 

**Autorizzazioni IAM richieste**

Il ruolo di esecuzione personalizzato deve disporre delle seguenti autorizzazioni per utilizzare questa azione:

**Consenti azioni**
+ `lambda:InvokeFunction`

**Specificare le risorse**
+ `arn:aws:lambda:us-west-2:111122223333:function:function-name`
+ `arn:aws:lambda:us-west-2:111122223333:function:*`

**Esempio**

Specificate l'azione della fase nel documento del flusso di lavoro con la notifica SNS.

```
- name: SendEventAndWait
  action: WaitForAction
  onFailure: Abort
  inputs:
    snsTopicArn: arn:aws:sns:us-west-2:111122223333:ExampleTopic
```

Specificate l'azione della fase nel documento del flusso di lavoro con l'invocazione della funzione Lambda.

```
- name: SendEventAndWaitWithLambda
  action: WaitForAction
  onFailure: Abort
  inputs:
    lambdaFunctionName: ExampleFunction
    payload: |
      {
        "imageId": "{{ $.stepOutputs.CreateImageFromInstance.imageId }}",
        "region": "us-west-2"
      }
```

Utilizza l'output del valore dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.SendEventAndWait.reason
```

## WaitForSSMAgent
<a name="wfdoc-step-action-wait-for-ssm-agent"></a>

Questa operazione prevede che un' EC2 istanza diventi gestibile AWS Systems Manager dopo i periodi di mancata risposta previsti. È particolarmente utile per i flussi di lavoro con interruzioni note delle istanze, come riavvii del sistema, aggiornamenti del sistema operativo o operazioni specifiche della piattaforma che disconnettono temporaneamente l'istanza da SSM. Image Builder monitora l'istanza fino al ripristino della connettività SSM o al timeout.

**Timeout predefinito**: 60 minuti

**Timeout massimo: 180 minuti**

**Rollback:** non è previsto alcun rollback per questa operazione.

**Input:** la tabella seguente include gli input supportati per questa operazione.


| Nome di input | Description | Tipo | Obbligatorio | Predefinita | Vincoli | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | L'ID dell'istanza da monitorare per la connettività SSM. | Stringa | Sì |  | Deve essere un ID di EC2 istanza valido | 

**Output:** la tabella seguente include gli output per questa azione.


| Nome output | Description | Tipo | 
| --- | --- | --- | 
| status | Stato della connessione di SSM Agent. | Stringa | 

**Esempio**

Specificare l'azione della fase nel documento del flusso di lavoro.

```
- name: WaitForInstanceAfterReboot
  action: WaitForSSMAgent
  onFailure: Abort
  timeoutInSeconds: 900
  inputs:
    instanceId.$: $.stepOutputs.LaunchStep.instanceId
```

Utilizzate l'output del valore dell'azione della fase nel documento del flusso di lavoro.

```
$.stepOutputs.WaitForInstanceAfterReboot.Status
```

# Utilizzate le variabili dinamiche nel documento del flusso di lavoro
<a name="wfdoc-dynamic-vars"></a>

È possibile utilizzare variabili dinamiche nei documenti del flusso di lavoro per rappresentare valori che variano in fase di esecuzione per il processo di creazione dell'immagine. L'interpolazione di stringhe per variabili dinamiche consente di incorporare JSONPath espressioni all'interno di contenuti strutturati come stringhe JSON. Ciò è particolarmente utile quando è necessario passare valori di runtime all'interno di payload complessi per eseguire azioni come o. `ExecuteStateMachine` `WaitForAction`

Per utilizzare l'interpolazione di stringhe per variabili dinamiche, racchiudi le JSONPath espressioni in parentesi doppie arricciate all'interno del contenuto della stringa. `"{{...}}"` Solo JSONPath le espressioni racchiuse tra parentesi graffe doppie vengono elaborate come variabili. Tutte JSONPath le espressioni non racchiuse tra parentesi graffe doppie vengono trattate come contenuto di stringhe letterali.

**JSONPath sintassi dinamica delle variabili del flusso di lavoro**

```
$.<document structure>.[<step name>.]<variable name>
```

I valori delle variabili dinamiche sono rappresentati come JSONPath selettori con nodi strutturali che identificano in modo univoco la variabile di destinazione. Il primo nodo dopo la radice (\$1) si riferisce alla struttura del documento del flusso di lavoro, ad esempio o`stepOutputs`, nel caso delle variabili di sistema di Image Builder,. `imageBuilder` L'elenco seguente contiene i nodi della struttura dei documenti JSONPath del flusso di lavoro supportati.

**Nodi della struttura del documento**
+ parametri: i parametri del flusso di lavoro
+ StepOutputs: restituisce i risultati di una fase dello stesso documento del flusso di lavoro
+ WorkflowOutputs: output da un documento del flusso di lavoro già in esecuzione
+ imagebuilder - Variabili di sistema di Image Builder

I `parameters` nodi della struttura `stepOutputs` del documento includono un nodo opzionale per il nome del passaggio. Questo aiuta a garantire nomi di variabili univoci in tutti i passaggi.

L'ultimo nodo di JSONPath è il nome della variabile di destinazione, ad esempio`instanceId`.

Ogni passaggio può fare riferimento all'output di qualsiasi azione del passaggio precedente con queste variabili JSONPath dinamiche. Questa operazione è nota anche come *concatenamento o riferimento*. Per fare riferimento all'output di un'azione precedente, è possibile utilizzare la seguente variabile dinamica.

```
$.stepOutputs.step-name.output-name
```

**Importante**  
Quando un parametro di input fa riferimento a una variabile dinamica, l'indicatore di concatenamento (`.$`) deve essere collegato alla fine del nome del parametro.

**Esempio 1: indicatore di concatenamento dei parametri di input**

L'esempio seguente mostra un parametro di input che utilizza l'interpolazione di stringhe per risolvere una variabile dinamica nel valore del parametro in fase di esecuzione.

```
  - name: ApplyTestComponents
    action: ExecuteComponents
    onFailure: Abort
    inputs:
      instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId"
```

**Esempio 2: interpolazione di stringhe in variabili dinamiche**

L'esempio seguente dimostra come le variabili dinamiche utilizzano l'interpolazione di stringhe per determinare i valori in fase di esecuzione.

```
- name: ValidateImageConfiguration
  action: ExecuteStateMachine
  inputs:
    stateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:ImageValidation
    input: |
      {
        "imageId": "{{ $.stepOutputs.CreateImageFromInstance.imageId }}",
        "region": "us-east-1",
        "buildDate": "{{ $.imagebuilder.dateTime }}",
        "instanceType": "{{ $.stepOutputs.LaunchStep.instanceType }}"
      }
```

In questo esempio, le JSONPath espressioni racchiuse tra parentesi graffe doppie vengono risolte in fase di esecuzione:
+ `{{ $.stepOutputs.CreateImageFromInstance.imageId }}`- Risolve all'ID effettivo dell'immagine risultante dalla fase CreateImageFromInstance 
+ `{{ $.imagebuilder.dateTime }}`- Risolve al timestamp di compilazione corrente. [Usa le variabili di sistema di Image Builder](#wfdoc-ib-vars)Per un elenco delle variabili di sistema di Image Builder che è possibile utilizzare, vedere.
+ `{{ $.stepOutputs.LaunchStep.instanceType }}`- Risolve al tipo di istanza utilizzato in LaunchStep

Le stringhe letterali, ad esempio, rimangono invariate. `"region": "us-east-1"`

**Nota**  
L'interpolazione delle stringhe funziona con qualsiasi contenuto di stringhe nel documento del flusso di lavoro, incluse le stringhe multilinea che utilizzano l'operatore YAML pipe (). `|` Il requisito curly brace funge da meccanismo di fuga per distinguere chiaramente tra variabili e contenuto di testo letterale. JSONPath 

## Usa le variabili di sistema di Image Builder
<a name="wfdoc-ib-vars"></a>

Image Builder fornisce le seguenti variabili di sistema che è possibile utilizzare nel documento del flusso di lavoro:


|  Nome della variabile  |  Description  |  Tipo  |  Valore di esempio  | 
| --- | --- | --- | --- | 
|  cloudWatchLogGruppo  |  Il nome del gruppo CloudWatch Logs per i log di output. Formato: `/aws/imagebuilder/<recipe-name>`  |  Stringa  |  `/aws/imagebuilder/sampleImageRecipe`  | 
|  cloudWatchLogStream  |  Il nome del flusso CloudWatch Logs per i log di output.  |  Stringa  |  *1.0.0/1*  | 
|  collectImageMetadata  |  L'impostazione che indica a Image Builder se raccogliere i metadati dell'istanza.  |  Booleano  |  `true` \$1 `false`  | 
|  collectImageScanRisultati  |  Il valore corrente dell'impostazione che consente a Image Builder di raccogliere i risultati della scansione delle immagini.  |  Booleano  |  `true` \$1 `false`  | 
|  imageBuildNumber  |  Il numero di versione di build dell'immagine.  |  Numero intero  |  *1*  | 
|  imageId  |  L'ID AMI dell'immagine di base.  |  Stringa  |  *ami-1234567890abcdef1*  | 
|  Nome dell'immagine  |  Il nome dell'immagine.  |  Stringa  |  *sampleImage*  | 
|  imageType  |  Il tipo di output dell'immagine.  |  Stringa  |  `AMI` \$1 `Docker`  | 
|  imageVersionNumber  |  Il numero di versione dell'immagine.  |  Stringa  |  *1.0.0*  | 
|  instanceProfileName  |  Il nome del ruolo del profilo dell'istanza utilizzato da Image Builder per avviare le istanze di compilazione e test.  |  Stringa  |  *SampleImageBuilderInstanceProfileRole*  | 
|  platform  |  La piattaforma del sistema operativo dell'immagine creata.  |  Stringa  |  `Linux` \$1 `Windows` \$1 `MacOS`  | 
|  Registri S3  |  Un oggetto JSON che contiene la configurazione per i log S3 scritti da Image Builder.  |  Oggetto JSON  |  \$1'S3logs': \$1's3 ':' ', 's3BucketName': *sample-bucket* '\$1\$1 KeyPrefix *ib-logs*  | 
|  securityGroups  |  Il gruppo di sicurezza IDs che si applica alla creazione e al test delle istanze.  |  Elenco [Stringa]  |  *[sg-1234567890abcdef1, sg-11112222333344445]*  | 
|  Fonte ImageRan  |  L'Amazon Resource Name (ARN) della risorsa di immagine Image Builder utilizzata dal flusso di lavoro per le fasi di creazione e test.  |  Stringa  |  arn:aws:imagebuilder: ::image//*us-east-1**111122223333**sampleImage**1.0.0/1*  | 
|  subnetId  |  L'ID della sottorete in cui avviare le istanze di build e test.  |  Stringa  |  *subnet-1234567890abcdef1*  | 
|  terminateInstanceOnFallimento  |  Il valore corrente dell'impostazione che ordina a Image Builder di terminare l'istanza in caso di errore o di conservarla per la risoluzione dei problemi.  |  Booleano  |  `true` \$1 `false`  | 
|  Fase del flusso di lavoro  |  La fase corrente in esecuzione per l'esecuzione del flusso di lavoro.  |  Stringa  |  `Build` \$1 `Test`  | 
|  workingDirectory  |  Il percorso della directory di lavoro.  |  Stringa  |  `/tmp`  | 

# Utilizza le istruzioni condizionali nelle fasi del flusso di lavoro
<a name="wfdoc-conditional-statements"></a>

Le istruzioni condizionali iniziano con l'attributo `if` statement document. Lo scopo ultimo dell'`if`istruzione è determinare se eseguire l'azione del passaggio o ignorarla. Se l'`if`istruzione viene risolta in`true`, viene eseguita l'azione del passaggio. Se si risolve in`false`, Image Builder salta l'azione del passaggio e registra lo stato `SKIPPED` del passaggio nel registro.

L'`if`istruzione supporta istruzioni ramificate (`and`,`or`) e modificatori condizionali (). `not` Supporta inoltre i seguenti operatori di confronto che eseguono confronti di valori (uguali, minori, maggiori di) in base ai tipi di dati confrontati (stringa o numero).

**Operatori di confronto supportati**
+ `booleanEquals`
+ `numberEquals`
+ `numberGreaterThan`
+ `numberGreaterThanEquals`
+ `numberLessThan`
+ `numberLessThanEquals`
+ `stringEquals`

**Regole per le istruzioni di ramificazione e i modificatori condizionali**  
Le seguenti regole si applicano alle istruzioni di ramificazione (`and`,`or`) e ai modificatori condizionali (). `not`
+ Le istruzioni di ramificazione e i modificatori condizionali devono apparire su una riga a parte.
+ Le istruzioni di ramificazione e i modificatori condizionali devono seguire le regole di livello.
  + Può esserci una sola dichiarazione a livello principale.
  + Ogni ramo o modificatore figlio inizia un nuovo livello.

  Per ulteriori informazioni sui livelli, vedere[Livelli annidati nelle istruzioni condizionali](#wfdoc-conditional-structure).
+ Ogni istruzione ramificata deve avere almeno un'istruzione condizionale secondaria, ma non più di dieci.
+ I modificatori condizionali operano solo su un'istruzione condizionale secondaria.

## Livelli annidati nelle istruzioni condizionali
<a name="wfdoc-conditional-structure"></a>

Le istruzioni condizionali operano a diversi livelli in una sezione a sé stante. Ad esempio, l'attributo `if` statement appare allo stesso livello nel documento del flusso di lavoro del nome e dell'azione della fase. Questa è la base dell'istruzione condizionale.

È possibile specificare fino a quattro livelli di istruzioni condizionali, ma solo un'istruzione può apparire a livello principale. Tutte le altre istruzioni ramificate, i modificatori condizionali o gli operatori condizionali vengono indentati da lì, un rientro per livello.

Lo schema seguente mostra il numero massimo di livelli annidati per un'istruzione condizionale.

```
base:
  parent: 
    - child (level 2)
        - child (level 3)
            child (level 4)
```

Attributo `if`  
L'`if`attributo specifica l'istruzione condizionale come attributo del documento. Questo è il livello zero.

Livello genitore  
Questo è il primo livello di annidamento per le istruzioni condizionali. Può esserci una sola istruzione a questo livello. Se non hai bisogno di ramificazioni o modificatori, questo può essere un operatore condizionale senza istruzioni secondarie. Questo livello non utilizza la notazione tratteggiata, ad eccezione degli operatori condizionali.

Livelli per bambini  
I livelli da due a quattro sono considerati livelli per bambini. Le istruzioni secondarie possono includere istruzioni ramificate, modificatori condizionali o operatori condizionali.

**Esempio: livelli annidati**  
L'esempio seguente mostra il numero massimo di livelli in un'istruzione condizionale.

```
if:
  and:                             #first level
    - stringEquals: 'my_string'    #second level
      value: 'my_string'
    - and:                         #also second level
        - numberEquals: '1'        #third level
          value: 1
        - not:                     #also third level
            stringEquals: 'second_string'      #fourth level
            value: "diff_string"
```

**Regole di nidificazione**
+ Ogni ramo o modificatore a livello di bambino inizia un nuovo livello.
+ Ogni livello è rientrato.
+ Possono esserci un massimo di quattro livelli, tra cui un'istruzione, un modificatore o un operatore a livello principale, e fino a tre livelli aggiuntivi.

## Esempi di istruzioni condizionali
<a name="wfdoc-conditional-examples"></a>

Questo gruppo di esempi mostra vari aspetti delle istruzioni condizionali.

**Ramificazione: e**  
L'istruzione `and` branching opera su un elenco di espressioni che sono figlie del ramo, ognuna delle quali deve restituire a. `true` Image Builder valuta le espressioni nell'ordine in cui appaiono nell'elenco. Se un'espressione restituisce un risultato pari a`false`, l'elaborazione si interrompe e viene considerato il ramo. `false`

L'esempio seguente restituisce a`true`, perché entrambe le espressioni restituiscono a. `true`

```
if:
  and:
    - stringEquals: 'test_string'
      value: 'test_string'
    - numberEquals: 1
      value: 1
```

**Ramificazione: o**  
L'istruzione di `or` ramificazione opera su un elenco di espressioni che sono figlie del ramo, almeno una delle quali deve restituire a. `true` Image Builder valuta le espressioni nell'ordine in cui appaiono nell'elenco. Se un'espressione restituisce un risultato pari a`true`, l'elaborazione si interrompe e viene considerato il ramo. `true`

L'esempio seguente restituisce a`true`, anche se la prima espressione è. `false`

```
if:
  or:
    - stringEquals: 'test_string'
      value: 'test_string_not_equal'
    - numberEquals: 1
      value: 1
```

**Modificatore condizionale: no**  
Il modificatore `not` condizionale annulla le istruzioni condizionali che sono figlie del ramo.

L'esempio seguente restituisce `true` quando il `not` modificatore annulla l'istruzione condizionale. `stringEquals`

```
if:
  not:
    - stringEquals: 'test_string'
      value: 'test_string_not_equal'
```

**Istruzione condizionale: booleanEquals**  
L'operatore di `booleanEquals` confronto confronta i valori booleani e restituisce true se i valori booleani corrispondono esattamente.

L'esempio seguente determina se è abilitato. `collectImageScanFindings`

```
if:
  - booleanEquals: true
    value: '$.imagebuilder.collectImageScanFindings'
```

**Dichiarazione condizionale: stringEquals**  
L'operatore di `stringEquals` confronto confronta due stringhe e restituisce true se le stringhe corrispondono esattamente. Se uno dei due valori non è una stringa, Image Builder lo converte in una stringa prima del confronto.

L'esempio seguente confronta la variabile di sistema della piattaforma per determinare se il flusso di lavoro è in esecuzione su una piattaforma Linux.

```
if:
  - stringEquals: 'Linux'
    value: '$.imagebuilder.Platform'
```

**Dichiarazione condizionale: numberEquals**  
L'operatore di `numberEquals` confronto confronta due numeri e restituisce true se i numeri sono uguali. I numeri da confrontare devono avere uno dei seguenti formati.
+ Numero intero
+ Float
+ Una stringa che corrisponde al seguente schema regex:`^-?[0-9]+(\.)?[0-9]+$`.

Il seguente esempio confronta tutti con. `true`

```
if:
  # Value provider as a number
  numberEquals: 1
  value: '1'
  
  # Comparison value provided as a string
  numberEquals: '1'
  value: 1
  
  # Value provided as a string
  numberEquals: 1
  value: '1'
  
  # Floats are supported
  numberEquals: 5.0
  value: 5.0
  
  # Negative values are supported
  numberEquals: -1
  value: -1
```