View a markdown version of this page

Creare un documento di workflow YAML - EC2 Image Builder

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

Creare un documento di workflow YAML

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 di 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 workflow YAML

Le sezioni seguenti descrivono la struttura del documento del flusso di lavoro YAML utilizzato da Image Builder per eseguire azioni di creazione, test e distribuzione delle immagini.

Identificazione del documento di workflow

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

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

È possibile definire fino a 25 parametri in un documento di workflow. Ogni valore di parametro può contenere fino a 1.024 caratteri. Un parametro deve utilizzare uno dei quattro tipi di dati supportati:string, integerboolean, ostringList. 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 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:

  • string

  • integer

  • boolean

  • 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 del workflow

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

Nota

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

Nota

Se si imposta waitSeconds una fase, il valore deve essere inferiore atimeoutSeconds. Ogni azione del passo 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 in fasi supportate per il documento del flusso di lavoro

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'ifoperatore.

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

  • Condizioni di ramificazione e modificatori:,,,. if and or not Le condizioni di ramificazione vengono specificate singolarmente su una riga.

  • Operatori di confronto: booleanEqualsnumberEquals,numberGreaterThan,numberGreaterThanEquals,, numberLessThannumberLessThanEquals,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 l'esecuzione dell'azione del passaggio. È 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 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.

Comportamento
  • Abort— Fallisce il passaggio, fallisce il flusso di lavoro e non esegue i passaggi rimanenti dopo il passaggio non riuscito. Se il rollback è abilitato, il rollback inizia con il passaggio non riuscito e continua fino al ripristino di tutti i passaggi che lo consentono.

  • Continue— Fallisce il passaggio, ma continua a eseguire i passaggi rimanenti dopo il passaggio fallito. In questo caso, non è previsto alcun rollback.

Stringa

No

Abort

Abort | Continue

riprova

Configura Image Builder per eseguire nuovamente automaticamente il passaggio in caso di errore. Per ulteriori informazioni, consulta Riprova i passaggi del flusso di lavoro non riusciti.

Dict

No

Nessun tentativo

L'retryattributo contiene i seguenti campi:

  • maxAttempts(obbligatorio): il numero totale di volte che il passaggio può essere eseguito, incluso il primo tentativo. Valori validi: 1—10.

  • backoffSeconds(opzionale) — Il numero di secondi che Image Builder attende prima di iniziare ogni nuovo tentativo. Se non si imposta un valore, Image Builder attende 30 secondi. Valori validi: 0-600.

Rollback abilitato

Configura se il passaggio verrà ripristinato 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 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"

Riprova i passaggi del flusso di lavoro non riusciti

Per impostazione predefinita, ogni passaggio di un flusso di lavoro viene eseguito una sola volta. Per fare in modo che Image Builder esegua nuovamente automaticamente un passaggio in caso di errore, aggiungete l'retryattributo al passaggio. L'retryattributo contiene i seguenti campi.

  • maxAttempts(obbligatorio): il numero totale di volte che il passaggio può essere eseguito, incluso il primo tentativo. Ad esempio, se si imposta su maxAttempts 3 e ogni tentativo fallisce, il passaggio viene eseguito tre volte prima che Image Builder lo contrassegni come fallito. Valori validi: 1—10.

  • backoffSeconds(opzionale) — Il numero di secondi che Image Builder attende prima di iniziare ogni nuovo tentativo. Se non si imposta un valore, Image Builder attende 30 secondi. Per riprovare immediatamente, imposta il valore su. 0 Valori validi: 0-600.

I nuovi tentativi funzionano come segue:

  • Il timeoutSeconds valore del passaggio si applica a ciascun tentativo separatamente. L'orologio di timeout si riavvia quando inizia un nuovo tentativo.

  • Se il passaggio continua a fallire dopo l'ultimo tentativo, si applica il onFailure comportamento del passaggio.

Alcune azioni della fase hanno un comportamento aggiuntivo per quanto riguarda i tentativi di ripetizione:

  • Prima di ripetere un LaunchInstance passaggio, Image Builder termina l'istanza lanciata dal tentativo fallito. Il nuovo tentativo avvia una nuova istanza.

  • Quando riprova un ExecuteComponents passaggio, Image Builder esegue nuovamente i componenti dall'inizio. Non annulla le modifiche che un tentativo fallito ha già apportato all'istanza. Prima di configurare i nuovi tentativi per un passaggio che esegue i componenti, assicurati che i componenti possano essere eseguiti in sicurezza più di una volta.

Per vedere quante volte è stato eseguito un passaggio, utilizza le operazioni GetWorkflowStepExecution o ListWorkflowStepExecutions API. La risposta include i maxAttempts campi attemptNumber e per il passaggio.

Nota

L'retryattributo per una fase del flusso di lavoro è separato dal maxAttempts campo, che riprova un singolo passaggio all'interno di un documento AWSTOE componente. Per ulteriori informazioni, consulta Usa il AWSTOE framework di documenti a componenti per componenti personalizzati.

Esempio

steps: - name: LaunchBuildInstance action: LaunchInstance onFailure: Abort retry: maxAttempts: 3 backoffSeconds: 60 inputs: waitFor: "ssmAgent"

Output dei documenti del flusso di lavoro

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.

È possibile definire fino a 25 output in un documento di workflow. 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 un passaggio dello stesso flusso di lavoro con$.stepOutputs.stepName.field, ma si fa riferimento all'output di un flusso di lavoro precedente utilizzando solo il nome dell'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 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.

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