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 |
|---|---|---|
|
|
Sí |
Nombre de la constante. Debe ser único para el documento (no debe coincidir con ningún otro nombre de parámetro o constante). |
|
Sí | Valor de la constante. |
|
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:
- {{no es válido, ya que no se identifica como una cadena.MyConstant}}Sin embargo, las siguientes referencias son válidas:
- '{{yMyConstant}}'- "{{.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 |
|---|---|---|
|
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). |
|
Sí |
El tipo de datos del parámetro. Los tipos admitidos incluyen: |
|
No |
El valor predeterminado para el parámetro. |
|
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:
- {{no es válido, ya que no se identifica como una cadena.MyParameter}}Sin embargo, las siguientes referencias son válidas:
- '{{yMyParameter}}'- "{{.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
--parametersname1=value1,name2=value2...
Opción de la CLI |
Obligatorio |
Description (Descripción) |
|---|---|---|
--parámetros |
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
--parameterno es válido:--parameters ntp-server= -
Establezca un par clave-valor de un parámetro con la opción
--parameteren 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
--parameteren 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
stringListtipo. -
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:
Para acceder a los valores cifrados, también necesitarás los siguientes permisos:
-
Agregue
kms:DecryptSecureStringpará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: resuelve con el valor de la variable de MY_VAR }}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) |
|---|---|
|
El ID de la ejecución del flujo de trabajo para la creación de la imagen actual. |
|
El ID del paso de ejecución del flujo de trabajo en el que se ejecuta el componente. |
|
El nombre de recurso de Amazon (ARN) de la versión de compilación de imágenes que crea Image Builder. |
|
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. |
|
La fase de creación de la imagen actual: Esta etapa es distinta de las fases del documento TOE de AWS componente ( |
|
La versión semántica de la imagen (por ejemplo, |
|
El número de versión de compilación de la imagen (por ejemplo, |
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) |
|---|---|
|
El ID de la TOE de AWS ejecución actual. |
|
El ID de la AWS cuenta en la que se ejecuta la instancia. |
|
El lugar en el Región de AWS que se ejecuta la instancia. |
|
La plataforma del sistema operativo de la instancia (por ejemplo, |
|
El nombre del sistema operativo (por ejemplo, |
|
La versión del sistema operativo (por ejemplo, |
|
La fecha actual en UTC, en |
|
La fecha y la hora actuales en UTC, en formato RFC 3339 (por ejemplo, |
|
Un UUID de la versión 4 generado aleatoriamente. |
|
El nombre de host de la instancia. |
|
El nombre de la fase que se está ejecutando actualmente. |
|
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 }}."