View a markdown version of this page

Uso de variables dinámicas en el documento de flujos de trabajo - 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 dinámicas en el documento de flujos de trabajo

Puede utilizar variables dinámicas en los documentos de flujos de trabajo para representar valores que varían en tiempo de ejecución para el proceso de creación de imágenes. La interpolación de cadenas para variables dinámicas te permite incrustar expresiones de JSONPath en contenido estructurado, como cadenas JSON. Esto es especialmente útil cuando necesitas pasar valores de tiempo de ejecución dentro de cargas útiles complejas a acciones escalonadas como o. ExecuteStateMachine WaitForAction

Para usar la interpolación de cadenas para variables dinámicas, coloca las expresiones de JSONPath entre corchetes dobles dentro del contenido de la cadena. "{{...}}" Solo las expresiones de JSONPath envueltas entre corchetes dobles se procesan como variables. Todas las expresiones de JSONPath que no estén entre corchetes dobles se tratan como contenido de cadena literal.

Sintaxis de variables de flujo de trabajo dinámico de JSONPath

$.<document structure>.[<step name>.]<variable name>

Los valores de las variables dinámicas se representan como selectores JSONPath con nodos estructurales que identifican de forma exclusiva la variable de destino. El primer nodo después de la raíz ($) hace referencia a la estructura del documento de flujos de trabajo; por ejemplo, stepOutputs o, en el caso de las variables del sistema de Generador de imágenes, imageBuilder. En la siguiente lista se incluyen los nodos de estructura de documentos de flujos de trabajo de JSONPath admitidos.

Nodos de estructura de documentos
  • parameters: parámetros del flujo de trabajo

  • stepOutputs: salidas de un paso del mismo documento de flujos de trabajo

  • workflowOutputs: salidas de un documento de flujos de trabajo que ya se ha ejecutado

  • imagebuilder: variables del sistema de Generador de imágenes

Los nodos parameters y stepOutputs de estructura de documentos incluyen un nodo opcional para el nombre del paso. Esto ayuda a garantizar que los nombres de las variables sean únicos en todos los pasos.

El último nodo de JSONPath es el nombre de la variable de destino; por ejemplo, instanceId.

Cada paso puede hacer referencia a la salida de cualquier acción de paso anterior con estas variables dinámicas JSONPath. Esto también se conoce como encadenamiento o referencia. Para hacer referencia a la salida de una acción de paso anterior, puede utilizar la siguiente variable dinámica.

$.stepOutputs.step-name.output-name
importante

Cuando un parámetro de entrada hace referencia a una variable dinámica, el indicador de encadenamiento (.$) debe adjuntarse al final del nombre del parámetro.

Ejemplo 1: indicador de encadenamiento de parámetros de entrada

El siguiente ejemplo muestra un parámetro de entrada que utiliza la interpolación de cadenas para resolver una variable dinámica en el valor del parámetro en tiempo de ejecución.

- name: ApplyTestComponents action: ExecuteComponents onFailure: Abort inputs: instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId"

Ejemplo 2: interpolación de cadenas en variables dinámicas

El siguiente ejemplo demuestra cómo las variables dinámicas utilizan la interpolación de cadenas para determinar los valores en tiempo de ejecución.

- name: ValidateImageConfiguration action: ExecuteStateMachine inputs: stateMachineArn: arn:aws:states:us-east-1:111122223333:stateMachine:ImageValidation input: | { "imageId": "{{ $.stepOutputs.CreateImageFromInstance.imageId }}", "region": "us-east-1", "buildDate": "{{ $.imagebuilder.dateTime }}", "instanceType": "{{ $.stepOutputs.LaunchStep.instanceType }}" }

