

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á.

# 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 ($) 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.<br />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` \| `false` | 
| collectImageScanConclusões | O valor atual da configuração que permite ao Image Builder coletar resultados de varredura de imagens. | Booleano | `true` \| `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` \| `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` \| `Windows` \| `MacOS` | 
| s3Logs | Um objeto JSON que contém a configuração dos logs do S3 que o Image Builder grava. | Objeto JSON | {'S3Logs': {'s3 BucketName ':' ', 's3{{sample-bucket}}': KeyPrefix ''}} {{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` \| `false` | 
| workflowPhase | O estágio atual inicializado para a execução do fluxo de trabalho. | String | `Build` \| `Test` | 
| workingDirectory | O caminho para o diretório de trabalho. | String | `/tmp` | 