View a markdown version of this page

Usa le variabili nel tuo documento componente personalizzato - 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à.

Usa le variabili nel tuo documento componente personalizzato

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

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

Costanti

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

Regole per i nomi delle costanti
  • La lunghezza del nome deve essere compresa tra 3 e 128 caratteri.

  • Il nome può contenere solo caratteri alfanumerici (a-z, 0-9) A-Z, trattini (-) o caratteri di sottolineatura (_).

  • Il nome deve essere univoco all'interno del documento.

  • Il nome deve essere specificato come stringa YAML.

Sintassi

constants: - <name>: type: <constant type> value: <constant value>
Nome chiave Richiesto Descrizione

name

Sì

Nome della costante. Deve essere univoco per il documento (non deve essere uguale a nessun altro nome di parametro o costante).

value

Sì Valore della costante.

type

Sì Tipo di costante. Il tipo supportato èstring.
Valori costanti di riferimento in un documento

Puoi fare riferimento alle costanti negli input step o loop all'interno del tuo documento YAML, come segue:

  • I riferimenti alle costanti fanno distinzione tra maiuscole e minuscole e il nome deve corrispondere esattamente.

  • Il nome deve essere racchiuso tra parentesi doppie arricciate. {{ MyConstant }}

  • Gli spazi all'interno delle parentesi arricciate sono consentiti e vengono tagliati automaticamente. Ad esempio, tutti i seguenti riferimenti sono validi:

    {{ MyConstant }}, {{ MyConstant}}, {{MyConstant }}, {{MyConstant}}

  • Il riferimento nel documento YAML deve essere specificato come stringa (racchiusa tra virgolette singole o doppie).

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

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

Esempi

Costante a cui si fa riferimento negli ingressi Step

name: Download AWS CLI version 2 schemaVersion: 1.0 constants: - Source: type: string value: https://awscli.amazonaws.com/AWSCLIV2.msi phases: - name: build steps: - name: Download action: WebDownload inputs: - source: '{{ Source }}' destination: 'C:\Windows\Temp\AWSCLIV2.msi'

Costante referenziata negli ingressi in loop

name: PingHosts schemaVersion: 1.0 constants: - Hosts: type: string value: 127.0.0.1,amazon.com phases: - name: build steps: - name: Ping action: ExecuteBash loop: forEach: list: '{{ Hosts }}' delimiter: ',' inputs: commands: - ping -c 4 {{ loop.value }}

Parameters

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

Regole per i nomi dei parametri
  • La lunghezza del nome deve essere compresa tra 3 e 128 caratteri.

  • Il nome può contenere solo caratteri alfanumerici (a-z, 0-9) A-Z, trattini (-) o caratteri di sottolineatura (_).

  • Il nome deve essere univoco all'interno del documento.

  • Il nome deve essere specificato come stringa YAML.

Sintassi

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

Nome chiave

Richiesto

Descrizione

name

Sì

Nome del parametro. Deve essere univoco per il documento (non deve essere uguale a nessun altro nome di parametro o costante).

type

Sì

Il tipo di dati del parametro. I tipi supportati includono:string.

default

No

Il valore predefinito per il parametro.

description

No

Descrive il parametro.

Valori dei parametri di riferimento in un documento

Puoi fare riferimento ai parametri negli input step o loop all'interno del tuo documento YAML, come segue:

  • I riferimenti ai parametri fanno distinzione tra maiuscole e minuscole e il nome deve corrispondere esattamente.

  • Il nome deve essere racchiuso tra parentesi graffe doppie. {{ MyParameter }}

  • Gli spazi all'interno delle parentesi arricciate sono consentiti e vengono tagliati automaticamente. Ad esempio, tutti i seguenti riferimenti sono validi:

    {{ MyParameter }}, {{ MyParameter}}, {{MyParameter }}, {{MyParameter}}

  • Il riferimento nel documento YAML deve essere specificato come stringa (racchiusa tra virgolette singole o doppie).

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

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

Esempi

Gli esempi seguenti mostrano come utilizzare i parametri nel documento YAML:

  • Fate riferimento a un parametro in Step Inputs:

    name: Download AWS CLI version 2 schemaVersion: 1.0 parameters: - Source: type: string default: 'https://awscli.amazonaws.com/AWSCLIV2.msi' description: The AWS CLI installer source URL. phases: - name: build steps: - name: Download action: WebDownload inputs: - source: '{{ Source }}' destination: 'C:\Windows\Temp\AWSCLIV2.msi'
  • Fate riferimento a un parametro negli ingressi del loop:

    name: PingHosts schemaVersion: 1.0 parameters: - Hosts: type: string default: 127.0.0.1,amazon.com description: A comma separated list of hosts to ping. phases: - name: build steps: - name: Ping action: ExecuteBash loop: forEach: list: '{{ Hosts }}' delimiter: ',' inputs: commands: - ping -c 4 {{ loop.value }}

Sostituisci i parametri in fase di esecuzione

