

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

# Crea un documento di flusso di lavoro 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, test e distribuzione del processo di creazione dell'immagine. Lo stesso formato del documento si applica a tutti e tre i tipi di flusso di lavoro. 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 flusso di lavoro YAML
<a name="workflow-document-structure"></a>

Le sezioni seguenti descrivono la struttura del documento di flusso di lavoro YAML che Image Builder utilizza per eseguire azioni di creazione, test e distribuzione delle immagini.
+ [Identificazione del documento di workflow](#wfdoc-struct-ident)
+ [Parametri di input del documento del workflow](#wfdoc-struct-param)
+ [Fasi del documento di 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.

È possibile definire fino a 25 parametri in un documento di flusso di lavoro. Ogni valore di parametro può contenere fino a 1.024 caratteri. Un parametro deve utilizzare uno dei quattro tipi di dati supportati:`string`, `integer``boolean`, o`stringList`. Se non si specifica un `default` valore per un parametro, è necessario fornire il valore del parametro in fase di esecuzione.


|  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 si include 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 si include il tipo di dati nella definizione del parametro, per impostazione predefinita il tipo di parametro è un valore di stringa richiesto in fase di esecuzione. | Stringa | Sì | Il tipo di dati del parametro deve essere uno dei seguenti:+  `string` <br />+  `integer` <br />+  `boolean` <br />+  `stringList`  | 

**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 di workflow
<a name="wfdoc-struct-step"></a>

Specifica 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 fino ai passaggi precedenti.

Ogni passaggio può fare riferimento all'output di qualsiasi azione precedente. Questa operazione è nota come * concatenamento o riferimento*. Per fare riferimento all'output di un'azione precedente, puoi utilizzare un selettore JSONPath. Ad 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 il passaggio stesso non ha un attributo di output, l'eventuale output di un'azione del passaggio è incluso nel `stepOutput` passaggio.

**Nota**  
Se si imposta `waitSeconds` per un passaggio, il valore deve essere inferiore a`timeoutSeconds`. Ogni azione di fase definisce anche un `timeoutSeconds` valore massimo. Se si imposta un `timeoutSeconds` valore superiore al massimo per l'azione, la convalida ha esito negativo. Per i valori massimi per azione, consulta. [Azioni dettagliate supportate per il documento del flusso di lavoro](wfdoc-step-actions.md)

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`, seguita da una serie di istruzioni condizionali che modificano l'`if`operatore. | Le istruzioni condizionali aggiungono un flusso di punti decisionali di controllo al corpo delle fasi del flusso di lavoro. | Dict | No |  | Image Builder supporta le seguenti istruzioni condizionali come modificatori dell'operatore: `if`+  Condizioni e modificatori di ramificazione:,,,. `if` `and` `or` `not` Le condizioni di ramificazione sono specificate su una riga da sole. <br />+  Operatori di confronto: `booleanEquals``numberEquals`,`numberGreaterThan`,`numberGreaterThanEquals`,, `numberLessThan``numberLessThanEquals`,`stringEquals`.  | 
| 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 eseguire l'azione Step. È possibile specificare i valori chiave come valori statici o con una variabile JSONPath che si risolve nel tipo di dati corretto. | Dict | Sì |  |  | 
| nome | Il nome del passaggio. 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.<br />Può includere caratteri alfanumerici e. `_` Senza spazi. | 
| onFailure | Configura l'azione da intraprendere in caso di fallimento del passaggio, come segue.+  `Abort`— Non supera il passaggio, non supera il flusso di lavoro e non esegue i passaggi rimanenti dopo il passaggio fallito. Se il rollback è abilitato, il rollback inizia dalla fase non riuscita e continua fino al ripristino di tutti i passaggi che lo consentono. <br />+  `Continue`— Non supera il passaggio, ma continua a eseguire i passaggi rimanenti dopo il passaggio non riuscito. In questo caso, non è previsto alcun rollback.  | Stringa | No | `Abort` | `Abort` \| `Continue` | 
| Rollback abilitato | Configura se il passaggio verrà annullato in caso di errore. È possibile utilizzare un valore booleano statico o una variabile JSONPath dinamica che si risolve in un valore booleano. | Boolean | No | `true` | `true` \| `false` \| o una variabile JSONPath che si risolve in true o false.  | 
| timeoutSeconds | Il tempo massimo, in secondi, di esecuzione del passaggio prima di fallire e riprovare, se si applicano 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 | 
| Attendi secondi | Il tempo, in secondi, per il quale l'esecuzione della fase verrà interrotta. | Numero intero | No | 0 | Non può essere superiore a timeoutSeconds dell'azione del passaggio | 

**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 chiave-valore che specifica il nome dell'output e il valore. È possibile utilizzare gli output per esportare dati in fase di esecuzione utilizzabili dai flussi di lavoro successivi. Questa sezione è facoltativa.

È possibile definire fino a 25 output in un documento di flusso di lavoro. Ogni nome di output deve essere univoco in tutti i flussi di lavoro inclusi nella pipeline. Un flusso di lavoro successivo può quindi fare riferimento a un output per nome con. `$.workflowOutputs.{{name}}`

**Nota**  
Si fa riferimento all'output di una fase dello * stesso * flusso di lavoro con`$.stepOutputs.{{stepName}}.{{field}}`, ma si fa riferimento all'output di un * flusso di lavoro * precedente con solo il nome di output (`$.workflowOutputs.{{name}}`) e nessun nome del passaggio.

Ogni output definito include i seguenti attributi.


|  Campo  |  Description  |  Tipo  |  Richiesto  | 
| --- | --- | --- | --- | 
| nome | Il nome dell'output. Il nome deve essere univoco per tutti i flussi di lavoro inclusi 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 in fase. Per ulteriori informazioni, consulta [Utilizzate le variabili dinamiche nel documento del flusso di lavoro](wfdoc-dynamic-vars.md). | Stringa | Sì | 

**Esempio**

Crea un ID dell'immagine di output per il documento del flusso di lavoro con l'output della `createProdImage` fase.

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

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

```
$.workflowOutputs.outputImageId
```