

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Criar um documento de fluxo de trabalho do YAML
<a name="image-workflow-create-document"></a>

O documento de definição do formato do YAML configura as etapas de entrada, saída e fluxo de trabalho para os estágios de compilação e teste do processo de compilação da imagem. Você pode começar com base em modelos que incluem etapas padronizadas ou começar do zero para definir seu próprio fluxo de trabalho. Seja com um modelo ou começando do zero, você pode personalizar o fluxo de trabalho para atender às suas necessidades.

## Estrutura de um documento de fluxo de trabalho do YAML
<a name="workflow-document-structure"></a>

O documento de fluxo de trabalho YAML que o Image Builder usa para realizar ações de compilação e teste de imagens está estruturado da forma a seguuir.
+ [Identificação do documento de fluxo de trabalho](#wfdoc-struct-ident)
+ [Parâmetros de entrada do documento de fluxo de trabalho](#wfdoc-struct-param)
+ [Etapas do documento de fluxo de trabalho](#wfdoc-struct-step)
+ [Saídas do documento de fluxo de trabalho](#wfdoc-struct-output)

### Identificação do documento de fluxo de trabalho
<a name="wfdoc-struct-ident"></a>

Identifica exclusivamente o fluxo de trabalho. Essa seção pode incluir os atributos a seguir.


|  Campo  |  Description  |  Tipo  |  Obrigatório  | 
| --- | --- | --- | --- | 
|  name  |  O nome do documento do fluxo de trabalho.  |  String  |  Não  | 
|  descrição  |  A descrição do documento.  |  String  |  Não  | 
|  schemaVersion  |  A versão do esquema do documento, atualmente 1.0.  |  String  |  Sim  | 

**Exemplo**

```
---
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 do documento de fluxo de trabalho
<a name="wfdoc-struct-param"></a>

Essa parte do documento do fluxo de trabalho define os parâmetros de entrada que o chamador pode especificar. Caso não tenha nenhum parâmetro, você poderá deixar essa seção de fora. Se você especificar parâmetros, cada parâmetro poderá incluir os atributos a seguir.


|  Campo  |  Description  |  Tipo  |  Obrigatório  |  Restrições  | 
| --- | --- | --- | --- | --- | 
|  name  |  O nome do parâmetro.  |  String  |  Sim  |    | 
|  descrição  |  A descrição do parâmetro.  |  String  |  Não  |    | 
|  padrão  |  O valor padrão do parâmetro se não houver um valor. Se você não incluir um valor padrão na definição do parâmetro, o valor do parâmetro será obrigatório em runtime.  |  Corresponde ao tipo de dados do parâmetro.  |  Não  |    | 
|  type  |  O tipo de dado do parâmetro. Se você não incluir o tipo de dados na definição do parâmetro, o tipo de dados adotará por padrão um valor de string exigido em runtime.  |  String  |  Sim  |  O tipo de dados do parâmetro deve ser um dos seguintes: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/image-workflow-create-document.html)  | 

**Exemplo**

Especifique o parâmetro no documento de fluxo de trabalho.

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

Use o valor do parâmetro no documento de fluxo de trabalho.

```
$.parameters.waitForActionAtEnd
```

### Etapas do documento de fluxo de trabalho
<a name="wfdoc-struct-step"></a>

Especifica ações com até 15 etapas para o fluxo de trabalho. As etapas são executadas na ordem em que são definidas no documento do fluxo de trabalho. Em caso de falha, uma reversão é executada na ordem inversa, começando com a etapa que falhou e retrocedendo no sentido das etapas anteriores.

Cada etapa pode indicar a saída de qualquer ação da etapa anterior. Isso é conhecido como *encadeamento ou referência*. Para se referir à saída de uma ação da etapa anterior, você pode usar um JSONPath seletor. Por exemplo:

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

Para obter mais informações, consulte [Use variáveis dinâmicas em seu documento de fluxo de trabalho](wfdoc-dynamic-vars.md).

**nota**  
Mesmo que a etapa não tenha um atributo de saída, qualquer saída de uma ação de etapa será incluída em `stepOutput` para a etapa.

Cada etapa pode incluir os atributos a seguir.


|  Campo  |  Description  |  Tipo  |  Obrigatório  |  Valor padrão   |  Restrições  | 
| --- | --- | --- | --- | --- | --- | 
|  action  |  A ação do fluxo de trabalho que essa etapa executa.  |  String  |  Sim  |    |  Deve ser uma ação de etapa compatível com documentos de fluxo de trabalho do Image Builder.  | 
|  `if`, seguido por um conjunto de declarações condicionais que modificam o operador `if`.  |  As declarações condicionais adicionam pontos de decisão de fluxo de controle ao corpo das etapas do fluxo de trabalho.  |  Dict  |  Não  |    |  O Image Builder é compatível com as seguintes declarações condicionais como modificadores do operador `if`: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/image-workflow-create-document.html)  | 
|  descrição  |  A descrição da etapa.  |  String  |  Não  |    |  Não é permitido ter strings vazias. Se incluída, o comprimento deve ser de 1 a 1.024 caracteres.  | 
|  inputs  |  Contém os parâmetros de que a ação de etapa precisa para funcionar. Você pode especificar os valores-chave como valores estáticos ou com uma JSONPath variável que seja resolvida para o tipo de dados correto.  |  Dict  |  Sim  |    |    | 
|  name  |  O nome da etapa. Esse nome deve ser exclusivo no documento de fluxo de trabalho.  |  String  |  Sim  |    |  Deve ter de 3 a 128 caracteres. Pode incluir caracteres alfanuméricos e `_`. Sem espaços.  | 
|  onFailure  |  Configura da seguinte maneira a ação a ser tomada se a etapa falhar. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/image-workflow-create-document.html)  |  String  |  Não  |  `Abort`  |  `Abort` \$1 `Continue`  | 
|  rollbackEnabled  |  Configura se a etapa será revertida se ocorrer uma falha. Você pode usar um valor booleano estático ou uma JSONPath variável dinâmica que se resolve para um valor booleano.  |  Booleano  |  Não  |  `true`  |  `true` \$1 `false` \$1 ou uma JSONPath variável que é resolvida como verdadeira ou falsa.  | 
|  timeoutSeconds  |  O tempo máximo, em segundos, de execução da etapa antes de falhar e tentar novamente, caso haja novas tentativas.  |  Inteiro  |  Não  |  Depende do padrão definido para a ação da etapa, se for o caso.  |  Não pode ser maior do que o tempo limite máximo da ação da etapa  | 
|  Espere segundos  |  O tempo, em segundos, durante o qual a execução da etapa será pausada.  |  Inteiro  |  Não  |  0  |  Não pode ser maior que timeoutSeconds da ação da etapa  | 

**Exemplo**

```
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"
```

### Saídas do documento de fluxo de trabalho
<a name="wfdoc-struct-output"></a>

Define as saídas para o fluxo de trabalho. Cada saída é um par de valor e chave que especifica o nome da saída e o valor. Você pode usar saídas para exportar dados em runtime que os fluxos de trabalho subsequentes possam usar. Esta seção é opcional.

Cada saída que você define inclui os atributos a seguir.


|  Campo  |  Description  |  Tipo  |  Obrigatório  | 
| --- | --- | --- | --- | 
|  name  |  O nome da saída. O nome deve ser exclusivo em todos os fluxos de trabalho que você incluir no pipeline.  |  String  |  Sim  | 
|  valor  |  O valor para a saída. O valor da string pode ser uma variável dinâmica, como um arquivo de saída de uma ação de etapa. Para obter mais informações, consulte [Use variáveis dinâmicas em seu documento de fluxo de trabalho](wfdoc-dynamic-vars.md).  |  String  |  Sim  | 

**Exemplo**

Crie uma ID de imagem de saída para o documento do fluxo de trabalho com a saída da etapa `createProdImage`.

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

Consulte a saída do fluxo de trabalho no próximo fluxo de trabalho.

```
$.workflowOutputs.outputImageId
```

# Ações de etapa compatíveis com seu documento de fluxo de trabalho
<a name="wfdoc-step-actions"></a>

Esta seção inclui detalhes das ações de etapa compatíveis com o Image Builder.Termos usados nesta seção

AMI  
Imagem de máquina da Amazon (AMI)

ARN  
Nome do recurso da 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>

Essa ação de etapa aplica várias configurações e integrações distribuídas AMIs, como configurações de licença, configurações de modelo de lançamento, configurações de exportação do S3, configurações do EC2 Fast Launch e configurações de parâmetros do Systems Manager. As configurações se aplicam a imagens distribuídas somente na conta de origem, exceto às configurações de parâmetros SSM, que podem ser aplicadas entre contas.

**Tempo limite padrão:** 360 minutos

**Tempo limite máximo: 720** minutos

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| region | A região da imagem. | String | Sim |  |  | 
| licenseConfigurationArns | O ARN de configuração da licença para a imagem. | Array | Não |  |  | 
| launchTemplateConfigurations |  | Array | Não |  |  | 
| launchTemplateConfigurations:launchTemplateId | O ID do modelo de lançamento a ser aplicado à imagem. | String | Sim, se launchTemplateConfigurations for especificado |  |  | 
| launchTemplateConfigurations: ID da conta | A conta do modelo de lançamento IDs a ser aplicada à imagem. | String | Não |  |  | 
| launchTemplateConfigurations:setDefaultVersion | A configuração da versão padrão do modelo de lançamento para a imagem. | Booleano | Não |  |  | 
| s3 ExportConfiguration |  | Array | Não |  |  | 
| ExportConfigurationS3: Nome da função | O nome da função de configuração de exportação do S3 para a imagem. | String | Sim, se s3ExportConfiguration for especificado |  |  | 
| s3: ExportConfiguration diskImageFormat | O formato de imagem de disco de configuração de exportação do S3 para a imagem. | String | Sim, se s3ExportConfiguration for especificado |  | Valores permitidos - VMDK\$1RAW\$1VHD | 
| S3: balde S3 ExportConfiguration | O nome do bucket de configuração de exportação do S3 para a imagem. | String | Sim, se s3ExportConfiguration for especificado |  |  | 
| S3: prefixo S3 ExportConfiguration | O prefixo do bucket de configuração de exportação do S3 para a imagem. | String | Não |  |  | 
| fastLaunchConfigurations | A configuração do EC2 Fast Launch para a imagem. | Array | Não |  |  | 
| fastLaunchConfigurations:ativado |  EC2 Início rápido enabled/disabled para a imagem. | Booleano | Sim, se fastLaunchConfigurations for especificado |  |  | 
| fastLaunchConfigurations: Configuração do snapshot |  EC2 Início rápido enabled/disabled para a imagem. | Mapa | Não |  |  | 
| fastLaunchConfigurations: Configuração do snapshot: targetResourceCount | EC2 Contagem de recursos alvo do Fast Launch para a imagem. | Inteiro | Não |  |  | 
| fastLaunchConfigurations:maxParallelLaunches | EC2 Fast Launch: máximo de lançamentos paralelos para a imagem. | Inteiro | Não |  |  | 
| fastLaunchConfigurations: Modelo de lançamento |  |  | Não |  |  | 
| fastLaunchConfigurations: Modelo de lançamento: launchTemplateId | EC2 ID do modelo de lançamento do Fast Launch para a imagem. | String | Não |  |  | 
| fastLaunchConfigurations: Modelo de lançamento: launchTemplateName | EC2 Nome do modelo de lançamento do Fast Launch para a imagem. | String | Não |  |  | 
| fastLaunchConfigurations: Modelo de lançamento: launchTemplateVersion | EC2 Versão do modelo de lançamento do Fast Launch para a imagem. | String | Não |  |  | 
| ssmParameterConfigurations | A configuração do parâmetro SSM para a imagem. | Mapa | Não |  |  | 
| ssmParameterConfigurations:amiAccountId | O ID da conta da AMI do parâmetro SSM para a imagem. | String | Não |  |  | 
| ssmParameterConfigurations:Nome do parâmetro | O nome do parâmetro SSM da imagem. | String | Sim, se ssmParameterConfigurations for especificado |  |  | 
| ssmParameterConfigurations:Tipo de dados | O tipo de dados do parâmetro SSM para a imagem. | String | Não |  | Valores permitidos - text\$1aws:ec2:image) | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| Imagens configuradas | Uma lista de imagens configuradas. | Array | 
| Imagens configuradas: ID da conta | O ID da conta de destino da imagem distribuída. | String | 
| Imagens configuradas: nome | O nome da AMI. | String | 
| Imagens configuradas: AMIID | O ID da AMI da imagem distribuída. | String | 
| Imagens configuradas: data de início | Hora UTC quando a distribuição começou. | String | 
| Imagens configuradas: data de parada | Hora UTC quando a distribuição foi concluída. | String | 
| Configurar imagens: etapa | A etapa na qual a distribuição foi interrompida. | Concluído\$1 AssociateLicensesRunning \$1 UpdateLaunchTemplateRunning \$1 \$1 PutSsmParametersRunning \$1 UpdateFastLaunchConfiguration ExportAmiQueued ExportAmiRunning | 
| Imagens configuradas: região | Tom AWS da imagem distribuída | String | 
| Imagens configuradas: status | Status de distribuição. | Concluído \$1 Falha\$1Cancelado\$1 TimedOut | 
| Imagens configuradas: mensagem de erro  | Mensagem de erro, se houver. | String | 

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

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

Use a saída do valor da ação da etapa no documento do fluxo de trabalho.

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

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

Essa ação de etapa executa um script de serviço para fazer o bootstrap da instância com requisitos mínimos para executar fluxos de trabalho de contêiner. O Image Builder usa o **sendCommand** na API do Systems Manager para executar esse script. Para obter mais informações, consulte [Comando Run do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html).

**nota**  
O script bootstrap instala os pacotes Docker AWS CLI e Docker, que são pré-requisitos para que o Image Builder crie contêineres do Docker com sucesso. Se você não incluir essa ação, a compilação da imagem poderá falhar.

**Tempo limite padrão:** 60 minutos

**Tempo limite máximo: 720** minutos

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | O ID da instância para o bootstrap. | String | Sim |  | Deve ser o ID da instância de saída da etapa do fluxo de trabalho que iniciou a instância para esse fluxo de trabalho. | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| runCommandId | O ID do sendCommand do Systems Manager que executou o script de bootstrap na instância. | String | 
| status | O status retornado do sendCommand do Systems Manager. | String | 
| saída | A saída retornada do sendCommand do Systems Manager. | String | 

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

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

Use a saída do valor da ação da etapa no documento do fluxo de trabalho.

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

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

Essa ação de etapa só é válida para fluxos de trabalho de compilação.

EC2 O Image Builder executa o [Agente AWS Systems Manager (Systems Manager)](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html) nas EC2 instâncias que ele executa para criar e testar sua imagem. O Image Builder coleta informações adicionais sobre a instância usada durante a fase de compilação com o [Systems Manager Inventory](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-inventory.html). Essas informações incluem o nome e a versão do sistema operacional (SO), bem como a lista de pacotes e suas respectivas versões, conforme relatado pelo seu sistema operacional.

**nota**  
Essa ação de etapa só funciona para imagens criadas AMIs.

**Tempo limite padrão:** 30 minutos

**Tempo limite máximo: 720** minutos

**Reversão:** o Image Builder reverte todos os recursos do Systems Manager que foram criados durante essa etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | A instância de compilação à qual aplicar as configurações de metadados. | String | Sim |  | Deve ser o ID da instância de saída da etapa do fluxo de trabalho que iniciou a instância de compilação para esse fluxo de trabalho. | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| osVersion | O nome e a versão do sistema operacional coletados da instância de compilação. | String | 
| associationId | O ID de associação do Systems Manager usado para coleta de inventário. | String | 

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

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

Use a saída da ação da etapa no documento do fluxo de trabalho.

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

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

Se o Amazon Inspector estiver habilitado para sua conta e a digitalização de imagens estiver habilitada para seu pipeline, essa ação de etapa coletará descobertas de digitalização de imagens relatadas pelo Amazon Inspector para sua instância de teste. Essa ação de etapa não está disponível para fluxos de trabalho de compilação.

**Tempo limite padrão:** 120 minutos

**Tempo limite máximo: 720** minutos

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | O ID da instância na qual a varredura foi executada. | String | Sim |  | Deve ser o ID da instância de saída da etapa do fluxo de trabalho que iniciou a instância para esse fluxo de trabalho. | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| runCommandId | O ID do sendCommand do Systems Manager que executou o script para coletar as descobertas. | String | 
| status | O status retornado do sendCommand do Systems Manager. | String | 
| saída | A saída retornada do sendCommand do Systems Manager. | String | 

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

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

Use a saída do valor da ação da etapa no documento do fluxo de trabalho.

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

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

Essa ação de etapa cria uma imagem de uma instância em execução com a EC2 `CreateImage` API da Amazon. Durante o processo de criação, antes prosseguir, a ação de etapa aguarda conforme necessário para verificar se os recursos alcançaram o estado correto.

**Tempo limite padrão:** 720 minutos

**Tempo limite máximo:** 3 dias

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | A instância com base na qual criar a nova imagem. | String | Sim |  | A instância do ID de instância fornecido deverá estar em um estado running quando essa etapa for iniciada. | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| imageId | O ID de AMI da imagem que foi criada. | String | 

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

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

Use a saída do valor da ação da etapa no documento do fluxo de trabalho.

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

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

Essa ação de etapa distribui uma AMI para regiões e contas especificadas. Ele cria cópias da AMI nas regiões e contas de destino com base na configuração de distribuição fornecida nas solicitações de CreateImage ou CreateImagePipeline APIs ou nas configurações de distribuição personalizadas fornecidas no fluxo de trabalho para substituir as configurações na configuração de distribuição.

**Tempo limite padrão:** 360 minutos

**Tempo limite máximo: 720** minutos

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| region | A lista de regiões para distribuir a imagem. | String | Sim |  | Tamanho mínimo de 1. O comprimento máximo é 1.024. | 
| name | O nome da configuração de distribuição. | String | Não |  |  | 
| descrição | As distribuições da configuração de distribuição. | String | Não |  |  | 
| targetAccountIds | Conta IDs para a qual distribuir a imagem. | Array | Não |  |  | 
| Etiquetas Ami | As tags da configuração de distribuição. | Mapa | Não |  |  | 
| kmsKeyId | Chaves KMS a serem aplicadas à imagem distribuída. | String | Não |  |  | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| Imagens distribuídas | Uma lista de imagens distribuídas | Array | 
| Imagens distribuídas: Região | A AWS região da imagem distribuída. | String | 
| Imagens distribuídas: nome | O nome da AMI. | String | 
| Imagens distribuídas: Amiid | O ID da AMI da imagem distribuída. | String | 
| Imagens distribuídas: ID da conta | O ID da conta de destino da imagem distribuída. | String | 
| Imagens distribuídas: data de início | Hora UTC quando a distribuição começou. | String | 
| Imagens distribuídas: data de parada | Hora UTC quando a distribuição foi concluída. | String | 
| Imagens distribuídas: status | Status de distribuição. | Concluído \$1 Falha\$1Cancelado\$1 TimedOut | 
| Imagens distribuídas: etapa | A etapa na qual a distribuição foi interrompida. | Concluído\$1 CopyAmiRunning | 
| Imagens distribuídas: mensagem de erro  | Mensagem de erro, se houver. | String | 

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

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

Use a saída do valor da ação da etapa no documento do fluxo de trabalho.

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

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

Essa ação de etapa executa componentes especificados na fórmula da imagem atual que está sendo criada. Fluxos de trabalho de compilação executam componentes de compilação na instância de compilação. Os fluxos de trabalho de teste executam somente componentes de teste na instância de teste.

O Image Builder usa o **sendCommand** na API do Systems Manager para executar esse componentes. Para obter mais informações, consulte [Comando Run do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html).

**Tempo limite padrão:** 720 minutos

**Tempo limite máximo:** 1 dia

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | O ID da instância na qual os componentes devem ser executados. | String | Sim |  | Deve ser o ID da instância de saída da etapa do fluxo de trabalho que iniciou a instância para esse fluxo de trabalho. | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| runCommandId | O ID do sendCommand do Systems Manager que executou os componentes na instância. | String | 
| status | O status retornado do sendCommand do Systems Manager. | String | 
| saída | A saída retornada do sendCommand do Systems Manager. | String | 

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

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

Use a saída da ação da etapa no documento do fluxo de trabalho.

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

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

Essa ação de etapa inicia a execução de uma máquina de AWS Step Functions estado a partir de um fluxo de trabalho do Image Builder. O Image Builder usa a `StartExecution` API Step Functions para iniciar a máquina de estado e esperar que ela seja concluída. Isso é útil para integrar fluxos de trabalho complexos, validação de conformidade ou processos de certificação em seu pipeline de criação de imagens.

Para obter mais informações, consulte [Saiba mais sobre máquinas de estado em Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/concepts-statemachines.html) no *AWS Step Functions Developer Guide*.

**Tempo limite padrão:** 6 horas

**Tempo limite máximo:** 24 horas

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| stateMachineArn | O ARN da máquina de estados Step Functions a ser executada. | String | Sim |  | Deve ser um ARN de máquina de estado válido. | 
| input | Dados de entrada JSON para fornecer à máquina de estado. | String | Não | \$1\$1 | Deve ser uma string JSON válida, tamanho máximo: 16 KiB. | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| executionArn | O ARN da execução da máquina de estado. | String | 
| saída | A saída da execução da máquina de estado. | String | 

**Permissões do IAM necessárias**

Sua função de execução personalizada deve ter as seguintes permissões para usar essa ação de etapa:

**Permitir ações**
+ `states:StartExecution`
+ `states:DescribeExecution`

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

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

```
- 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"]
      }
```

Use a saída do valor da ação da etapa no documento do fluxo de trabalho.

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

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

Essa ação de etapa inicia uma instância na sua Conta da AWS e espera até que o agente do Systems Manager esteja em execução na instância antes de passar para a próxima etapa. A ação de inicialização usa configurações de sua fórmula e recursos de configuração de infraestrutura associados à sua imagem. Por exemplo, o tipo de instância a ser executada vem da configuração da infraestrutura. A saída é o ID da instância que foi executada.

A entrada `waitFor` configura a condição que satisfaz o requisito de conclusão da etapa.

**Tempo limite padrão:** 75 minutos

**Tempo limite máximo: 720** minutos

**Reversão:** para instâncias de construção, a reversão executa a ação que você configurou em seu recurso de configuração de infraestrutura. Por padrão, as instâncias de compilação são encerradas se a criação da imagem falhar. No entanto, há uma definição na configuração da infraestrutura para manter a instância de compilação para solução de problemas.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| imageIdOverride | A imagem a ser usada para iniciar a instância | String | Não |  Estágio de construção: imagem base da receita da imagem Estágio de teste: saída da AMI do estágio de construção  | Deve ser uma ID de AMI válida | 
| instanceTypesOverride | O Image Builder testa cada tipo de instância na lista até encontrar uma que seja executada com sucesso | Lista de strings | Não | Tipos de instância especificados em sua configuração de infraestrutura | Devem ser tipos de instância válidos | 
| waitFor | A condição a ser aguardada antes de concluir a etapa do fluxo de trabalho e passar para a próxima etapa | String | Sim |  | O Image Builder é compatível com ssmAgent. | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| instanceId | O ID de instância da instância que foi executada. | String | 

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

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

Use a saída da ação da etapa no documento do fluxo de trabalho.

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

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

Essa ação de etapa modifica atributos de distribuídos AMIs, como permissões de execução e outros atributos da AMI. Ele opera com base nas AMIs que foram distribuídas para regiões e contas alvo.

**Tempo limite padrão:** 120 minutos

**Tempo limite máximo:** 180 minutos

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| region | A região da imagem. | String | Sim |  |  | 
| Permissão de lançamento |  |  | Não |  |  | 
| Permissão de lançamento: IDs de usuário | O usuário IDs a ser modificado nas permissões de lançamento da imagem. | String | Não |  |  | 
| Permissão de lançamento: grupos de usuários | Os grupos de usuários a serem modificados nas permissões de lançamento da imagem. | String | Não |  |  | 
| Permissão de lançamento: Organization ARNS | A AWS organização ARNs a ser modificada nas permissões de lançamento da imagem. | String | Não |  |  | 
| Permissão de lançamento: organizationalUnitArns | A Unidade AWS Organizacional ARNs a ser modificada nas permissões de lançamento da imagem. | String | Não |  |  | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| Imagens modificadas | Uma lista de imagens modificadas | Array | 
| Imagens modificadas: ID da conta | O ID da conta de destino da imagem distribuída. | String | 
| Imagens modificadas: Nome | O nome da AMI. | String | 
| Imagens modificadas: Amiid | O ID da AMI da imagem distribuída. | String | 
| Imagens modificadas: data de início | Hora UTC quando a distribuição começou. | String | 
| Imagens modificadas: data de parada | Hora UTC quando a distribuição foi concluída. | String | 
| Imagens modificadas: etapa | A etapa na qual a distribuição foi interrompida. | Concluído\$1 ModifyAmiRunning | 
| Imagens modificadas: Região | A AWS região da imagem. | String | 
| Imagens modificadas: status | Status de distribuição. | Concluído \$1 Falha\$1Cancelado\$1 TimedOut | 
| Imagens modificadas: mensagem de erro  | Mensagem de erro, se houver. | String | 

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

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

Use a saída do valor da ação da etapa no documento do fluxo de trabalho.

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

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

Essa ação de etapa registra uma nova Amazon Machine Image (AMI) usando a EC2 RegisterImage API da Amazon. Ele permite que você crie uma AMI a partir de um snapshot existente ou de um conjunto de snapshots, especificando vários atributos de imagem.

**Tempo limite padrão: 540** minutos

**Tempo limite máximo: 720** minutos

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| arquitetura | A arquitetura da AMI. | String | Não |  | Valores válidos: i386, x86\$164, arm64, x86\$164\$1mac, arm64\$1mac | 
| blockDeviceMapping | As entradas de mapeamento de dispositivos de bloco para a AMI. | Array | Não |  |  | 
| Modo de inicialização | O modo de inicialização da AMI. | String | Não |  | Valores válidos: legacy-bios, uefi, uefi-preferred | 
| descrição | Uma descrição para a AMI. | String | Não |  |  | 
| enaSupport | Se a rede aprimorada com ENA está habilitada. | Booleano | Não |  |  | 
| Localização da imagem | A localização do manifesto da AMI. | String | Não |  | Necessário para suporte de S3 AMIs | 
| Suporte ao IMDS | O nível de IMDSv2 suporte. | String | Não |  | Valores válidos: v2.0 | 
| includeSnapshotTags | Se deve incluir tags do primeiro instantâneo definido no mapeamento do dispositivo de bloco. | Booleano | Não | FALSE |  Quando definidas como verdadeiras, as tags são incluídas da seguinte forma: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/imagebuilder/latest/userguide/wfdoc-step-actions.html)  | 
| ID do kernel | O ID do kernel a ser usado. | String | Não |  |  | 
| RAM é Kid | O ID do disco RAM a ser usado. | String | Não |  |  | 
| rootDeviceName | O nome do dispositivo raiz. | String | Não |  | Exemplo: /dev/sda1 | 
| sriovNetSupport | Rede aprimorada com a interface Intel 82599 VF. | String | Não |  |  | 
| Suporte TPM | Suporte à versão TPM. | String | Não |  | Valores válidos: v2.0 | 
| Dados da UEFI | Dados UEFI codificados em Base64. | String | Não |  |  | 
| Tipo de virtualização | O tipo de virtualização. | String | Não |  | Valores válidos: hvm, paravirtual | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| imageId | O ID da AMI da imagem registrada. | String | 

**Permissões do IAM necessárias**

Sua função de execução personalizada deve ter as seguintes permissões para usar essa ação de etapa:

**Permitir ações**
+ `ec2:DescribeSnapshots`
+ `ec2:CreateTags`

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

```
- 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"
```

Use a saída do valor da ação da etapa no documento do fluxo de trabalho.

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

**Exemplo com uma SnapshotId de outra etapa e tags de snapshot incluídas na AMI gerada**

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

Essa ação de etapa executa um documento de comando para seu fluxo de trabalho. O Image Builder usa o **sendCommand** na API do Systems Manager para executá-lo em seu nome. Para obter mais informações, consulte [Comando Run do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/run-command.html).

**Tempo limite padrão:** 720 minutos

**Tempo limite máximo: 720** minutos

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | O ID da instância na qual executar o documento de comando. | String | Sim |  | Deve ser o ID da instância de saída da etapa do fluxo de trabalho que iniciou a instância para esse fluxo de trabalho. | 
| documentName | O nome do documento de comando do Systems Manager a ser executado. | String | Sim |  |  | 
| parameters | Uma lista de pares chave e valor para qualquer parâmetro exigido pelo documento de comando. | dictionary<string, list<string>> | Condicional |  |  | 
| documentVersion | A versão do documento de comando a ser executada. | String | Não | \$1DEFAULT |  | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| runCommandId | O ID do sendCommand do Systems Manager que executou o documento de comando na instância. | String | 
| status | O status retornado do sendCommand do Systems Manager. | String | 
| saída | A saída retornada do sendCommand do Systems Manager. | Lista de strings | 

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

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

Use a saída do valor da ação da etapa no documento do fluxo de trabalho.

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

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

Essa ação de etapa usa o **sendCommand** na API do Systems Manager para executar o documento `AWSEC2-RunSysprep` para instâncias do Windows antes que a instância de compilação seja encerrada para o snapshot. Essas ações seguem as [AWS melhores práticas para endurecer e limpar a imagem](https://aws.amazon.com/articles/public-ami-publishing-hardening-and-clean-up-requirements/).

**Tempo limite padrão:** 60 minutos

**Tempo limite máximo: 720** minutos

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | O ID da instância na qual executar o documento AWSEC2-RunSysprep. | String | Sim |  | Deve ser o ID da instância de saída da etapa do fluxo de trabalho que iniciou a instância para esse fluxo de trabalho. | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| runCommandId | O ID do sendCommand do Systems Manager que executou o documento AWSEC2-RunSysprep na instância. | String | 
| status | O status retornado do sendCommand do Systems Manager. | String | 
| saída | A saída retornada do sendCommand do Systems Manager. | String | 

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

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

Use a saída do valor da ação da etapa no documento do fluxo de trabalho.

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

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

Essa ação de etapa executa o script de limpeza recomendado para instâncias Linux antes que a instância de compilação seja encerrada para o snapshot. O script de limpeza ajuda a garantir que a imagem final siga as práticas recomendadas de segurança e a remoção de qualquer artefato ou configuração de compilação que não deva ser transferida para seu snapshot. Para obter mais informações sobre o script, consulte [Limpeza necessária após a construção](security-best-practices.md#post-build-cleanup). Essa ação não se aplica a imagens de contêiner.

O Image Builder usa o **sendCommand** na API do Systems Manager para executar esse script. Para obter mais informações, consulte [Comando Run do AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html).

**Tempo limite padrão:** 60 minutos

**Tempo limite máximo: 720** minutos

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | O ID da instância a passar por limpeza. | String | Sim |  | Deve ser o ID da instância de saída da etapa do fluxo de trabalho que iniciou a instância para esse fluxo de trabalho. | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| runCommandId | O ID do sendCommand do Systems Manager que executou o script de limpeza na instância. | String | 
| status | O status retornado do sendCommand do Systems Manager. | String | 
| saída | A saída retornada do sendCommand do Systems Manager. | String | 

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

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

Use a saída do valor da ação da etapa no documento do fluxo de trabalho.

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

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

Essa ação de etapa encerra a instância com o ID da instância que é transmitido como entrada.

**Tempo limite padrão:** 30 minutos

**Tempo limite máximo: 720** minutos

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | Forneça o ID da instância a ser encerrada. | String | Sim |  |  | 

**Saídas:** não há saídas para essa ação de etapa.

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

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

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

Essa ação de etapa pausa o fluxo de trabalho em execução e aguarda o recebimento de uma ação externa da ação **SendWorkflowStepAction** da API do Image Builder. Esta etapa publica um EventBridge evento em seu ônibus de EventBridge eventos padrão com o tipo de `EC2 Image Builder Workflow Step Waiting` detalhe. A etapa também pode enviar uma notificação do SNS se você fornecer um ARN de tópico do SNS ou invocar uma função do Lambda de forma assíncrona se você fornecer um nome de função do Lambda.

**Tempo limite padrão:** 3 dias

**Tempo limite máximo:** 7 dias

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| snsTopicArn | Um ARN opcional de tópico do SNS para enviar uma notificação quando a etapa do fluxo de trabalho estiver pendente. | String | Não |  |  | 
| lambdaFunctionName | Um nome opcional ou ARN da função Lambda a ser invocada de forma assíncrona quando a etapa do fluxo de trabalho estiver pendente. | String | Não |  |  | 
| payload | Cadeia de caracteres JSON usada como mensagem para SNS e carga útil para Lambda. Se fornecida, uma carga personalizada é agrupada por padrãomessage/payload, used for SNS and Lambda respectively. If not provided, generates default message/payload. | String | Não |  | Deve ser uma string JSON válida, no máximo 16 KiB | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| action | A ação retornada pela ação de API SendWorkflowStepAction. | String (RESUME ou STOP) | 
| reason | O motivo da ação retornada. | String | 

**Permissões do IAM necessárias**

Sua função de execução personalizada deve ter as seguintes permissões para usar essa ação de etapa:

**Permitir ações**
+ `lambda:InvokeFunction`

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

**Exemplo**

Especifique a ação da etapa no documento do fluxo de trabalho com a notificação do SNS.

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

Especifique a ação da etapa no documento do fluxo de trabalho com a invocação da função Lambda.

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

Use a saída do valor da ação da etapa no documento do fluxo de trabalho.

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

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

Essa ação de etapa espera que uma EC2 instância se torne gerenciável AWS Systems Manager após os períodos esperados de falta de resposta. É particularmente importante para fluxos de trabalho com interrupções de instância conhecidas, como reinicializações do sistema, atualizações do sistema operacional ou operações específicas da plataforma que desconectam temporariamente a instância do SSM. O Image Builder monitora a instância até que ela recupere a conectividade SSM ou atinja o tempo limite.

**Tempo limite padrão:** 60 minutos

**Tempo limite máximo:** 180 minutos

**Reversão:** não há reversão para essa ação de etapa.

**Entradas:** a tabela a seguir inclui entradas compatíveis com essa ação de etapa.


| Nome da entrada | Description | Tipo | Obrigatório | Padrão | Restrições | 
| --- | --- | --- | --- | --- | --- | 
| instanceId | O ID da instância para monitorar a conectividade do SSM. | String | Sim |  | Deve ser um ID de EC2 instância válido | 

**Saídas:** a tabela a seguir inclui saídas para essa ação de etapa.


| Nome da saída | Description | Tipo | 
| --- | --- | --- | 
| status | Status da conexão do SSM Agent. | String | 

**Exemplo**

Especifique a ação de etapa no documento de fluxo de trabalho.

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

Use a saída do valor da ação da etapa no documento do fluxo de trabalho.

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

# Use variáveis dinâmicas em seu documento de fluxo de trabalho
<a name="wfdoc-dynamic-vars"></a>

Você pode usar variáveis dinâmicas em seus documentos de fluxo de trabalho para representar valores que variam em runtime para seu processo de criação de imagem. A interpolação de strings para variáveis dinâmicas permite incorporar JSONPath expressões em conteúdo estruturado, como cadeias de caracteres JSON. Isso é particularmente útil quando você precisa passar valores de tempo de execução em cargas complexas para ações escalonadas como ou. `ExecuteStateMachine` `WaitForAction`

Para usar a interpolação de strings para variáveis dinâmicas, coloque JSONPath expressões em colchetes duplos `"{{...}}"` dentro do conteúdo da string. Somente JSONPath expressões entre chaves duplas são processadas como variáveis. Qualquer JSONPath expressão que não esteja entre chaves duplas é tratada como conteúdo literal de seqüência de caracteres.

**JSONPath sintaxe variável de fluxo de trabalho dinâmico**

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

Os valores das variáveis dinâmicas são representados como JSONPath seletores com nós estruturais que identificam exclusivamente a variável alvo. O primeiro nó após a raiz (\$1) se refere à estrutura do documento do fluxo de trabalho, como `stepOutputs`, ou no caso das variáveis de sistema do Image Builder, a `imageBuilder`. A lista a seguir contém nós de estrutura JSONPath de documentos de fluxo de trabalho compatíveis.

**Nós de estrutura do documento**
+ parameters: os parâmetros do fluxo de trabalho
+ stepOutputs: saídas de uma etapa no mesmo documento de fluxo de trabalho
+ workflowOutputs: saídas de um documento de fluxo de trabalho que já foi executado
+ imagebuilder: variáveis de sistema do Image Builder

Os nós da estrutura de documento `parameters` e `stepOutputs` incluem um nó opcional para o nome da etapa. Isso ajuda a garantir nomes exclusivos de variáveis em todas as etapas.

O nó final no JSONPath é o nome da variável de destino, como`instanceId`.

Cada etapa pode se referir à saída de qualquer ação da etapa anterior com essas variáveis JSONPath dinâmicas. Isso também é conhecido como *encadeamento ou referência*. Você pode usar a variável dinâmica a seguir para fazer referência à saída de uma ação da etapa anterior.

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

**Importante**  
Quando um parâmetro de entrada se refere a uma variável dinâmica, o indicador de encadeamento (`.$`) deve ser anexado ao final do nome do parâmetro.

**Exemplo 1: indicador de encadeamento de parâmetros de entrada**

O exemplo a seguir mostra um parâmetro de entrada que usa interpolação de strings para resolver uma variável dinâmica no valor do parâmetro em tempo de execução.

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

**Exemplo 2: interpolação de strings em variáveis dinâmicas**

O exemplo a seguir demonstra como as variáveis dinâmicas usam a interpolação de strings para determinar valores em tempo de execução.

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

Neste exemplo, as JSONPath expressões encapsuladas em chaves duplas são resolvidas em tempo de execução:
+ `{{ $.stepOutputs.CreateImageFromInstance.imageId }}`- Resolve para o ID real da imagem a partir da etapa CreateImageFromInstance 
+ `{{ $.imagebuilder.dateTime }}`- Resolve para o timestamp de compilação atual. Consulte [Usar variáveis de sistema do Image Builder](#wfdoc-ib-vars) para obter uma lista das variáveis de sistema do Image Builder que você pode usar.
+ `{{ $.stepOutputs.LaunchStep.instanceType }}`- Resolve para o tipo de instância usado no LaunchStep

As sequências literais, como por exemplo, `"region": "us-east-1"` permanecem inalteradas.

**nota**  
A interpolação de strings funciona com qualquer conteúdo de string em seu documento de fluxo de trabalho, incluindo cadeias de caracteres de várias linhas usando o operador YAML pipe (). `|` O requisito de colchete curvo atua como um mecanismo de escape para distinguir claramente entre JSONPath variáveis e conteúdo de texto literal.

## Usar variáveis de sistema do Image Builder
<a name="wfdoc-ib-vars"></a>

O Image Builder fornece as seguintes variáveis de sistema que você pode usar em seu documento de fluxo de trabalho:


|  Nome da variável  |  Description  |  Tipo  |  Valor de exemplo  | 
| --- | --- | --- | --- | 
|  cloudWatchLogGrupo  |  O nome do grupo CloudWatch Logs para registros de saída. Formato: `/aws/imagebuilder/<recipe-name>`  |  String  |  `/aws/imagebuilder/sampleImageRecipe`  | 
|  cloudWatchLogStream  |  O nome do fluxo de CloudWatch registros para registros de saída.  |  String  |  *1.0.0/1*  | 
|  collectImageMetadata  |  A configuração que orienta o Image Builder a coletar ou não os metadados da instância.  |  Booleano  |  `true` \$1 `false`  | 
|  collectImageScanConclusões  |  O valor atual da configuração que permite ao Image Builder coletar resultados de varredura de imagens.  |  Booleano  |  `true` \$1 `false`  | 
|  imageBuildNumber  |  O número de versão da compilação da imagem.  |  Inteiro  |  *1*  | 
|  imageId  |  O ID da AMI da imagem de base.  |  String  |  *ami-1234567890abcdef1*  | 
|  imageName  |  O nome da imagem.  |  String  |  *sampleImage*  | 
|  imageType  |  O tipo de saída da imagem.  |  String  |  `AMI` \$1 `Docker`  | 
|  imageVersionNumber  |  O número de versão da imagem.  |  String  |  *1.0.0*  | 
|  instanceProfileName  |  O nome da função do perfil de instância que o Image Builder usa para iniciar, criar e testar instâncias.  |  String  |  *SampleImageBuilderInstanceProfileRole*  | 
|  platform  |  A plataforma do sistema operacional da imagem que foi compilada.  |  String  |  `Linux` \$1 `Windows` \$1 `MacOS`  | 
|  s3Logs  |  Um objeto JSON que contém a configuração dos logs do S3 que o Image Builder grava.  |  Objeto JSON  |  \$1'S3Logs': \$1's3 BucketName ':' ', 's3*sample-bucket*': KeyPrefix ''\$1\$1 *ib-logs*  | 
|  securityGroups  |  O grupo de segurança IDs que se aplica para criar e testar instâncias.  |  List [String]  |  *[sg-1234567890abcdef1, sg-11112222333344445]*  | 
|  sourceImageARN  |  O nome do recurso da Amazon (ARN) do recurso de imagem do Image Builder que o fluxo de trabalho usa para os estágios de compilação e teste.  |  String  |  arn: aws:imagebuilder: ::image//*us-east-1**111122223333**sampleImage**1.0.0/1*  | 
|  subnetId  |  O ID da sub-rede na qual inicializar as instâncias de compilação e teste.  |  String  |  *subnet-1234567890abcdef1*  | 
|  terminateInstanceOnFalha  |  O valor atual da configuração que direciona o Image Builder a encerrar a instância em caso de falha ou mantê-la para solução de problemas.  |  Booleano  |  `true` \$1 `false`  | 
|  workflowPhase  |  O estágio atual inicializado para a execução do fluxo de trabalho.  |  String  |  `Build` \$1 `Test`  | 
|  workingDirectory  |  O caminho para o diretório de trabalho.  |  String  |  `/tmp`  | 

# Usar declarações condicionais nas etapas do seu fluxo de trabalho
<a name="wfdoc-conditional-statements"></a>

As declarações condicionais começam com o atributo `if` do documento de declaração. O objetivo final da declaração `if` é determinar se a ação da etapa deve ser executada ou ignorada. Se a declaração `if` for resolvida como `true`, a ação da etapa será executada. Se ela for resolvida para `false`, o Image Builder vai ignorar a ação da etapa e registrar o status `SKIPPED` da etapa no log.

A declaração `if` é compatível com instruções ramificadas (`and`, `or`) e modificadores condicionais (`not`). Ela também é compatível com os operadores de comparação a seguir que realizam comparações de valores (igual, menor que, maior que) com base nos tipos de dados que ela compara (string ou número).

**Operadores de comparação compatíveis**
+ `booleanEquals`
+ `numberEquals`
+ `numberGreaterThan`
+ `numberGreaterThanEquals`
+ `numberLessThan`
+ `numberLessThanEquals`
+ `stringEquals`

**Regras para declarações ramificadas e modificadores condicionais**  
As regras a seguir são aplicáveis a declarações ramificadas (`and`, `or`) e modificadores condicionais (`not`).
+ Declarações ramificadas e modificadores condicionais devem aparecer individualmente em uma linha.
+ As declarações ramificadas e os modificadores condicionais devem seguir as regras de nível.
  + Só pode haver uma declaração no nível principal.
  + Cada ramificação ou modificador secundário inicia um novo nível.

  Para obter mais informações sobre os níveis, consulte [Níveis aninhados em declarações condicionais](#wfdoc-conditional-structure).
+ Cada declaração ramificada deve ter pelo menos uma declaração condicional secundária, mas não mais do que dez.
+ Os modificadores condicionais operam em apenas uma declaração condicional secundária.

## Níveis aninhados em declarações condicionais
<a name="wfdoc-conditional-structure"></a>

As declarações condicionais operam em vários níveis em uma seção própria. Por exemplo, o atributo de declaração `if` aparece no mesmo nível do nome da etapa e da ação em seu documento de fluxo de trabalho. Essa é a base da declaração condicional.

Você pode especificar até quatro níveis de declarações condicionais, mas somente uma declaração poderá aparecer no nível principal. Todas as outras declarações ramificadas, modificadores condicionais ou operadores condicionais serão recuados a partir desse nível, um recuo por nível.

O esquema a seguir mostra o número máximo de níveis aninhados para uma declaração condicional.

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

Atributo `if`  
O atributo `if` especifica a declaração condicional como um atributo do documento. Esse é o nível zero.

Nível principal  
Esse é o primeiro nível de aninhamento de declarações condicionais. Só pode haver uma declaração nesse nível. Se você não precisar de ramificações ou modificadores, isso pode ser um operador condicional sem declarações secundárias. Esse nível não usa notação de hífen, exceto para operadores condicionais.

Níveis secundários  
Os níveis dois a quatro são considerados níveis secundários. As declarações secundárias podem incluir instruções ramificadas, modificadores condicionais ou operadores condicionais.

**Exemplo: níveis aninhados**  
O exemplo a seguir mostra o número máximo de níveis em uma declaração 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"
```

**Regras de aninhamento**
+ Cada ramificação ou modificador no nível secundário inicia um novo nível.
+ Cada nível é indentado.
+ É possível haver até quatro níveis, incluindo uma declaração, modificador ou operador no nível principal e até três níveis adicionais.

## Exemplos de declaração condicional
<a name="wfdoc-conditional-examples"></a>

Esse grupo de exemplos mostra diversos aspectos das declarações condicionais.

**Ramificação: and**  
A instrução de ramificação `and` opera em uma lista de expressões que são secundárias à ramificação e que devem todas ser avaliadas como `true`. O Image Builder avalia as expressões na ordem em que elas aparecem na lista. Se alguma expressão for avaliada como `false`, o processamento será interrompido e a ramificação será considerada `false`.

O exemplo a seguir é avaliado como `true`, porque ambas as expressões são avaliadas como `true`.

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

**Ramificação: or**  
A instrução de ramificação `or` opera em uma lista de expressões que são secundárias à ramificação e que devem ter ao menos uma avaliada como `true`. O Image Builder avalia as expressões na ordem em que elas aparecem na lista. Se alguma expressão for avaliada como `true`, o processamento será interrompido e a ramificação será considerada `true`.

Mesmo que a primeira expressão seja `false`, o exemplo a seguir é avaliado como `true`.

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

**Modificador condicional: not**  
O modificador condicional `not` nega as declarações condicionais que são secundárias à ramificação.

O exemplo a seguir é avaliado `true` quando o modificador `not` negar a declaração condicional `stringEquals`.

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

**Declaração condicional: booleanEquals**  
O operador de comparação `booleanEquals` compara os valores boolianos e responde com verdadeiro quando os valores boolianos têm correspondência exata.

O exemplo a seguir determina se `collectImageScanFindings` está habilitado.

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

**Declaração condicional: stringEquals**  
O operador de comparação `stringEquals` compara duas strings e responde com verdadeiro quando as strings são uma correspondência exata. Se um dos valores não for uma string, o Image Builder o converterá em uma string antes da comparação.

O exemplo a seguir compara a variável de sistema da plataforma para determinar se o fluxo de trabalho está sendo executado em uma plataforma Linux.

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

**Declaração condicional: numberEquals**  
O operador de comparação `numberEquals` compara dois números e responde com verdadeiro quando os números são iguais. Os números a serem comparados devem ter um dos seguintes formatos.
+ Inteiro
+ Float
+ Uma string que corresponde ao seguinte padrão de regex: `^-?[0-9]+(\.)?[0-9]+$`.

No exemplo a seguir, todas as comparações são avaliadas 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
```