È possibile utilizzare l'--parametersopzione AWS CLI con una coppia chiave-valore per impostare il valore di un parametro in fase di esecuzione.

  • <name><value>Specificate la coppia chiave-valore del parametro come nome e valore, separati da un segno di uguale (=).

  • Più parametri devono essere separati da una virgola.

  • I nomi dei parametri che non si trovano nel documento del componente YAML vengono ignorati.

  • Il nome e il valore del parametro sono entrambi obbligatori.

Importante

I parametri dei componenti sono valori di testo semplice e vengono registrati. AWS CloudTrail Ti consigliamo di utilizzare AWS Secrets Manager o AWS Systems Manager Parameter Store per archiviare i tuoi segreti. Per ulteriori informazioni su Secrets Manager, vedi Cos'è Secrets Manager? nella Guida AWS Secrets Manager per l'utente. Per ulteriori informazioni su AWS Systems Manager Parameter Store, vedere AWS Systems Manager Parameter Store nella Guida AWS Systems Manager per l'utente.

Sintassi

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

Opzione CLI

Richiesto

Description

--parameters name =value,...

No

Questa opzione accetta l'elenco delle coppie chiave-valore, con il nome del parametro come chiave.

Esempi

Gli esempi seguenti mostrano come utilizzare i parametri nel documento YAML:

  • La coppia chiave-valore del parametro specificata in questa --parameter opzione non è valida:

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

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

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

Usa i parametri del Parameter Store di Systems Manager

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

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

Questa funzionalità supporta i seguenti tipi di parametri SSM:

  • Stringa: esegue il mapping al tipo di AWSTOE stringa.

  • StringList — Esegue il mapping al AWSTOE stringList tipo.

  • SecureString — Esegue il mapping al tipo di AWSTOE stringa.

Per ulteriori informazioni su Parameter Store, vedere AWS Systems Manager Parameter Store nella Guida AWS Systems Manager per l'utente.

Puoi anche fare riferimento ai AWS Secrets Manager segreti utilizzando un parametro SecureString SSM. Ad esempio: {{ aws:ssm:/aws/reference/secretsmanager/test/test-secret }}. Per ulteriori informazioni, vedere Riferimento ai AWS Secrets Manager segreti dai parametri del Parameter Store.

Importante

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

Autorizzazioni IAM richieste

Per utilizzare i parametri Systems Manager nei componenti, il ruolo dell'istanza deve disporre dell'ssm:GetParameterautorizzazione per la risorsa parametrica ARN. Ad esempio:

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

Per accedere ai valori crittografati, sono inoltre necessarie le seguenti autorizzazioni:

  • Aggiungi kms:Decrypt per SecureString parametri o AWS Secrets Manager valori crittografati con un servizio gestito AWS KMS key dal cliente.

  • Aggiungi secretsmanager:GetSecretValue se fai riferimento a un segreto di Secrets Manager.

Fai riferimento a un parametro SSM in un documento componente

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

name: UseSSMParameterVariable description: This is a sample component document that prints out the value of an SSM Parameter. Never do this for a SecureString parameter. schemaVersion: 1.0 phases: - name: verify steps: - name: EchoParameterValue action: ExecuteBash inputs: commands: - echo "Log SSM parameter name: /my/test/param, value {{ aws:ssm:/my/test/param }}."

Risoluzione variabile dinamica di runtime per i parametri SSM

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

funzione di risoluzione

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

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

Sintassi

L'dynamic_variableesempio seguente rappresenta il nome di un parametro SSM e deve essere uno dei seguenti:

  • Un riferimento a un parametro SSM (ad esempio,) aws:ssm:/my/param

  • Un riferimento a un parametro del documento componente (ad esempio,parameter-name)

{{ aws:ssm:resolve(dynamic_variable) }}
Esempio: risolvi un parametro SSM in fase di esecuzione

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

name: SsmParameterTest description: This component verifies an SSM parameter variable reference with the echo command. schemaVersion: 1.0 parameters: - parameter-name: type: string description: "test" phases: - name: validate steps: - name: PrintDynamicVariable action: ExecuteBash inputs: commands: - echo "{{ aws:ssm:resolve(parameter-name) }}"

Usa le variabili di ambiente

AWSTOE può risolvere le variabili di ambiente del sistema operativo impostate sull'istanza di build o test. Per fare riferimento a una variabile di ambiente, aggiungete al nome della variabile il prefisso. env: Ad esempio, viene {{ env:MY_VAR }} risolto nel valore della variabile di MY_VAR ambiente sull'istanza.

AWSTOE corrisponde esattamente ai nomi delle variabili di ambiente. Un nome può contenere qualsiasi carattere valido per il sistema operativo, inclusi punti, spazi e parentesi. Ad esempio, {{ env:ProgramFiles(x86) }} è un riferimento valido in Windows.

L'esempio seguente mostra come fare riferimento a una variabile di ambiente in un componente:

name: UseEnvironmentVariable description: This sample component prints out the value of an environment variable. schemaVersion: 1.0 phases: - name: build steps: - name: EchoEnvironmentVariable action: ExecuteBash inputs: commands: - echo "The value of SOME_VAR is {{ env:SOME_VAR }}."

Variabili di ambiente fornite da Image Builder

