

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Accesso ai dati di esecuzione dall'oggetto Context in Step Functions
<a name="input-output-contextobject"></a>

**Gestione dello stato e trasformazione dei dati**  
Scopri come [passare dati tra stati con variabili](workflow-variables.md) e [Trasformare dati](transforming-data.md) con. JSONata

L'oggetto Context è una struttura JSON interna disponibile durante l'esecuzione e contiene informazioni sulla macchina a stati e sull'esecuzione. Il contesto fornisce ai flussi di lavoro informazioni sulla loro esecuzione specifica. I flussi di lavoro possono fare riferimento all'oggetto Context in un' JSONata espressione con. `$states.context`

## Accesso all'oggetto Context
<a name="contextobject-access"></a>

**Per accedere all'oggetto Context in JSONata**

Per accedere all'oggetto Context negli JSONata stati, `$states.context` utilizzatelo in un' JSONata espressione. 

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

**Per accedere all'oggetto Context in JSONPath**

Per accedere all'oggetto Context in JSONPath, aggiungete innanzitutto `.$` alla fine della chiave per indicare che il valore è un percorso. Quindi, anteponi al valore `$$.` per selezionare un nodo nell'oggetto Context.

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

JSONPath gli stati possono fare riferimento al context (`$$.`) dai seguenti campi: JSONPath
+ `InputPath`
+ `OutputPath`
+ `ItemsPath`(negli stati della mappa)
+ `Variable`(negli stati Choice)
+ `ResultSelector`
+ `Parameters`
+ Operatori di confronto da variabile a variabile

## Campi oggetto contestuali
<a name="contextobject-format"></a>

L'oggetto Context include informazioni sulla macchina a stati, sullo stato, sull'esecuzione e sull'attività. L'oggetto Context JSON include nodi per ogni tipo di dati nel seguente 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 un'esecuzione, l'oggetto Context viene popolato con i dati pertinenti. 

Occasionalmente, vengono aggiunti nuovi campi al contesto. Se stai elaborando direttamente il contesto JSON, ti consigliamo di creare codice in grado di gestire senza problemi nuovi campi sconosciuti. Ad esempio, se utilizzi la libreria Jackson per demarshalling di JSON, ti consigliamo di impostarlo su in your per evitare un. `FAIL_ON_UNKNOWN_PROPERTIES` `false` `ObjectMapper` `UnrecognizedPropertyException`

 `RedriveTime`L'oggetto Context è disponibile solo se hai un'esecuzione. redriven In caso [redriven a Map Run](redrive-map-run.md)affermativo, l'oggetto `RedriveTime` contestuale è disponibile solo per i flussi di lavoro secondari di tipo Standard. Per un redriven Map Run con flussi di lavoro secondari di tipo Express, non `RedriveTime` è disponibile.

Il contenuto di un'esecuzione in esecuzione include specifiche nel seguente formato: 

```
{
    "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 timestamp con frazioni di secondo**  
Step Functions segue le ISO8601 specifiche che stabiliscono che l'output può essere composto da zero, tre, sei o nove cifre, se necessario. Quando un timestamp ha zero secondi frazionari, Step Functions rimuove gli zeri finali anziché riempire l'output.   
Se crei codice che utilizza i timestamp di Step Functions, il codice deve essere in grado di elaborare un numero variabile di secondi frazionari.

## Dati contestuali degli oggetti per gli stati della mappa
<a name="contextobject-map"></a>

**Gestione dello stato e trasformazione dei dati**  
Scopri come [passare dati tra stati con variabili](workflow-variables.md) e [Trasformare dati](transforming-data.md) con. JSONata

Durante l'elaborazione di uno [`Map`stato](state-map.md), il contesto conterrà anche `Index``Value`, e`Source`. 

Per ogni iterazione di `Map` stato, `Index` contiene il numero di indice dell'elemento dell'array attualmente in fase di elaborazione, `Value` contiene l'elemento dell'array in fase di elaborazione e `Source` sarà il valore InputType di`CSV`, `JSON``JSONL`, o`PARQUET`.

All'interno di uno `Map` stato, l'oggetto Context include i seguenti dati:

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

Questi sono disponibili solo in uno `Map` stato e possono essere specificati nel `ItemSelector (Mappa)` campo.

**Nota**  
È necessario definire i parametri dall'oggetto Context nel `ItemSelector` blocco dello `Map` stato principale, non all'interno degli stati inclusi nella `ItemProcessor` sezione.

Se una macchina a stati utilizza uno **JSONPath**`Map`stato, è possibile inserire informazioni dall'oggetto Context nel modo seguente.

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

Infatti JSONata, è possibile accedere alle informazioni aggiuntive sul contesto dello stato della mappa dalla `$states.context` variabile:

```
{
  "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 esegui la macchina a stati precedente con il seguente input, `Index` e `Value` vengono inseriti nell'output.

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

L'output per l'esecuzione restituisce i valori `Index` e `Value` gli elementi per ciascuna delle tre iterazioni nel modo seguente:

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

Nota che `$states.context.Map.Item.Source` sarà uno dei seguenti:
+ Per l'input dello stato, il valore sarà: `STATE_DATA`
+ Per `Amazon S3 LIST_OBJECTS_V2` with`Transformation=NONE`, il valore mostrerà l'URI S3 per il bucket. Ad esempio: `S3://bucket-name`. 
+ Per tutti gli altri tipi di input, il valore sarà l'URI di Amazon S3. Ad esempio: `S3://bucket-name/object-key`.