Uso de variables en su documento de componentes personalizados - EC2 Image Builder

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, A-Z y 0-9), 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

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

value

Valor de la constante.

type

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

Parámetros

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, A-Z y 0-9), 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

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

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 estar entre {{ MyParameter }} corchetes dobles.

  • 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

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:

{ "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 de 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

En el siguiente ejemplo, se 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) }}"