View a markdown version of this page

Uso de variables en su documento de componentes personalizados - Generador de Imágenes de EC2

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de variables en su documento de componentes personalizados

Las variables proporcionan una forma de etiquetar los datos con nombres significativos que se pueden usar en toda la aplicación. Puedes definir variables personalizadas con formatos sencillos y legibles para flujos de trabajo complejos y hacer referencia a ellas en el documento del componente de la aplicación YAML de un TOE de AWS componente.

En esta sección, se proporciona información que te ayudará a definir las variables de tu TOE de AWS componente en el documento de componentes de la aplicación YAML, incluida la sintaxis, las restricciones de nombres y algunos ejemplos.

Constantes

Las constantes son variables inmutables que no se pueden modificar ni anular una vez definidas. Las constantes se pueden definir mediante los valores de la constants sección de un TOE de AWS documento.

Reglas de nomenclatura de constantes
  • El nombre debe tener entre 3 y 128 caracteres de extensión.

  • El nombre solo puede contener caracteres alfanuméricos (a-z, 0-9) A-Z, guiones (-) o guiones bajos (_).

  • El nombre debe ser único dentro del documento.

  • El nombre debe estar especificado como una cadena YAML.

Sintaxis

constants: - <name>: type: <constant type> value: <constant value>
Nombre de la clave Obligatorio Descripción

name

Sí

Nombre de la constante. Debe ser único para el documento (no debe coincidir con ningún otro nombre de parámetro o constante).

value

Sí Valor de la constante.

type

Sí Tipo de la constante. El tipo admitido es string.
Valores constantes de referencia en un documento

Puede hacer referencia a las constantes en entradas escalonadas o en bucle dentro de su documento YAML, de la siguiente manera:

  • Las referencias constantes distinguen mayúsculas y minúsculas y el nombre debe coincidir exactamente.

  • El nombre debe ir entre corchetes dobles. {{ MyConstant }}

  • Se permiten espacios dentro de las llaves y se recortan automáticamente. Por ejemplo, todas las referencias siguientes son válidas:

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

  • La referencia del documento YAML debe especificarse como una cadena (entre comillas simples o dobles).

    Por ejemplo: - {{ MyConstant }} no es válido, ya que no se identifica como una cadena.

    Sin embargo, las siguientes referencias son válidas: - '{{ MyConstant }}' y - "{{ MyConstant }}".

Ejemplos

Constante referenciada en las entradas escalonadas

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'

Constante referenciada en las entradas de bucle

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

Los parámetros son variables mutables, con ajustes que la aplicación que realiza la llamada puede proporcionar en el tiempo de ejecución. Puede definir los parámetros en la sección Parameters del documento YAML.

Reglas para nombres de parámetros
  • El nombre debe tener entre 3 y 128 caracteres de extensión.

  • El nombre solo puede contener caracteres alfanuméricos (a-z, 0-9) A-Z, guiones (-) o guiones bajos (_).

  • El nombre debe ser único dentro del documento.

  • El nombre debe estar especificado como una cadena YAML.

Sintaxis

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

Nombre de la clave

Obligatorio

Descripción

name

Sí

El nombre del parámetro. Debe ser único para el documento (no debe coincidir con ningún otro nombre de parámetro o constante).

type

Sí

El tipo de datos del parámetro. Los tipos admitidos incluyen: string.

default

No

El valor predeterminado para el parámetro.

description

No

Describe el parámetro.

Valores de parámetros de referencia en un documento

Puede hacer referencia a los parámetros en entradas escalonadas o en bucle dentro de su documento YAML, de la siguiente manera:

  • Las referencias de parámetros distinguen mayúsculas y minúsculas y el nombre debe coincidir exactamente.

  • El nombre debe ir entre corchetes dobles. {{ MyParameter }}

  • Se permiten espacios dentro de las llaves y se recortan automáticamente. Por ejemplo, todas las referencias siguientes son válidas:

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

  • La referencia del documento YAML debe especificarse como una cadena (entre comillas simples o dobles).

    Por ejemplo: - {{ MyParameter }} no es válido, ya que no se identifica como una cadena.

    Sin embargo, las siguientes referencias son válidas: - '{{ MyParameter }}' y - "{{ MyParameter }}".

Ejemplos

En los siguientes ejemplos, se muestra cómo utilizar los parámetros del documento YAML:

  • Consulte un parámetro en las entradas escalonadas:

    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'
  • Consulte un parámetro en las entradas de bucle:

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

Anulación de los parámetros en tiempo de ejecución

Puede utilizar la --parameters opción AWS CLI con un par clave-valor para establecer el valor de un parámetro en tiempo de ejecución.

  • Especifique el par clave-valor del parámetro como nombre y valor, separados por un signo igual (<name>=<value>).

  • Varios parámetros deben estar separados por una coma.

  • Se ignoran los nombres de los parámetros que no se encuentran en el documento de componentes de YAML.

  • Tanto el nombre como el valor del parámetro son obligatorios.