Quando Image Builder esegue un componente su un'istanza di build o test, imposta variabili di ambiente che descrivono la build corrente dell'immagine. I componenti leggono questi valori con il prefisso AWSTOE env: variabile descritto in precedenza in questo argomento.

Image Builder fornisce le seguenti variabili di ambiente.

Nome

Description

IMAGE_WORKFLOW_EXECUTION_ID

L'ID dell'esecuzione del flusso di lavoro per la build corrente dell'immagine.

IMAGE_STEP_EXECUTION_ID

L'ID dell'esecuzione della fase del flusso di lavoro che esegue il componente.

IMAGE_BUILD_VERSION_ARN

L'Amazon Resource Name (ARN) della versione di build dell'immagine creata da Image Builder.

IMAGE_PIPELINE_ARN

L'ARN della pipeline di immagini. Questo valore è una stringa vuota quando la build non viene eseguita da una pipeline.

IMAGE_PHASE

La fase corrente di creazione dell'immagine: BUILDING durante la fase di compilazione o TESTING durante la fase di test.

Questa fase è distinta dalle fasi del documento AWSTOE componente (buildvalidate, etest). Il IMAGE_PHASE valore non assume mai il nome di una fase del documento componente.

IMAGE_VERSION

La versione semantica dell'immagine (ad esempio,2.1.1).

IMAGE_BUILD_VERSION

Il numero di versione di build dell'immagine (ad esempio,1).

L'esempio seguente mostra come leggere le variabili di ambiente Image Builder in un componente:

name: UseImageBuilderEnvironmentVariables description: This sample component prints out Image Builder environment variable values. schemaVersion: 1.0 phases: - name: build steps: - name: EchoImageBuildValues action: ExecuteBash inputs: commands: - echo "Image phase: {{ env:IMAGE_PHASE }}." - echo "Image build version ARN: {{ env:IMAGE_BUILD_VERSION_ARN }}."

Utilizza le variabili IMDS (Instance Metadata)

AWSTOE può risolvere i valori dell'Amazon EC2 Instance Metadata Service (IMDS) sull'istanza di build o test. Per fare riferimento a un valore di metadati, inserisci il prefisso del percorso dei metadati con. aws:imds: Il percorso è relativo alla categoria di metadati dell'istanza. meta-data/ Ad esempio, si {{ aws:imds:instance-id }} risolve nell'ID dell'istanza. Il riferimento si {{ aws:imds:placement/region }} risolve in. Regione AWS

Percorsi di metadati non supportati

AWSTOE non supporta i percorsi iam/ e dei identity-credentials/ metadati. Questi percorsi restituiscono dati sensibili sulle credenziali. AWSTOE rifiuta i riferimenti ad essi quando convalida il documento componente.

Per ulteriori informazioni sui metadati delle istanze, consulta Use instance metadata to manage your EC2 istance nella Amazon EC2 User Guide.

L'esempio seguente mostra come fare riferimento a un valore IMDS in un componente:

name: UseInstanceMetadataVariable description: This sample component prints out the instance ID from IMDS. schemaVersion: 1.0 phases: - name: build steps: - name: EchoInstanceId action: ExecuteBash inputs: commands: - echo "The instance ID is {{ aws:imds:instance-id }}."

Usa variabili di contesto

AWSTOE fornisce variabili di contesto che descrivono l'esecuzione e l'istanza correnti. Per fare riferimento a una variabile di contesto, aggiungete alla chiave il prefisso. context: Ad esempio, {{ context:accountId }} si risolve nell'ID dell' AWS account.

AWSTOE fornisce le seguenti variabili di contesto.

Chiave

Description

executionId

L'ID dell' AWSTOE esecuzione corrente.

accountId

L'ID dell' AWS account in cui viene eseguita l'istanza.

region

Regione AWS Quello in cui viene eseguita l'istanza.

osPlatform

La piattaforma del sistema operativo dell'istanza (ad esempio, linux owindows).

osName

Il nome del sistema operativo (ad esempio, Amazon Linux oUbuntu). In Linux, AWSTOE legge questo valore da/etc/os-release.

osVersion

La versione del sistema operativo (ad esempio,2023). In Linux, AWSTOE legge questo valore da/etc/os-release. In Windows e macOS, questo valore è una stringa vuota.

date

La data corrente in UTC, nel YYYY-MM-DD formato (ad esempio,2026-06-15).

dateTime

La data e l'ora correnti in UTC, nel formato RFC 3339 (ad esempio,). 2026-06-15T10:30:00Z

uuid

Un UUID versione 4 generato casualmente.

hostname

Il nome host dell'istanza.

phase

Il nome della fase attualmente in esecuzione.

step

Il nome della fase attualmente in esecuzione.

Nota

Per ottenere l'ID dell'istanza, utilizzate la variabile IMDS {{ aws:imds:instance-id }} anziché una variabile di contesto.

L'esempio seguente mostra come fare riferimento alle variabili di contesto in un componente:

name: UseContextVariables description: This sample component prints out context variable values. schemaVersion: 1.0 phases: - name: build steps: - name: EchoContextValues action: ExecuteBash inputs: commands: - echo "Account: {{ context:accountId }}, OS: {{ context:osName }}."