

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.

# Creación de un documento de flujos de trabajo YAML
<a name="image-workflow-create-document"></a>

El documento de definición del formato YAML configura los pasos de entrada, salida y flujo de trabajo para las etapas de creación y prueba del proceso de creación de la imagen. Puede empezar con plantillas que incluyan pasos estandarizados, o bien puede empezar desde cero para definir su propio flujo de trabajo. Tanto si utiliza una plantilla como si empieza desde cero, puede personalizar el flujo de trabajo para adaptarlo a sus necesidades.

## Estructura de un documento de flujos de trabajo YAML
<a name="workflow-document-structure"></a>

El documento de flujos de trabajo YAML que Generador de imágenes utiliza para realizar acciones de creación y prueba de imágenes se estructura de la siguiente manera.
+ [Identificación de documentos de flujo de trabajo](#wfdoc-struct-ident)
+ [Parámetros de entrada de documentos de flujo](#wfdoc-struct-param)
+ [Flujo de documentos](#wfdoc-struct-step)
+ [Resultados de documentos de flujo de trabajo](#wfdoc-struct-output)

### Identificación de documentos de flujo de trabajo
<a name="wfdoc-struct-ident"></a>

Identifica de forma única el flujo de trabajo. En esta sección se pueden incluir los siguientes atributos.


|  Campo  |  Description (Descripción)  |  Tipo  |  Obligatorio/a  | 
| --- | --- | --- | --- | 
|  Nombre  |  Nombre del documento de flujos de trabajo.  |  Cadena  |  No  | 
|  description  |  Descripción del documento.  |  Cadena  |  No  | 
|  schemaVersion  |  Versión del esquema del documento, actualmente 1.0.  |  Cadena  |  Sí  | 

**Ejemplo**

```
---
name: sample-test-image
description: Workflow for a sample image, with extra configuration options exposed through workflow parameters.
schemaVersion: 1.0
```

### Parámetros de entrada de documentos de flujo
<a name="wfdoc-struct-param"></a>

En esta parte del documento de flujos de trabajo se definen los parámetros de entrada que la persona que llama puede especificar. Si no dispone de ningún parámetro, puede omitir esta sección. Si especifica parámetros, cada parámetro puede incluir los siguientes atributos.


|  Campo  |  Description (Descripción)  |  Tipo  |  Obligatorio/a  |  Restricciones  | 
| --- | --- | --- | --- | --- | 
|  name  |  El nombre del parámetro.  |  Cadena  |  Sí  |    | 
|  description  |  Descripción del parámetro.  |  Cadena  |  No  |    | 
|  predeterminado  |  Si no se proporciona ningún valor, el valor predeterminado del parámetro. Si no incluye un valor predeterminado en la definición del parámetro, el valor del parámetro es obligatorio en tiempo de ejecución.  |  Coincide con el tipo de datos del parámetro.  |  No  |    | 
|  type  |  El tipo de datos del parámetro. Si no incluye el tipo de datos en la definición del parámetro, el tipo del parámetro toma como predeterminado un valor de cadena obligatorio en tiempo de ejecución.  |  Cadena  |  Sí  |  El tipo de datos del parámetro debe ser uno de los siguientes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/image-workflow-create-document.html)  | 

**Ejemplo**

Especifique el parámetro en el documento de flujos de trabajo.

```
parameters:
  - name: waitForActionAtEnd
    type: boolean
    default: true
    description: "Wait for an external action at the end of the workflow"
```

Utilice el valor del parámetro en el documento de flujos de trabajo.

```
$.parameters.waitForActionAtEnd
```

### Flujo de documentos
<a name="wfdoc-struct-step"></a>

Especifica hasta 15 acciones de paso para el flujo de trabajo. Los pasos se ejecutan en el orden en que se definen en el documento de flujos de trabajo. En caso de error, se ejecuta una restauración en orden inverso, empezando por el paso en el que se produjo el error y siguiendo por los pasos anteriores.

Cada paso puede hacer referencia a la salida de cualquier acción de paso anterior. Esto se conoce como *encadenamiento o referencia*. Para hacer referencia al resultado de una acción de un paso anterior, puedes usar un JSONPath selector. Por ejemplo:

```
$.stepOutputs.step-name.output-name
```

Para obtener más información, consulte [Uso de variables dinámicas en el documento de flujos de trabajo](wfdoc-dynamic-vars.md).

**nota**  
Aunque el paso en sí no tenga un atributo de salida, todas las salidas de una acción de paso se incluyen en `stepOutput` para el paso.

Cada paso puede incluir los siguientes atributos.


|  Campo  |  Description (Descripción)  |  Tipo  |  Obligatorio/a  |  Predeterminado  |  Restricciones  | 
| --- | --- | --- | --- | --- | --- | 
|  acción  |  Acción de flujo de trabajo que realiza este paso.  |  Cadena  |  Sí  |    |  Debe ser una acción de paso admitida para los documentos de flujos de trabajo de Generador de imágenes.  | 
|  `if`, seguido de un conjunto de instrucciones condicionales que modifican el operador `if`.  |  Las instrucciones condicionales agregan puntos de decisión sobre el flujo de control al cuerpo de los pasos del flujo de trabajo.  |  Dict  |  No  |    |  Generador de imágenes admite las siguientes instrucciones condicionales como modificadores del operador `if`: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/image-workflow-create-document.html)  | 
|  description  |  Descripción del paso.  |  Cadena  |  No  |    |  No se permiten cadenas vacías. Si se incluye, la longitud debe ser de 1 a 1024 caracteres.  | 
|  inputs  |  Contiene los parámetros que debe ejecutar la acción del paso. Puede especificar los valores clave como valores estáticos o con una JSONPath variable que se resuelva en el tipo de datos correcto.  |  Dict  |  Sí  |    |    | 
|  name  |  El nombre del paso. Este nombre debe ser único dentro del documento de flujos de trabajo.  |  Cadena  |  Sí  |    |  Debe tener entre 3 y 128 caracteres de longitud. Puede incluir caracteres alfanuméricos y `_`. Sin espacios.  | 
|  onFailure  |  Configura la acción que se debe realizar si el paso produce un error, de la siguiente manera. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/image-workflow-create-document.html)  |  Cadena  |  No  |  `Abort`  |  `Abort` \$1 `Continue`  | 
|  rollbackEnabled  |  Configura si el paso se restaurará en caso de que se produzca un error. Puede usar un valor booleano estático o una JSONPath variable dinámica que se resuelva en un valor booleano.  |  Booleano  |  No  |  `true`  |  `true` \$1 `false` \$1 o una JSONPath variable que se resuelva como verdadera o falsa.  | 
|  timeoutSeconds  |  Tiempo máximo, en segundos, que se ejecuta el paso antes de producir un error y volver a intentarlo, si se aplican los reintentos.  |  Entero  |  No  |  Depende del valor predeterminado definido para la acción del paso, si corresponde.  |  No puede superar el tiempo de espera máximo de la acción del paso  | 
|  Espere unos segundos  |  El tiempo, en segundos, durante el que se detendrá la ejecución del paso.  |  Entero  |  No  |  0  |  No puede ser superior a TimeoutSeconds de la acción del paso  | 

**Ejemplo**

```
steps:
  - name: LaunchTestInstance
    action: LaunchInstance
    onFailure: Abort
    inputs:
      waitFor: "ssmAgent"

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

  - name: TerminateTestInstance
    action: TerminateInstance
    onFailure: Continue
    inputs:
      instanceId.$: "$.stepOutputs.LaunchTestInstance.instanceId"

  - name: WaitForActionAtEnd
    action: WaitForAction
    if:
      booleanEquals: true
      value: "$.parameters.waitForActionAtEnd"
```

### Resultados de documentos de flujo de trabajo
<a name="wfdoc-struct-output"></a>

Define las salidas del flujo de trabajo. Cada salida es un par de clave-valor que especifica el nombre de la salida y el valor. Puede utilizar las salidas para exportar datos en tiempo de ejecución que puedan utilizar los flujos de trabajo posteriores. Esta sección es opcional.

Cada salida que defina incluye los siguientes atributos.


|  Campo  |  Description (Descripción)  |  Tipo  |  Obligatorio/a  | 
| --- | --- | --- | --- | 
|  Nombre  |  El nombre de la salida. El nombre debe ser único en todos los flujos de trabajo que incluya en la canalización.  |  Cadena  |  Sí  | 
|  valor  |  Valor de la salida. El valor de la cadena puede ser una variable dinámica, como un archivo de salida de una acción de paso. Para obtener más información, consulte [Uso de variables dinámicas en el documento de flujos de trabajo](wfdoc-dynamic-vars.md).  |  Cadena  |  Sí  | 

**Ejemplo**

Cree un ID de imagen de salida para el documento de flujos de trabajo con la salida del paso `createProdImage`.

```
outputs:
  - name: 'outputImageId'
    value: '$.stepOutputs.createProdImage.imageId'
```

Consulte la salida del flujo de trabajo en el siguiente flujo de trabajo.

```
$.workflowOutputs.outputImageId
```

# Acciones de paso admitidas para el documento de flujos de trabajo
<a name="wfdoc-step-actions"></a>

En esta sección se incluyen detalles de las acciones de paso que admite Generador de imágenes.Términos que se usan en esta sección

AMI  
Imagen de máquina de Amazon

ARN  
Nombre de recurso de Amazon

**Topics**
+ [ApplyImageConfigurations](#wfdoc-step-action-apply-image-configurations)
+ [BootstrapInstanceForContainer](#wfdoc-step-action-bootstrap-container)
+ [CollectImageMetadata](#wfdoc-step-action-collect-image-metadata)
+ [CollectImageScanFindings](#wfdoc-step-action-collect-findings)
+ [CreateImage](#wfdoc-step-action-create-img-from-inst)
+ [DistributeImage](#wfdoc-step-action-distribute-image)
+ [ExecuteComponents](#wfdoc-step-action-exec-components)
+ [ExecuteStateMachine](#wfdoc-step-action-exec-state-machine)
+ [LaunchInstance](#wfdoc-step-action-launch-instance)
+ [ModifyImageAttributes](#wfdoc-step-action-modify-image-attributes)
+ [RegisterImage](#wfdoc-step-action-register-image)
+ [RunCommand](#wfdoc-step-action-run-command)
+ [RunSysPrep](#wfdoc-step-action-run-sysprep)
+ [SanitizeInstance](#wfdoc-step-action-sanitize-instance)
+ [TerminateInstance](#wfdoc-step-action-terminate-instance)
+ [WaitForAction](#wfdoc-step-action-waitfor)
+ [WaitForSSMAgent](#wfdoc-step-action-wait-for-ssm-agent)

## ApplyImageConfigurations
<a name="wfdoc-step-action-apply-image-configurations"></a>

Este paso aplica varias configuraciones e integraciones a las distribuidas AMIs, como las configuraciones de licencias, las configuraciones de plantillas de lanzamiento, las configuraciones de exportación de S3, las configuraciones de EC2 Fast Launch y las configuraciones de parámetros de Systems Manager. Las configuraciones se aplican a las imágenes distribuidas solo en la cuenta de origen, excepto a las configuraciones de parámetros de SSM, que se pueden aplicar entre cuentas.

Tiempo de **espera predeterminado**: 360 minutos

Tiempo de **espera máximo: 720 minutos**

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| region | La región de la imagen. | Cadena | Sí |  |  | 
| licenseConfigurationArns | El ARN de configuración de licencia de la imagen. | Matriz | No |  |  | 
| launchTemplateConfigurations |  | Matriz | No |  |  | 
| launchTemplateConfigurations:launchTemplateId | El ID de la plantilla de lanzamiento que se va a aplicar a la imagen. | Cadena | Sí, si launchTemplateConfigurations está especificado |  |  | 
| launchTemplateConfigurations: ID de cuenta | La cuenta de la plantilla de lanzamiento que se va IDs a aplicar a la imagen. | Cadena | No |  |  | 
| launchTemplateConfigurations:setDefaultVersion | La configuración de versión predeterminada de la plantilla de lanzamiento para la imagen. | Booleano | No |  |  | 
| s3 ExportConfiguration |  | Matriz | No |  |  | 
| S3ExportConfiguration: Nombre del rol | El nombre del rol de configuración de exportación de S3 para la imagen. | Cadena | Sí, si s3ExportConfiguration está especificado |  |  | 
| s3ExportConfiguration: diskImageFormat | El formato de imagen de disco de configuración de exportación S3 para la imagen. | Cadena | Sí, si s3ExportConfiguration se especifica |  | Valores permitidos: VMDK\$1RAW\$1VHD | 
| S3ExportConfiguration: Cubeta S3 | El nombre del depósito de configuración de exportación de S3 de la imagen. | Cadena | Sí, si s3ExportConfiguration está especificado |  |  | 
| S3: prefijo S3 ExportConfiguration | El prefijo del depósito de configuración de exportación de S3 para la imagen. | Cadena | No |  |  | 
| fastLaunchConfigurations | La configuración de EC2 Fast Launch de la imagen. | Matriz | No |  |  | 
| fastLaunchConfigurationsLa configuración de inicio rápido de la imagen. ----sep----:enabled |  EC2 Inicio rápido enabled/disabled de la imagen. | Booleano | Sí, si fastLaunchConfigurations está especificado |  |  | 
| fastLaunchConfigurationsSí, si se especifica ----SEP----:SnapshotConfiguration |  EC2 Inicio enabled/disabled rápido de la imagen. | Asignación | No |  |  | 
| fastLaunchConfigurationsInicio rápido de la imagen. ----SEP----:SnapshotConfiguration: targetResourceCount | EC2 El recuento de recursos objetivo de Fast Launch para la imagen. | Entero | No |  |  | 
| fastLaunchConfigurations:maxParallelLaunches | EC2 Fast Launch: máximo de lanzamientos paralelos de la imagen. | Entero | No |  |  | 
| fastLaunchConfigurationsLanzamiento rápido: máximo de lanzamientos paralelos para la imagen. ----SEP----:LaunchTemplate |  |  | No |  |  | 
| fastLaunchConfigurations:LaunchTemplate ----SEP----:LaunchTemplate: launchTemplateId | EC2 ID de plantilla de lanzamiento de Fast Launch para la imagen. | Cadena | No |  |  | 
| fastLaunchConfigurationsID de plantilla de lanzamiento rápido para la imagen. ----SEP----:LaunchTemplate: launchTemplateName | EC2 Nombre de la plantilla de lanzamiento de Fast Launch para la imagen. | Cadena | No |  |  | 
| fastLaunchConfigurationsNombre de la plantilla de lanzamiento de Fast Launch para la imagen. ----SEP----:LaunchTemplate: launchTemplateVersion | EC2 Versión de la plantilla de lanzamiento de Fast Launch para la imagen. | Cadena | No |  |  | 
| ssmParameterConfigurations | La configuración del parámetro SSM para la imagen. | Asignación | No |  |  | 
| ssmParameterConfigurations:amiAccountId | El ID de la cuenta AMI del parámetro SSM de la imagen. | Cadena | No |  |  | 
| ssmParameterConfigurationsEl ID de la cuenta AMI del parámetro SSM para la imagen. ----SEP----:ParameterName | El nombre del parámetro SSM de la imagen. | Cadena | Sí, si ssmParameterConfigurations está especificado |  |  | 
| ssmParameterConfigurationsSí, si se especifica ----SEP----:DataType | El tipo de datos del parámetro SSM de la imagen. | Cadena | No |  | Valores permitidos: text\$1aws:ec2:image) | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| Imágenes configuradas | Una lista de imágenes configuradas. | Matriz | 
| Imágenes configuradas: ID de cuenta | El ID de cuenta de destino de la imagen distribuida. | Cadena | 
| Imágenes configuradas: nombre | El nombre de la AMI. | Cadena | 
| Imágenes configuradas: un ID | El ID de AMI de la imagen distribuida. | Cadena | 
| Imágenes configuradas: fecha de inicio | Hora UTC en la que se inició la distribución. | Cadena | 
| Imágenes configuradas: fecha en que se detuvo | Hora UTC en la que se completó la distribución. | Cadena | 
| Imágenes configuradas: paso | Paso en el que se detuvo la distribución. | Completado \$1 \$1 AssociateLicensesRunning \$1 UpdateLaunchTemplateRunning \$1 PutSsmParametersRunning \$1 UpdateFastLaunchConfiguration ExportAmiQueued ExportAmiRunning | 
| Imágenes configuradas: región | El tono de la imagen distribuida AWS  | Cadena | 
| Imágenes configuradas: estado | Estado de distribución. | Completada \$1 Fallada \$1 Cancelada \$1 TimedOut | 
| Imágenes configuradas: mensaje de error  | Mensaje de error, si lo hay. | Cadena | 

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: ApplyImageConfigurations
  action: ApplyImageConfigurations
  onFailure: Abort
  inputs:
    distributedImages.$: $.stepOutputs.DistributeImageStep.distributedImages
```

Utilice la salida del valor de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.ApplyImageConfigurationsStep.configuredImages
```

## BootstrapInstanceForContainer
<a name="wfdoc-step-action-bootstrap-container"></a>

Esta acción de paso ejecuta un script de servicio para arrancar la instancia con los requisitos mínimos para ejecutar flujos de trabajo de contenedores. Generador de imágenes utiliza la acción **sendCommand** en la API de Systems Manager para ejecutar este script. Para obtener más información, consulte [AWS Systems Manager Run Command](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html).

**nota**  
El script de arranque instala los paquetes AWS CLI y Docker que son requisitos previos para que Image Builder compile correctamente los contenedores de Docker. Si no incluye esta acción de paso, la creación de la imagen podría producir un error.

**Tiempo de espera predeterminado:** 60 minutos.

**Tiempo de espera máximo: 720 minutos**

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | ID de la instancia que se va a arrancar. | Cadena | Sí |  | Debe ser el ID de la instancia de salida del paso del flujo de trabajo que lanzó la instancia para este flujo de trabajo. | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| runCommandId | ID de la acción sendCommand de Systems Manager que ejecutó el script de arranque en la instancia. | Cadena | 
| status | Estado devuelto por la acción sendCommand de Systems Manager. | Cadena | 
| salida | Salida devuelta por la acción sendCommand de Systems Manager. | Cadena | 

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: ContainerBootstrapStep
  action: BootstrapInstanceForContainer
  onFailure: Abort
  inputs:
      instanceId.$: $.stepOutputs.LaunchStep.instanceId
```

Utilice la salida del valor de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.ContainerBootstrapStep.status
```

## CollectImageMetadata
<a name="wfdoc-step-action-collect-image-metadata"></a>

Esta acción de paso solo es válida para los flujos de trabajo de creación.

EC2 Image Builder ejecuta el [agente AWS Systems Manager (Systems Manager)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) en las EC2 instancias que lanza para crear y probar la imagen. Generador de Imágenes recopila información adicional sobre la instancia utilizada durante la fase de compilación con [Systems Manager Inventory](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-inventory.html). Esta información incluye el nombre y la versión del sistema operativo (OS), así como la lista de paquetes y sus versiones respectivas, según lo indicado por su sistema operativo.

**nota**  
Esta acción de paso solo funciona con las imágenes que se crean AMIs.

**Tiempo de espera predeterminado:** 30 minutos.

Tiempo de **espera máximo:** 720 minutos

**Restauración:** Generador de imágenes restaura todos los recursos de Systems Manager que se hayan creado durante este paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | Instancia de creación en la que se aplicará la configuración de metadatos. | Cadena | Sí |  | Debe ser el ID de la instancia de salida del paso del flujo de trabajo que lanzó la instancia de creación para este flujo de trabajo. | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| osVersion | Nombre y versión del sistema operativo recopilados de la instancia de creación. | Cadena | 
| associationId | ID de asociación de Systems Manager utilizado para la recopilación del inventario. | Cadena | 

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: CollectMetadataStep
  action: CollectImageMetadata
  onFailure: Abort
  inputs:
      instanceId: $.stepOutputs.LaunchStep.instanceId
```

Utilice la salida de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.CollectMetadataStep.osVersion
```

## CollectImageScanFindings
<a name="wfdoc-step-action-collect-findings"></a>

Si Amazon Inspector está habilitado para la cuenta y el análisis de imágenes está habilitado para la canalización, este paso de acción recopila los resultados del análisis de imágenes notificados por Amazon Inspector para la instancia de prueba. Esta acción de paso no está disponible para los flujos de trabajo de creación.

**Tiempo de espera predeterminado:** 120 minutos.

Tiempo de **espera máximo: 720 minutos**

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | ID de la instancia en la que se ejecutó el análisis. | Cadena | Sí |  | Debe ser el ID de la instancia de salida del paso del flujo de trabajo que lanzó la instancia para este flujo de trabajo. | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| runCommandId | ID de la acción sendCommand de Systems Manager que ejecutó el script para recopilar los resultados. | Cadena | 
| status | Estado devuelto por la acción sendCommand de Systems Manager. | Cadena | 
| salida | Salida devuelta por la acción sendCommand de Systems Manager. | Cadena | 

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: CollectFindingsStep
  action: CollectImageScanFindings
  onFailure: Abort
  inputs:
      instanceId.$: $.stepOutputs.LaunchStep.instanceId
```

Utilice la salida del valor de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.CollectFindingsStep.status
```

## CreateImage
<a name="wfdoc-step-action-create-img-from-inst"></a>

Esta acción de paso crea una imagen a partir de una instancia en ejecución con la EC2 `CreateImage` API de Amazon. Durante el proceso de creación, la acción de paso espera lo necesario para comprobar que los recursos han alcanzado el estado correcto antes de continuar.

**Tiempo de espera predeterminado:** 720 minutos.

Tiempo de **espera máximo:** 3 días

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | Instancia desde la que se va a crear la nueva imagen. | Cadena | Sí |  | La instancia del ID de instancia proporcionado debe encontrarse en estado running cuando se inicie este paso. | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| imageId | ID de la AMI de la imagen que se crea. | Cadena | 

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: CreateImageFromInstance
  action: CreateImage
  onFailure: Abort
  inputs:
      instanceId.$: "i-1234567890abcdef0"
```

Utilice la salida del valor de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.CreateImageFromInstance.imageId
```

## DistributeImage
<a name="wfdoc-step-action-distribute-image"></a>

Esta acción de paso distribuye una AMI a regiones y cuentas específicas. Crea copias de la AMI en las regiones y cuentas de destino en función de la configuración de distribución proporcionada en las solicitudes CreateImage CreateImagePipeline APIs o de la configuración de distribución personalizada proporcionada en el flujo de trabajo para anular la configuración de distribución.

Tiempo de **espera predeterminado**: 360 minutos

Tiempo de **espera máximo: 720 minutos**

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| region | La lista de regiones para distribuir la imagen. | Cadena | Sí |  | Longitud mínima de 1. La longitud máxima es 1024. | 
| name | El nombre de la configuración de distribución. | Cadena | No |  |  | 
| description | Las distribuciones de la configuración de distribución. | Cadena | No |  |  | 
| targetAccountIds | Cuenta IDs a la que se va a distribuir la imagen. | Matriz | No |  |  | 
| Ami Tags | Las etiquetas de la configuración de distribución. | Asignación | No |  |  | 
| kmsKeyId | Claves de KMS que se van a aplicar a la imagen distribuida. | Cadena | No |  |  | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| Imágenes distribuidas | Una lista de imágenes distribuidas | Matriz | 
| Imágenes distribuidas: región | La AWS región de la imagen distribuida. | Cadena | 
| Imágenes distribuidas: nombre | El nombre de la AMI. | Cadena | 
| Imágenes distribuidas: un MIID | El ID de AMI de la imagen distribuida. | Cadena | 
| Imágenes distribuidas: ID de cuenta | El ID de cuenta de destino de la imagen distribuida. | Cadena | 
| Imágenes distribuidas: fecha de inicio | Hora UTC en la que comenzó la distribución. | Cadena | 
| Imágenes distribuidas: fecha en la que se detuvo | Hora UTC en la que se completó la distribución. | Cadena | 
| Imágenes distribuidas: estado | Estado de distribución. | Completada \$1 Fallada \$1 Cancelada \$1 TimedOut | 
| Imágenes distribuidas: paso 2 | Paso en el que se detuvo la distribución. | Completado\$1 CopyAmiRunning | 
| Imágenes distribuidas: mensaje de error  | Mensaje de error, si lo hay. | Cadena | 

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: DistributeImage
  action: DistributeImage
  onFailure: Abort
  inputs:
    distributions:
      - region.$: "$.parameters.SourceRegion"
        description: "AMI distribution to source region"
        amiTags:
          DistributionTest: "SourceRegion"
          WorkflowStep: "DistributeToSourceRegion"
          BuildDate: "{{imagebuilder:buildDate:yyyyMMHHss}}"
          BuildVersion: "{{imagebuilder:buildVersion}}"
```

Utilice la salida del valor de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.DistributeImageStep.distributedImages
```

## ExecuteComponents
<a name="wfdoc-step-action-exec-components"></a>

Esta acción de paso ejecuta los componentes que se especifican en la receta de la imagen actual que se está creando. Los flujos de trabajo de creación ejecutan los componentes de creación en la instancia de creación. Los flujos de trabajo de prueba solo ejecutan los componentes de prueba en la instancia de prueba.

Generador de imágenes utiliza la acción **sendCommand** en la API de Systems Manager para ejecutar los componentes. Para obtener más información, consulte [AWS Systems Manager Run Command](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html).

**Tiempo de espera predeterminado:** 720 minutos.

Tiempo de **espera máximo:** 1 día

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | ID de la instancia en la que deben ejecutarse los componentes. | Cadena | Sí |  | Debe ser el ID de la instancia de salida del paso del flujo de trabajo que lanzó la instancia para este flujo de trabajo. | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| runCommandId | ID de la acción sendCommand de Systems Manager que ejecutó los componentes en la instancia. | Cadena | 
| status | Estado devuelto por la acción sendCommand de Systems Manager. | Cadena | 
| salida | Salida devuelta por la acción sendCommand de Systems Manager. | Cadena | 

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: ExecComponentsStep
  action: ExecuteComponents
  onFailure: Abort
  inputs:
      instanceId: $.stepOutputs.LaunchStep.instanceId
```

Utilice la salida de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.ExecComponentsStep.status
```

## ExecuteStateMachine
<a name="wfdoc-step-action-exec-state-machine"></a>

Esta acción de paso inicia la ejecución de una máquina de AWS Step Functions estados desde un flujo de trabajo de Image Builder. Image Builder utiliza la `StartExecution` API Step Functions para iniciar la máquina de estados y espera a que se complete. Esto resulta útil para integrar flujos de trabajo complejos, procesos de validación de conformidad o certificación en su proceso de creación de imágenes.

Para obtener más información, consulte [Más información sobre las máquinas de estado en Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-statemachines.html) de la *Guía para AWS Step Functions desarrolladores*.

Tiempo de **espera predeterminado:** 6 horas

Tiempo de **espera máximo: 24 horas**

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| stateMachineArn | El ARN de la máquina de estado de Step Functions que se va a ejecutar. | Cadena | Sí |  | Debe ser un ARN de máquina de estado válido. | 
| input | Datos de entrada JSON para proporcionarlos a la máquina de estados. | Cadena | No | \$1\$1 | Debe ser una cadena JSON válida, longitud máxima: 16 KiB. | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| executionArn | El ARN de la ejecución de la máquina de estados. | Cadena | 
| salida | El resultado de la ejecución de la máquina de estados. | Cadena | 

**Se requieren permisos de IAM**

Su función de ejecución personalizada debe tener los siguientes permisos para utilizar esta acción escalonada:

**Permitir acciones**
+ `states:StartExecution`
+ `states:DescribeExecution`

**Especifique los recursos**
+ `arn:aws:states:us-west-2:111122223333:stateMachine:state-machine-name`
+ `arn:aws:states:us-west-2:111122223333:execution:state-machine-name:*`

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: ValidateImageCompliance
  action: ExecuteStateMachine
  timeoutSeconds: 3600
  onFailure: Abort
  inputs:
    stateMachineArn: arn:aws:states:us-west-2:111122223333:stateMachine:ImageComplianceValidation
    input: |
      {
        "imageId": "{{ $.stepOutputs.CreateImageFromInstance.imageId }}",
        "region": "us-west-2",
        "complianceLevel": "high",
        "requiredScans": ["cve", "benchmark", "configuration"]
      }
```

Utilice la salida del valor de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.ValidateImageCompliance.executionArn
```

## LaunchInstance
<a name="wfdoc-step-action-launch-instance"></a>

Esta acción de paso lanza una instancia en su Cuenta de AWS cuenta y espera a que el agente de Systems Manager se ejecute en la instancia antes de pasar al siguiente paso. La acción de lanzamiento utiliza las opciones de la receta y los recursos de configuración de la infraestructura asociados a la imagen. Por ejemplo, el tipo de instancia que se va a lanzar proviene de la configuración de la infraestructura. La salida es el ID de la instancia que se lanzó.

La entrada `waitFor` configura la condición que cumple con el requisito de finalización del paso.

Tiempo de **espera predeterminado: 75 minutos**

Tiempo de **espera máximo: 720 minutos**

**Restauración:** en el caso de las instancias de creación, la restauración realiza la acción que se configuró en el recurso de configuración de la infraestructura. De forma predeterminada, las instancias de creación se terminan si se produce un error en la creación de la imagen. Sin embargo, hay una opción en la configuración de la infraestructura para conservar la instancia de creación para la resolución de problemas.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| imageIdOverride | La imagen que se utilizará para lanzar la instancia | Cadena | No |  Etapa de construcción: imagen, receta, imagen base Etapa de prueba: AMI de salida desde la etapa de compilación  | Debe ser un ID de AMI válido | 
| instanceTypesOverride | Image Builder prueba todos los tipos de instancia de la lista hasta que encuentra uno que se inicie correctamente | Lista de cadena | No | Tipos de instancias especificados en la configuración de su infraestructura | Deben ser tipos de instancia válidos | 
| waitFor | La condición que hay que esperar antes de completar el paso del flujo de trabajo y pasar al siguiente paso | Cadena | Sí |  | Generador de Imágenes es compatible con ssmAgent. | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| instanceId | ID de la instancia que se lanzó. | Cadena | 

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: LaunchStep
  action: LaunchInstance
  onFailure: Abort
  inputs:
    waitFor: ssmAgent
```

Utilice la salida de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.LaunchStep.instanceId
```

## ModifyImageAttributes
<a name="wfdoc-step-action-modify-image-attributes"></a>

Esta acción de paso modifica los atributos de la distribución AMIs, como los permisos de lanzamiento y otros atributos de la AMI. Funciona con los AMIs que se han distribuido a las regiones y cuentas de destino.

**Tiempo de espera predeterminado:** 120 minutos.

Tiempo de **espera máximo:** 180 minutos

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| region | La región de la imagen. | Cadena | Sí |  |  | 
| Permiso de lanzamiento |  |  | No |  |  | 
| Permiso de inicio: ID de usuario | El usuario que debe modificar IDs los permisos de lanzamiento de la imagen. | Cadena | No |  |  | 
| Permiso de lanzamiento: grupos de usuarios | Los grupos de usuarios que se van a modificar en los permisos de lanzamiento de la imagen. | Cadena | No |  |  | 
| Permiso de lanzamiento: ARN de la organización | La AWS organización que se va ARNs a modificar en los permisos de lanzamiento de la imagen. | Cadena | No |  |  | 
| Permiso de lanzamiento: organizationalUnitArns | La unidad AWS organizativa ARNs que se modificará en los permisos de lanzamiento de la imagen. | Cadena | No |  |  | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| Imágenes modificadas | Una lista de imágenes modificadas | Matriz | 
| Imágenes modificadas: ID de cuenta | El ID de cuenta de destino de la imagen distribuida. | Cadena | 
| Imágenes modificadas: nombre | El nombre de la AMI. | Cadena | 
| Imágenes modificadas: un ID | El ID de AMI de la imagen distribuida. | Cadena | 
| Imágenes modificadas: fecha de inicio | Hora UTC en la que comenzó la distribución. | Cadena | 
| Imágenes modificadas: fecha de interrupción | Hora UTC en la que se completó la distribución. | Cadena | 
| Imágenes modificadas: paso | Paso en el que se detuvo la distribución. | Completado\$1 ModifyAmiRunning | 
| Imágenes modificadas: región | La AWS región de la imagen. | Cadena | 
| Imágenes modificadas: estado | Estado de distribución. | Completada \$1 Fallada \$1 Cancelada \$1 TimedOut | 
| Imágenes modificadas: mensaje de error  | Mensaje de error, si lo hay. | Cadena | 

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: ModifyImageAttributes
  action: ModifyImageAttributes
  onFailure: Abort
  inputs:
    distributedImages.$: $.stepOutputs.DistributeImageStep.distributedImages
```

Utilice la salida del valor de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.ModifyImageAttributesStep.modifiedImages
```

## RegisterImage
<a name="wfdoc-step-action-register-image"></a>

Esta acción de paso registra una nueva imagen de máquina de Amazon (AMI) mediante la EC2 RegisterImage API de Amazon. Le permite crear una AMI a partir de una instantánea o conjunto de instantáneas existentes, especificando varios atributos de imagen.

Tiempo de **espera predeterminado: 540 minutos**

Tiempo de **espera máximo: 720 minutos**

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| arquitectura | La arquitectura de la AMI. | Cadena | No |  | Valores válidos: i386, x86\$164, arm64, x86\$164\$1mac, arm64\$1mac | 
| blockDeviceMapping | Las entradas de mapeo de dispositivos de bloques para la AMI. | Matriz | No |  |  | 
| Modo de arranque | El modo de arranque de la AMI. | Cadena | No |  | Valores válidos: legacy-bios, uefi, uefi-preferred | 
| description | Descripción de la AMI. | Cadena | No |  |  | 
| enaSupport | Si están habilitadas las redes mejoradas con ENA. | Booleano | No |  |  | 
| Ubicación de la imagen | La ubicación del manifiesto de la AMI. | Cadena | No |  | Necesario para versiones respaldadas por S3 AMIs | 
| Soporte para iMDS | El nivel de IMDSv2 soporte. | Cadena | No |  | Valores válidos: v2.0 | 
| includeSnapshotTags | Si se deben incluir las etiquetas de la primera instantánea definida en el mapeo de dispositivos de bloques. | Booleano | No | FALSO |  Si se establece en true, las etiquetas se incluyen de la siguiente manera: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/imagebuilder/latest/userguide/wfdoc-step-actions.html)  | 
| ID del núcleo | El ID del núcleo que se va a utilizar. | Cadena | No |  |  | 
| ID del disco RAM | El ID del disco RAM que se va a utilizar. | Cadena | No |  |  | 
| rootDeviceName | El nombre del dispositivo raíz. | Cadena | No |  | Ejemplo: /dev/sda1 | 
| sriovNetSupport | Redes mejoradas con la interfaz Intel 82599 VF. | Cadena | No |  |  | 
| Soporte TPM | Compatibilidad con la versión TPM. | Cadena | No |  | Valores válidos: v2.0 | 
| Datos UEFI | Datos UEFI codificados en Base64. | Cadena | No |  |  | 
| Tipo de virtualización | El tipo de virtualización. | Cadena | No |  | Valores válidos: hvm, paravirtual | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| imageId | El ID de AMI de la imagen registrada. | Cadena | 

**Se requieren permisos de IAM**

Su función de ejecución personalizada debe tener los siguientes permisos para utilizar esta acción escalonada:

**Permitir acciones**
+ `ec2:DescribeSnapshots`
+ `ec2:CreateTags`

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: RegisterNewImage
  action: RegisterImage
  onFailure: Abort
  inputs:
    architecture: "x86_64"
    bootMode: "uefi"
    blockDeviceMapping:
      - DeviceName: "/dev/sda1"
        Ebs:
          SnapshotId: "snap-1234567890abcdef0"
          VolumeSize: 100
          VolumeType: "gp3"
    rootDeviceName: "/dev/sda1"
    virtualizationType: "hvm"
```

Utilice la salida del valor de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.RegisterNewImage.imageId
```

**Ejemplo con etiquetas SnapshotId from another step y snapshot incluidas en la AMI generada**

```
- name: CreateSnapshot
  action: RunCommand
  onFailure: Abort
  inputs:
    instanceId: "i-1234567890abcdef0"
    documentName: "AWS-RunShellScript"
    parameters:
      commands:
        - "aws ec2 create-snapshot --volume-id vol-1234567890abcdef0 --description 'Snapshot for AMI' --query 'SnapshotId' --output text"

- name: RegisterImageFromSnapshot
  action: RegisterImage
  onFailure: Abort
  inputs:
    architecture: "x86_64"
    bootMode: "uefi"
    blockDeviceMapping:
      - DeviceName: "/dev/sda1"
        Ebs:
          SnapshotId.$: "$.stepOutputs.CreateSnapshot.output[0]"
          VolumeSize: 100
          VolumeType: "gp3"
    includeSnapshotTags: true
    rootDeviceName: "/dev/sda1"
    virtualizationType: "hvm"
```

## RunCommand
<a name="wfdoc-step-action-run-command"></a>

Esta acción de paso ejecuta un documento de comandos para el flujo de trabajo. Generador de imágenes utiliza la acción **sendCommand** en la API de Systems Manager para ejecutarlo automáticamente. Para obtener más información, consulte [AWS Systems Manager Run Command](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html).

**Tiempo de espera predeterminado:** 720 minutos.

Tiempo de **espera máximo:** 720 minutos

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | ID de la instancia en la que se va a ejecutar el documento de comandos. | Cadena | Sí |  | Debe ser el ID de la instancia de salida del paso del flujo de trabajo que lanzó la instancia para este flujo de trabajo. | 
| documentName | Nombre del documento de comandos de Systems Manager que se va a ejecutar. | Cadena | Sí |  |  | 
| parameters | Lista de pares clave-valor para cualquier parámetro que requiera el documento de comandos. | dictionary<string, list<string>> | Condicional |  |  | 
| documentVersion | Versión del documento de comandos que se va a ejecutar. | Cadena | No | \$1DEFAULT |  | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| runCommandId | ID de la acción sendCommand de Systems Manager que ejecutó el documento de comandos en la instancia. | Cadena | 
| status | Estado devuelto por la acción sendCommand de Systems Manager. | Cadena | 
| salida | Salida devuelta por la acción sendCommand de Systems Manager. | Lista de cadenas | 

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: RunCommandDoc
  action: RunCommand
  onFailure: Abort
  inputs:
    documentName: SampleDocument
    parameters:
        osPlatform: 
          - "linux"
    instanceId.$: $.stepOutputs.LaunchStep.instanceId
```

Utilice la salida del valor de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.RunCommandDoc.status
```

## RunSysPrep
<a name="wfdoc-step-action-run-sysprep"></a>

Esta acción de paso utiliza la acción **sendCommand** en la API de Systems Manager para ejecutar el documento `AWSEC2-RunSysprep` para las instancias de Windows antes de que la instancia de creación se cierre para la instantánea. Estas acciones siguen las [prácticas AWS recomendadas para endurecer y limpiar la imagen](https://aws.amazon.com/articles/public-ami-publishing-hardening-and-clean-up-requirements/).

**Tiempo de espera predeterminado:** 60 minutos.

Tiempo de **espera máximo: 720 minutos**

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | ID de la instancia en la que se va a ejecutar el documento AWSEC2-RunSysprep. | Cadena | Sí |  | Debe ser el ID de la instancia de salida del paso del flujo de trabajo que lanzó la instancia para este flujo de trabajo. | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| runCommandId | ID de la acción sendCommand de Systems Manager que ejecutó el documento AWSEC2-RunSysprep en la instancia. | Cadena | 
| status | Estado devuelto por la acción sendCommand de Systems Manager. | Cadena | 
| salida | Salida devuelta por la acción sendCommand de Systems Manager. | Cadena | 

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: RunSysprep
  action: RunSysPrep
  onFailure: Abort
  inputs:
      instanceId.$: $.stepOutputs.LaunchStep.instanceId
```

Utilice la salida del valor de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.RunSysprep.status
```

## SanitizeInstance
<a name="wfdoc-step-action-sanitize-instance"></a>

Esta acción de paso ejecuta el script de saneamiento recomendado para las instancias de Linux antes de que la instancia de creación se cierre para la instantánea. El script de saneamiento ayuda a garantizar que la imagen final siga las prácticas recomendadas de seguridad y que se eliminen los artefactos u opciones de creación que no deban transferirse a la instantánea. Para obtener más información sobre el script, consulte [Limpieza posterior a la creación necesaria](security-best-practices.md#post-build-cleanup). Esta acción de paso no se aplica a las imágenes de contenedor.

Generador de imágenes utiliza la acción **sendCommand** en la API de Systems Manager para ejecutar este script. Para obtener más información, consulte [AWS Systems Manager Run Command](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html).

**Tiempo de espera predeterminado:** 60 minutos.

Tiempo de **espera máximo: 720 minutos**

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | ID de la instancia que se va a sanear. | Cadena | Sí |  | Debe ser el ID de la instancia de salida del paso del flujo de trabajo que lanzó la instancia para este flujo de trabajo. | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| runCommandId | ID de la acción sendCommand de Systems Manager que ejecutó el script de saneamiento en la instancia. | Cadena | 
| status | Estado devuelto por la acción sendCommand de Systems Manager. | Cadena | 
| salida | Salida devuelta por la acción sendCommand de Systems Manager. | Cadena | 

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: SanitizeStep
  action: SanitizeInstance
  onFailure: Abort
  inputs:
      instanceId: $.stepOutputs.LaunchStep.instanceId
```

Utilice la salida del valor de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.SanitizeStep.status
```

## TerminateInstance
<a name="wfdoc-step-action-terminate-instance"></a>

Esta acción de paso termina la instancia con el ID de instancia que se pasa como entrada.

**Tiempo de espera predeterminado:** 30 minutos.

Tiempo de **espera máximo: 720 minutos**

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | ID de la instancia que se va a terminar. | Cadena | Sí |  |  | 

**Salidas:** no hay salidas para esta acción de paso.

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: TerminateInstance
  action: TerminateInstance
  onFailure: Continue
  inputs:
      instanceId.$: i-1234567890abcdef0
```

## WaitForAction
<a name="wfdoc-step-action-waitfor"></a>

Esta acción de paso pausa el flujo de trabajo en ejecución y espera a recibir una acción externa de la acción **SendWorkflowStepAction** de la API de Generador de imágenes. Este paso publica un EventBridge evento en el bus de EventBridge eventos predeterminado con un tipo `EC2 Image Builder Workflow Step Waiting` de detalle. El paso también puede enviar una notificación de SNS si proporciona un ARN de tema de SNS o invocar una función de Lambda de forma asíncrona si proporciona un nombre de función de Lambda.

**Tiempo de espera predeterminado:** 3 días.

**Tiempo de espera máximo: 7 días**

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| snsTopicArn | ARN de un tema de SNS opcional al que enviar una notificación cuando el paso del flujo de trabajo esté pendiente. | Cadena | No |  |  | 
| lambdaFunctionName | Un nombre o ARN opcional de la función Lambda para invocar de forma asíncrona cuando el paso del flujo de trabajo esté pendiente. | Cadena | No |  |  | 
| payload | Cadena JSON utilizada como mensaje para SNS y carga útil para Lambda. Si se proporciona, se incluye una carga útil personalizada de forma predeterminada. message/payload, used for SNS and Lambda respectively. If not provided, generates default message/payload | Cadena | No |  | Debe ser una cadena JSON válida, máximo 16 KiB | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| acción | Acción que devuelve la acción SendWorkflowStepAction de la API. | Cadena (RESUME o STOP) | 
| razón | Motivo de la acción devuelta. | Cadena | 

**Se requieren permisos de IAM**

Su función de ejecución personalizada debe tener los siguientes permisos para utilizar esta acción escalonada:

**Permitir acciones**
+ `lambda:InvokeFunction`

**Especifique los recursos**
+ `arn:aws:lambda:us-west-2:111122223333:function:function-name`
+ `arn:aws:lambda:us-west-2:111122223333:function:*`

**Ejemplo**

Especifique la acción del paso en el documento de flujo de trabajo con la notificación de SNS.

```
- name: SendEventAndWait
  action: WaitForAction
  onFailure: Abort
  inputs:
    snsTopicArn: arn:aws:sns:us-west-2:111122223333:ExampleTopic
```

Especifique la acción del paso en el documento de flujo de trabajo con la invocación de la función Lambda.

```
- name: SendEventAndWaitWithLambda
  action: WaitForAction
  onFailure: Abort
  inputs:
    lambdaFunctionName: ExampleFunction
    payload: |
      {
        "imageId": "{{ $.stepOutputs.CreateImageFromInstance.imageId }}",
        "region": "us-west-2"
      }
```

Utilice la salida del valor de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.SendEventAndWait.reason
```

## WaitForSSMAgent
<a name="wfdoc-step-action-wait-for-ssm-agent"></a>

Esta acción escalonada espera a que una EC2 instancia se pueda administrar AWS Systems Manager después de los períodos esperados de falta de respuesta. Resulta especialmente útil para los flujos de trabajo con interrupciones conocidas de la instancia, como los reinicios del sistema, las actualizaciones del sistema operativo o las operaciones específicas de la plataforma que desconectan temporalmente la instancia del SSM. Image Builder supervisa la instancia hasta que recupera la conectividad SSM o se agota el tiempo de espera.

**Tiempo de espera predeterminado:** 60 minutos.

Tiempo de **espera máximo: 180** minutos

**Restauración:** no hay ninguna restauración para esta acción de paso.

**Entradas:** en la siguiente tabla se incluyen las entradas admitidas para esta acción de paso.


| Nombre de la entrada | Description (Descripción) | Tipo | Obligatorio/a | Predeterminado | Restricciones | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | El ID de la instancia que se va a supervisar para comprobar la conectividad SSM. | Cadena | Sí |  | Debe ser un ID de EC2 instancia válido | 

**Salidas:** en la siguiente tabla se incluyen las salidas de esta acción de paso.


| Nombre de salida | Description (Descripción) | Tipo | 
| --- | --- | --- | 
| status | Estado de conexión del agente SSM. | Cadena | 

**Ejemplo**

Especifique la acción de paso en el documento de flujos de trabajo.

```
- name: WaitForInstanceAfterReboot
  action: WaitForSSMAgent
  onFailure: Abort
  timeoutInSeconds: 900
  inputs:
    instanceId.$: $.stepOutputs.LaunchStep.instanceId
```

Utilice la salida del valor de la acción de paso en el documento de flujos de trabajo.

```
$.stepOutputs.WaitForInstanceAfterReboot.Status
```

# Uso de variables dinámicas en el documento de flujos de trabajo
<a name="wfdoc-dynamic-vars"></a>

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 JSONPath expresiones en contenido estructurado, como cadenas JSON. Esto resulta especialmente útil cuando necesitas pasar valores de tiempo de ejecución dentro de cargas complejas para realizar acciones escalonadas como o. `ExecuteStateMachine` `WaitForAction`

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

**JSONPath sintaxis de variables de flujo de trabajo dinámico**

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

Los valores de las variables dinámicas se representan como JSONPath selectores con nodos estructurales que identifican de forma exclusiva la variable objetivo. El primer nodo después de la raíz (\$1) 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`. La siguiente lista contiene los nodos de estructura JSONPath de documentos de flujo de trabajo compatibles.

**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 al resultado de cualquier acción del paso anterior con estas variables JSONPath dinámicas. 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 estar adjunto 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 JSONPath expresiones 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](#wfdoc-ib-vars) para obtener una lista de las variables del sistema Image Builder que puede utilizar.
+ `{{ $.stepOutputs.LaunchStep.instanceType }}`- Se resuelve con el tipo de instancia utilizado en el LaunchStep

Las cadenas literales como, por ejemplo, `"region": "us-east-1"` permanecen sin cambios.

**nota**  
La interpolación de cadenas funciona con cualquier contenido de cadena del documento de flujo de trabajo, incluidas las cadenas multilínea que utilizan el operador pipe () de YAML. `|` El requisito de la corcheta actúa como un mecanismo de escape para distinguir claramente entre JSONPath las variables y el contenido literal del texto.

## Uso de variables del sistema de Generador de imágenes
<a name="wfdoc-ib-vars"></a>

Generador de imágenes proporciona las siguientes variables de sistema que puede utilizar en el documento de flujos de trabajo:


|  Nombre de variable  |  Description (Descripción)  |  Tipo  |  Ejemplo de valor  | 
| --- | --- | --- | --- | 
|  cloudWatchLogGrupo  |  El nombre del grupo de CloudWatch registros para los registros de salida. Formato: `/aws/imagebuilder/<recipe-name>`  |  Cadena  |  `/aws/imagebuilder/sampleImageRecipe`  | 
|  cloudWatchLogTransmisión  |  El nombre del flujo de CloudWatch registros para los registros de salida.  |  Cadena  |  *1.0.0/1*  | 
|  collectImageMetadata  |  Configuración que indica a Generador de imágenes si debe recopilar metadatos de la instancia.  |  Booleano  |  `true` \$1 `false`  | 
|  collectImageScanHallazgos  |  Valor actual de la configuración que permite a Generador de imágenes recopilar los resultados del análisis de imágenes.  |  Booleano  |  `true` \$1 `false`  | 
|  imageBuildNumber  |  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` \$1 `Docker`  | 
|  imageVersionNumber  |  Número de versión de la imagen.  |  Cadena  |  *1.0.0*  | 
|  instanceProfileName  |  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` \$1 `Windows` \$1 `MacOS`  | 
|  s3Logs  |  Objeto JSON que contiene la configuración de los registros de S3 que escribe Generador de imágenes.  |  Objeto JSON  |  \$1'S3logs': \$1's3 BucketName ':', 's3 *sample-bucket* ':KeyPrefix' '\$1\$1 *ib-logs*  | 
|  securityGroups  |  El grupo de seguridad IDs que se aplica 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-1**111122223333**sampleImage**1.0.0/1*  | 
|  subnetId  |  ID de la subred en la que se lanzan las instancias de creación y prueba.  |  Cadena  |  *subnet-1234567890abcdef1*  | 
|  terminateInstanceOnFallo  |  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` \$1 `false`  | 
|  workflowPhase  |  Etapa actual que se ejecuta para la ejecución del flujo de trabajo.  |  Cadena  |  `Build` \$1 `Test`  | 
|  workingDirectory  |  Ruta al directorio de trabajo.  |  Cadena  |  `/tmp`  | 

# Uso de instrucciones condicionales en los pasos del flujo de trabajo
<a name="wfdoc-conditional-statements"></a>

Las instrucciones condicionales comienzan con el atributo `if` del documento de instrucciones. El objetivo final de la instrucción `if` es determinar si se debe ejecutar la acción del paso u omitirla. Si la instrucción `if` se resuelve en `true`, se ejecuta la acción del paso. Si se resuelve en `false`, Generador de imágenes omite la acción del paso y registra el estado del paso `SKIPPED` en el registro.

La instrucción `if` admite las instrucciones de ramificación (`and`, `or`) y modificadores condicionales (`not`). También admite los siguientes operadores de comparación que realizan comparaciones de valores (igual, menor que, mayor que) en función de los tipos de datos que compara (cadena o número).

**Operadores de comparación compatibles**
+ `booleanEquals`
+ `numberEquals`
+ `numberGreaterThan`
+ `numberGreaterThanEquals`
+ `numberLessThan`
+ `numberLessThanEquals`
+ `stringEquals`

**Reglas para las instrucciones de ramificación y modificadores condicionales**  
Se aplican las reglas siguientes para las instrucciones de ramificación (`and`, `or`) y modificadores condicionales (`not`).
+ Las instrucciones de ramificación y los modificadores condicionales deben aparecer en una línea por sí mismos.
+ Las instrucciones de ramificación y los modificadores condicionales deben seguir reglas de nivel.
  + Solo puede haber una instrucción en el nivel principal.
  + Cada rama o modificador secundario inicia un nuevo nivel.

  Para obtener más información sobre los niveles, consulte [Niveles anidados en instrucciones condicionales](#wfdoc-conditional-structure).
+ Cada instrucción de ramificación debe tener al menos una instrucción condicional secundaria, pero no más de diez.
+ Los modificadores condicionales funcionan solo en una instrucción condicional secundaria.

## Niveles anidados en instrucciones condicionales
<a name="wfdoc-conditional-structure"></a>

Las instrucciones condicionales funcionan en varios niveles en una sección propia. Por ejemplo, el atributo `if` de la instrucción aparece en el mismo nivel del documento de flujos de trabajo que el nombre y la acción del paso. Esta es la base de la instrucción condicional.

Puede especificar hasta cuatro niveles de instrucciones condicionales, pero solo puede aparecer una instrucción en el nivel principal. A todas las demás instrucciones de ramificación, modificadores condicionales u operadores condicionales se les aplica una sangría a partir de ahí (una sangría por nivel).

En el siguiente esquema se muestra el número máximo de niveles anidados para una instrucción condicional.

```
base:
  parent: 
    - child (level 2)
        - child (level 3)
            child (level 4)
```

Atributo `if`  
El atributo `if` especifica la instrucción condicional como atributo del documento. Este es el nivel cero.

Nivel principal  
Este es el primer nivel de anidación de las instrucciones condicionales. Solo puede haber una instrucción en este nivel. Si no necesita ramificaciones ni modificadores, puede ser un operador condicional sin instrucciones secundarias. En este nivel no se utiliza la notación de guiones, excepto para los operadores condicionales.

Niveles secundarios  
Los niveles del dos al cuatro se consideran niveles secundarios. Las instrucciones secundarias pueden incluir instrucciones ramificadas, modificadores condicionales u operadores condicionales.

**Ejemplo: niveles anidados**  
En el siguiente ejemplo se muestra el número máximo de niveles en una instrucción condicional.

```
if:
  and:                             #first level
    - stringEquals: 'my_string'    #second level
      value: 'my_string'
    - and:                         #also second level
        - numberEquals: '1'        #third level
          value: 1
        - not:                     #also third level
            stringEquals: 'second_string'      #fourth level
            value: "diff_string"
```

**Reglas de anidación**
+ Cada rama o modificador en el nivel secundario inicia un nuevo nivel.
+ A cada nivel se le aplica una sangría.
+ Puede haber un máximo de cuatro niveles, incluida una instrucción, modificador u operador en el nivel principal, y hasta tres niveles adicionales.

## Ejemplos de instrucción condicional
<a name="wfdoc-conditional-examples"></a>

En este grupo de ejemplos se muestran varios aspectos de las instrucciones condicionales.

**Ramificación: and**  
La instrucción de ramificación `and` se basa en una lista de expresiones que son secundarias a la rama, todas las cuales deben evaluarse como `true`. Generador de imágenes evalúa las expresiones en el orden en que aparecen en la lista. Si alguna expresión se evalúa como `false`, el procesamiento se detiene y la rama se evalúa como `false`.

En el siguiente ejemplo se evalúa como `true`, porque ambas expresiones se evalúan como `true`.

```
if:
  and:
    - stringEquals: 'test_string'
      value: 'test_string'
    - numberEquals: 1
      value: 1
```

**Ramificación: or**  
La instrucción de ramificación `or` se basa en una lista de expresiones que son secundarias de la rama, al menos una de las cuales debe evaluarse como `true`. Generador de imágenes evalúa las expresiones en el orden en que aparecen en la lista. Si alguna expresión se evalúa como `true`, el procesamiento se detiene y la rama se evalúa como `true`.

En el siguiente ejemplo se evalúa como `true`, aunque la primera expresión sea `false`.

```
if:
  or:
    - stringEquals: 'test_string'
      value: 'test_string_not_equal'
    - numberEquals: 1
      value: 1
```

**Modificador condicional: not**  
El modificador condicional `not` niega las instrucciones condicionales que son secundarias de la rama.

En el siguiente ejemplo, se evalúa como `true` cuando el modificador `not` niega la instrucción condicional `stringEquals`.

```
if:
  not:
    - stringEquals: 'test_string'
      value: 'test_string_not_equal'
```

**Instrucción condicional: booleanEquals**  
El operador de comparación `booleanEquals` compara valores booleanos y devuelve el valor true si los valores booleanos coinciden exactamente.

En el siguiente ejemplo se determina si se ha habilitado `collectImageScanFindings`.

```
if:
  - booleanEquals: true
    value: '$.imagebuilder.collectImageScanFindings'
```

**Instrucción condicional: stringEquals**  
El operador de comparación `stringEquals` compara dos cadenas y devuelve el valor true si las cadenas coinciden exactamente. Si alguno de los valores no es una cadena, Generador de imágenes lo convierte en una cadena antes de compararlos.

En el siguiente ejemplo, se compara la variable de sistema de la plataforma para determinar si el flujo de trabajo se ejecuta en una plataforma Linux.

```
if:
  - stringEquals: 'Linux'
    value: '$.imagebuilder.Platform'
```

**Instrucción condicional: numberEquals**  
El operador de comparación `numberEquals` compara dos números y devuelve el valor true si los números son iguales. Los números que se van a comparar deben tener uno de los siguientes formatos.
+ Entero
+ Flotante
+ Cadena que coincide con el siguiente patrón de expresiones regulares: `^-?[0-9]+(\.)?[0-9]+$`.

Todas las comparaciones del siguiente ejemplo se evalúan como `true`.

```
if:
  # Value provider as a number
  numberEquals: 1
  value: '1'
  
  # Comparison value provided as a string
  numberEquals: '1'
  value: 1
  
  # Value provided as a string
  numberEquals: 1
  value: '1'
  
  # Floats are supported
  numberEquals: 5.0
  value: 5.0
  
  # Negative values are supported
  numberEquals: -1
  value: -1
```