En este ejemplo, las expresiones de JSONPath envueltas entre corchetes dobles se resuelven en tiempo de ejecución:

  • {{ $.stepOutputs.CreateImageFromInstance.imageId }}- Se resuelve con el ID de imagen real del paso CreateImageFromInstance

  • {{ $.imagebuilder.dateTime }}- Se resuelve con la marca de tiempo de compilación actual. Consulte Uso de variables del sistema de Generador de imágenes para obtener una lista de las variables del sistema de Image Builder que puede usar.

  • {{ $.stepOutputs.LaunchStep.instanceType }}- Se resuelve según el tipo de instancia utilizado en LaunchStep

Las cadenas literales, como, "region": "us-east-1" permanecen inalteradas.

nota

La interpolación de cadenas funciona con cualquier contenido de cadena del documento de flujo de trabajo, incluidas las cadenas de líneas múltiples que utilizan el operador YAML pipe (). | El requisito del corchete ondulado actúa como un mecanismo de escape para distinguir claramente entre las variables de JSONPath y el contenido de texto literal.

Uso de variables del sistema de Generador de imágenes

Image Builder proporciona las siguientes variables de sistema que puede usar en su documento de flujo de trabajo. Estos son valores de solo lectura que Image Builder rellena durante el tiempo de ejecución. Se hace referencia a una variable del sistema con el nodo de estructura del imagebuilder documento, por ejemplo. $.imagebuilder.platform

Nombre de variable

Description (Descripción)

Tipo

Ejemplo de valor

nube WatchLogGroup

El nombre del grupo de CloudWatch registros para los registros de salida.

Formato: /aws/imagebuilder/<recipe-name>

Cadena

/aws/imagebuilder/sampleImageRecipe

nube WatchLogStream

El nombre de la secuencia de CloudWatch registros para los registros de salida.

Cadena

1.0.0/1

recopilar ImageMetadata

Configuración que indica a Generador de imágenes si debe recopilar metadatos de la instancia.

Booleano

true | false

coleccionar ImageScanFindings

Valor actual de la configuración que permite a Generador de imágenes recopilar los resultados del análisis de imágenes.

Booleano

true | false

imagen BuildNumber

Número de versión de creación de la imagen.

Entero

1

imageId

ID de AMI de la imagen base.

Cadena

ami-1234567890abcdef1

imageName

El nombre de la imagen.

Cadena

sampleImage

imageType

Tipo de salida de la imagen.

Cadena

AMI | Docker

imagen VersionNumber

Número de versión de la imagen.

Cadena

1.0.0

instancia ProfileName

Nombre del rol de perfil de instancia que Generador de imágenes utiliza para lanzar instancias de creación y prueba.

Cadena

SampleImageBuilderInstanceProfileRole

platform

Plataforma del sistema operativo de la imagen que se crea.

Cadena

Linux | Windows | MacOS

s3Logs

Objeto JSON que contiene la configuración de los registros de S3 que escribe Generador de imágenes.

Objeto JSON

{'S3logs': {'s3 BucketName ':' ', 's3sample-bucket': KeyPrefix ''}} ib-logs

securityGroups

ID de los grupos de seguridad que se aplican a las instancias de creación y prueba.

Lista [cadena]

[sg-1234567890abcdef1, sg-11112222333344445]

sourceImageARN

Nombre de recurso de Amazon (ARN) del recurso de imagen de Generador de imágenes que el flujo de trabajo utiliza para las etapas de creación y prueba.

Cadena

arn:aws:imagebuilder: ::image//us-east-1111122223333sampleImage1.0.0/1

subnetId

ID de la subred en la que se lanzan las instancias de creación y prueba.

Cadena

subnet-1234567890abcdef1

terminar InstanceOnFailure

Valor actual de la configuración que indica a Generador de imágenes que termine la instancia en caso de error o que la conserve para la solución de problemas.

Booleano

true | false

workflowPhase

Etapa actual que se ejecuta para la ejecución del flujo de trabajo.

Cadena

Build | Test

workingDirectory

Ruta al directorio de trabajo.

Cadena

/tmp