importante

Los parámetros del componente son valores de texto sin formato y se registran en AWS CloudTrail. Le recomendamos que utilice AWS Secrets Manager nuestro almacén de AWS Systems Manager parámetros para almacenar sus secretos. Para obtener más información sobre Secrets Manager, consulte ¿Qué es Secrets Manager? en la Guía del usuario de AWS Secrets Manager . Para obtener más información acerca del almacén de parámetros de AWS Systems Manager , consulte Almacén de parámetros de AWS Systems Manager en la Guía del usuario de AWS Systems Manager .

Sintaxis

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

Opción de la CLI

Obligatorio

Description (Descripción)

--parámetros name =value,...

No

Esta opción toma una lista de pares clave-valor, con el nombre del parámetro como clave.

Ejemplos

En los siguientes ejemplos, se muestra cómo utilizar los parámetros del documento YAML:

  • El par clave-valor del parámetro especificado en esta opción --parameter no es válido:

    --parameters ntp-server=
  • Establezca un par clave-valor de un parámetro con la opción --parameter en el AWS CLI:

    --parameters ntp-server=ntp-server-windows-qe.us-east1.amazon.com
  • Establezca varios pares clave-valor de parámetros con la opción --parameter en el AWS CLI:

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

Utilice los parámetros del almacén de parámetros de Systems Manager

Puede hacer referencia a los AWS Systems Manager parámetros del almacén de parámetros (parámetros SSM) en los documentos de sus componentes añadiendo el prefijo a las variables. aws:ssm Por ejemplo:

{{ aws:ssm:/my/param }}se resuelve en el valor del parámetro SSM. /my/param

Esta función admite los siguientes tipos de parámetros de SSM:

  • Cadena: se asigna al tipo de TOE de AWS cadena.

  • StringList — Se asigna al TOE de AWS stringList tipo.

  • SecureString — Se asigna al tipo de TOE de AWS cadena.

Para obtener más información sobre el almacén de parámetros, consulte el almacén de AWS Systems Manager parámetros en la Guía del AWS Systems Manager usuario.

También puede hacer referencia a AWS Secrets Manager los secretos mediante un parámetro SecureString SSM. Por ejemplo: {{ aws:ssm:/aws/reference/secretsmanager/test/test-secret }}. Para obtener más información, consulte Hacer referencia a AWS Secrets Manager los secretos de los parámetros del almacén de parámetros.

importante

Image Builder excluye la resolución de SecureString parámetros de sus registros. Sin embargo, también es responsable de garantizar que la información confidencial no se registre mediante los comandos incluidos en el documento del componente. Por ejemplo, si utiliza el echo comando con una cadena segura, el comando escribirá un valor de texto simple en el registro.

Permisos de IAM necesarios

Para usar los parámetros de Systems Manager en sus componentes, su rol de instancia debe tener el ssm:GetParameter permiso para el ARN del recurso de parámetros. Por ejemplo:

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

Para acceder a los valores cifrados, también necesitarás los siguientes permisos:

  • Agregue kms:Decrypt SecureString parámetros o AWS Secrets Manager valores cifrados con un administrador por el cliente AWS KMS key.

  • secretsmanager:GetSecretValueAñádelo si haces referencia a un secreto de Secrets Manager.

Haga referencia a un parámetro SSM en un documento de componentes

El siguiente ejemplo muestra cómo hacer referencia a un parámetro del almacén de parámetros de Systems Manager de los parámetros de Systems Manager de 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 }}."

Resolución dinámica de variables de tiempo de ejecución para los parámetros de SSM

AWSTOE proporciona la siguiente función integrada que puede utilizar en las referencias de variables para manipular o transformar valores en tiempo de ejecución.

función de resolución

La resolve función resuelve una referencia de variable dentro de otra referencia de variable, lo que permite hacer referencias dinámicas a nombres de variables. Esto resulta útil cuando se trabaja con parámetros de SSM, en los que parte de la ruta del parámetro puede ser variable y transferirse como parámetro del documento.

La resolve función solo admite la resolución dinámica de la parte del nombre de un parámetro SSM.

Sintaxis

El dynamic_variable ejemplo siguiente representa el nombre de un parámetro SSM y debe ser uno de los siguientes:

  • Una referencia de parámetro SSM (por ejemplo,) aws:ssm:/my/param

  • Una referencia de parámetros de un documento de componentes (por ejemplo,parameter-name)

{{ aws:ssm:resolve(dynamic_variable) }}
Ejemplo: resolver un parámetro SSM en tiempo de ejecución

El siguiente ejemplo muestra cómo utilizar la resolve función en un documento de componentes de 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) }}"

Utilización de variables de entorno

TOE de AWS puede resolver las variables de entorno del sistema operativo que están configuradas en la instancia de compilación o prueba. Para hacer referencia a una variable de entorno, anteponga el nombre de la variable conenv:. Por ejemplo, se {{ env:MY_VAR }} resuelve con el valor de la variable de MY_VAR entorno de la instancia.

