

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

# Acessar dados de execução do objeto de contexto no Step Functions
<a name="input-output-contextobject"></a>

**Gerenciar estados e transformar dados**  
Saiba mais sobre como [transmitir dados entre estados com variáveis](workflow-variables.md) e [transformar dados com JSONata](transforming-data.md).

O objeto de contexto é uma estrutura JSON interna que está disponível durante uma execução e contém informações sobre sua máquina de estado e execução. O contexto fornece aos seus fluxos de trabalho informações sobre sua execução específica. Seus fluxos de trabalho podem referenciar o objeto Context em uma JSONata expressão com`$states.context`.

## Acessar o objeto de contexto
<a name="contextobject-access"></a>

**Para acessar o objeto Context em JSONata**

Para acessar o objeto Context em JSONata estados, use `$states.context` em uma JSONata expressão. 

```
{
  "ExecutionID" : "{% $states.context.Execution.Id %}"
}
```

**Para acessar o objeto Context em JSONPath**

Para acessar o objeto Context em JSONPath, primeiro você acrescenta `.$` ao final da chave para indicar que o valor é um caminho. Em seguida, acrescente o valor `$$.` para selecionar um nó no objeto de contexto.

```
{
  "ExecutionID.$": "$$.Execution.Id"
}
```

JSONPath os estados podem se referir ao contexto (`$$.`) nos seguintes JSONPath campos:
+ `InputPath`
+ `OutputPath`
+ `ItemsPath` (em estados Mapa)
+ `Variable` (em estados Escolha)
+ `ResultSelector`
+ `Parameters`
+ Operadores de comparação de variável para variável

## Campos de objeto de contexto
<a name="contextobject-format"></a>

O objeto de contexto inclui informações sobre a máquina de estado, o estado, a execução e a tarefa. O objeto de contexto JSON inclui nós para cada tipo de dados no seguinte formato:

```
{
    "Execution": {
        "Id": "String",
        "Input": {},
        "Name": "String",
        "RoleArn": "String",
        "StartTime": "Format: ISO 8601",
        "RedriveCount": Number,
        "RedriveTime": "Format: ISO 8601"
    },
    "State": {
        "EnteredTime": "Format: ISO 8601",
        "Name": "String",
        "RetryCount": Number
    },
    "StateMachine": {
        "Id": "String",
        "Name": "String"
    },
    "Task": {
        "Token": "String"
    }
}
```

Durante uma execução, o objeto de contexto é preenchido com dados relevantes para o campo. 

Ocasionalmente, novos campos são adicionados ao contexto. Se estiver processando o contexto JSON diretamente, recomendamos criar um código que possa manipular facilmente novos campos desconhecidos. Por exemplo, se estiver usando a biblioteca Jackson para desempacotar o JSON, recomendamos definir `FAIL_ON_UNKNOWN_PROPERTIES` como `false` em seu `ObjectMapper` para evitar um `UnrecognizedPropertyException`.

 O objeto de contexto `RedriveTime` só estará disponível se você tiver redriven uma execução. Se você tiver [redriven a Map Run](redrive-map-run.md), o objeto de contexto `RedriveTime` só estará disponível para fluxos de trabalho secundários do tipo Padrão. Para uma Execução de mapa redriven com fluxos de trabalho secundários do tipo Express, `RedriveTime` não está disponível.

O conteúdo de uma execução que está em andamento inclui informações específicas no formato abaixo: 

```
{
    "Execution": {
        "Id": "arn:aws:states:region:123456789012:execution:stateMachineName:executionName",
        "Input": {
           "key": "value"
        },
        "Name": "executionName",
        "RoleArn": "arn:aws:iam::123456789012:role...",
        "StartTime": "2025-08-27T10:04:42Z"
    },
    "State": {
        "EnteredTime": "2025-08-27T10:04:42.001Z",
        "Name": "Test",
        "RetryCount": 3
    },
    "StateMachine": {
        "Id": "arn:aws:states:region:123456789012:stateMachine:stateMachineName",
        "Name": "stateMachineName"
    },
    "Task": {
        "Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W"
    }
}
```