TOE de AWS coincide exactamente con los nombres de las variables de entorno. Un nombre puede contener cualquier carácter válido para el sistema operativo, incluidos puntos, espacios y paréntesis. Por ejemplo, {{ env:ProgramFiles(x86) }} es una referencia válida en Windows.

El siguiente ejemplo muestra cómo hacer referencia a una variable de entorno en 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 }}."

Variables de entorno que proporciona Image Builder

Cuando Image Builder ejecuta un componente en una instancia de compilación o prueba, establece variables de entorno que describen la compilación de la imagen actual. Los componentes leen estos valores con el prefijo de TOE de AWS env: variable descrito anteriormente en este tema.

Image Builder proporciona las siguientes variables de entorno.

Name

Description (Descripción)

IMAGE_WORKFLOW_EXECUTION_ID

El ID de la ejecución del flujo de trabajo para la creación de la imagen actual.

IMAGE_STEP_EXECUTION_ID

El ID del paso de ejecución del flujo de trabajo en el que se ejecuta el componente.

IMAGE_BUILD_VERSION_ARN

El nombre de recurso de Amazon (ARN) de la versión de compilación de imágenes que crea Image Builder.

IMAGE_PIPELINE_ARN

El ARN de la canalización de imágenes. Este valor es una cadena vacía cuando la compilación no se ejecuta desde una canalización.

IMAGE_PHASE

La fase de creación de la imagen actual: BUILDING durante la fase de creación o TESTING durante la fase de prueba.

Esta etapa es distinta de las fases del documento TOE de AWS componente (buildvalidate, ytest). El IMAGE_PHASE valor nunca toma el nombre de una fase del documento componente.

IMAGE_VERSION

La versión semántica de la imagen (por ejemplo,2.1.1).

IMAGE_BUILD_VERSION

El número de versión de compilación de la imagen (por ejemplo,1).

El siguiente ejemplo muestra cómo leer las variables de entorno de Image Builder en 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 }}."

Utilice variables de metadatos de instancia (IMDS)

TOE de AWS puede resolver valores del Servicio de metadatos de instancias (IMDS) de Amazon EC2 en la instancia de compilación o prueba. Para hacer referencia a un valor de metadatos, añada el prefijo a la ruta de metadatos. aws:imds: La ruta es relativa a la meta-data/ categoría de metadatos de la instancia. Por ejemplo, se {{ aws:imds:instance-id }} resuelve en el ID de la instancia. La referencia se {{ aws:imds:placement/region }} resuelve en Región de AWS.

Rutas de metadatos no compatibles

TOE de AWS no admite las rutas de identity-credentials/ metadatos iam/ y. Estas rutas devuelven datos de credenciales confidenciales. TOE de AWS rechaza las referencias a ellas cuando valida el documento componente.

Para obtener más información sobre los metadatos de las instancias, consulte Usar los metadatos de las instancias para administrar la instancia de EC2 en la Guía del usuario de Amazon EC2.

El siguiente ejemplo muestra cómo hacer referencia a un valor de IMDS en 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 }}."

Utilice variables de contexto

TOE de AWS proporciona variables de contexto que describen la ejecución y la instancia actuales. Para hacer referencia a una variable de contexto, anteponga la clave concontext:. Por ejemplo, se {{ context:accountId }} resuelve con el ID de la AWS cuenta.

TOE de AWS proporciona las siguientes variables de contexto.

Key

Description (Descripción)

executionId

El ID de la TOE de AWS ejecución actual.

accountId

El ID de la AWS cuenta en la que se ejecuta la instancia.

region

El lugar en el Región de AWS que se ejecuta la instancia.

osPlatform

La plataforma del sistema operativo de la instancia (por ejemplo, linux owindows).

osName

El nombre del sistema operativo (por ejemplo, Amazon Linux oUbuntu). En Linux, TOE de AWS lee este valor de/etc/os-release.

osVersion

La versión del sistema operativo (por ejemplo,2023). En Linux, TOE de AWS lee este valor de/etc/os-release. En Windows y macOS, este valor es una cadena vacía.

date

La fecha actual en UTC, en YYYY-MM-DD formato (por ejemplo,2026-06-15).

dateTime

La fecha y la hora actuales en UTC, en formato RFC 3339 (por ejemplo,2026-06-15T10:30:00Z).

uuid

Un UUID de la versión 4 generado aleatoriamente.

hostname

El nombre de host de la instancia.

phase

El nombre de la fase que se está ejecutando actualmente.

step

El nombre del paso que se está ejecutando actualmente.

nota

Para obtener el ID de la instancia, usa la variable IMDS {{ aws:imds:instance-id }} en lugar de una variable de contexto.

En el siguiente ejemplo, se muestra cómo hacer referencia a las variables de contexto de 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 }}."