**Formato de carimbo de data/hora com segundos fracionários**  
Step Functions segue a ISO8601 especificação que afirma que a saída pode ser de zero, três, seis ou nove dígitos, conforme necessário. Quando um carimbo de data/hora tem zero segundos fracionários, o Step Functions remove os zeros à direita em vez de preencher a saída.   
Se você criar um código que consuma carimbos de data/hora do Step Functions, seu código deverá conseguir processar um número variável de segundos fracionários.

## Dados de objeto de contexto para estados de mapa
<a name="contextobject-map"></a>

**Gerenciar estados e transformar dados**  
Saiba mais sobre como [transmitir dados entre estados com variáveis](workflow-variables.md) e [transformar dados com JSONata](transforming-data.md).

Ao processar um [estado `Map`](state-map.md), o contexto também conterá `Index`, `Value` e `Source`. 

Para cada iteração de `Map` estado, `Index` contém o número do índice do item da matriz que está sendo processado atualmente, `Value` contém o item da matriz que está sendo processado e `Source` será o InputType de`CSV`, `JSON``JSONL`, ou`PARQUET`.

Em um estado `Map`, o objeto de contexto inclui os seguintes dados:

```
"Map": {
   "Item": {
      "Index" : Number,
      "Key"   : "String", // Only valid for JSON objects
      "Value" : "String",
      "Source": "String"
   }
}
```

Eles estão disponíveis somente em um estado `Map` e podem ser especificados no campo `ItemSelector (mapa)`.

**nota**  
Você deve definir parâmetros do objeto de contexto no bloco `ItemSelector` do estado `Map` principal, não nos estados incluídos na seção `ItemProcessor`.

Dada uma máquina de estado usando um **JSONPath**`Map`estado, você pode injetar informações do objeto Context da seguinte maneira.

```
{
  "StartAt": "ExampleMapState",
  "States": {
    "ExampleMapState": {
      "Type": "Map",
      "ItemSelector": {
        "ContextIndex.$": "$$.Map.Item.Index",
        "ContextValue.$": "$$.Map.Item.Value",
        "ContextSource.$": "$$.Map.Item.Source"
      },
      "ItemProcessor": {
        "ProcessorConfig": {
          "Mode": "INLINE"
        },
        "StartAt": "TestPass",
        "States": {
          "TestPass": {
            "Type": "Pass",
            "End": true
          }
        }
      },
      "End": true
    }
  }
}
```

Para JSONata, as informações adicionais do contexto do estado do mapa podem ser acessadas a partir da `$states.context` variável:

```
{
  "StartAt": "ExampleMapState",
  "States": {
    "ExampleMapState": {
      "Type": "Map",
      "ItemSelector": {
        "ContextIndex": "{% $states.context.Map.Item.Index %}",
        "ContextValue": "{% $states.context.Map.Item.Value %}",
        "ContextSource": "{% $states.context.Map.Item.Source %}"
      },
      "ItemProcessor": {
        "ProcessorConfig": {
          "Mode": "INLINE"
        },
        "StartAt": "TestPass",
        "States": {
          "TestPass": {
            "Type": "Pass",
            "End": true
          }
        }
      },
      "End": true
    }
  }
}
```



Se você executar a máquina de estado anterior com a entrada a seguir, `Index` e `Value` serão inseridos na saída.

```
[
  {
    "who": "bob"
  },
  {
    "who": "meg"
  },
  {
    "who": "joe"
  }
]
```

A saída da execução retorna os valores dos itens `Index` e `Value` de cada uma das três iterações, da seguinte forma:

```
[
  {
    "ContextIndex": 0,
    "ContextValue": {
      "who": "bob"
    },
    "ContextSource" : "STATE_DATA" 
  },
  {
    "ContextIndex": 1,
    "ContextValue": {
      "who": "meg"
    },
    "ContextSource" : "STATE_DATA" 
  },
  {
    
    "ContextIndex": 2,
    "ContextValue": {
      "who": "joe"
    },
    "ContextSource" : "STATE_DATA" 
  }
]
```

Observe que `$states.context.Map.Item.Source` será um dos seguintes:
+ Na entrada de estado, o valor será: `STATE_DATA`
+ Para `Amazon S3 LIST_OBJECTS_V2` com `Transformation=NONE`, o valor mostrará o URI do S3 para o bucket. Por exemplo: `S3://bucket-name`. 
+ Para todos os outros tipos de entrada, o valor será o URI do Amazon S3. Por exemplo: `S3://bucket-name/object-key`.