

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengakses data eksekusi dari objek Context di Step Functions
<a name="input-output-contextobject"></a>

**Mengelola status dan mengubah data**  
Pelajari tentang [Melewati data antar status dengan variabel](workflow-variables.md) dan [Mengubah data dengan JSONata](transforming-data.md).

Objek Context adalah struktur JSON internal yang tersedia selama eksekusi, dan berisi informasi tentang mesin dan eksekusi status Anda. Konteks memberikan informasi alur kerja Anda tentang eksekusi spesifiknya. Alur kerja Anda dapat mereferensikan objek Context dalam JSONata ekspresi dengan`$states.context`.

## Mengakses objek Context
<a name="contextobject-access"></a>

**Untuk mengakses objek Context di JSONata**

Untuk mengakses objek Context dalam JSONata status, gunakan `$states.context` dalam JSONata ekspresi. 

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

**Untuk mengakses objek Context di JSONPath**

Untuk mengakses objek Context di JSONPath, pertama-tama Anda menambahkan `.$` ke akhir kunci untuk menunjukkan nilainya adalah jalur. Kemudian, tambahkan nilai dengan `$$.` untuk memilih node di objek Context.

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

JSONPath negara dapat merujuk ke konteks (`$$.`) dari JSONPath bidang-bidang berikut:
+ `InputPath`
+ `OutputPath`
+ `ItemsPath` (di status Peta)
+ `Variable` (di status Pilihan)
+ `ResultSelector`
+ `Parameters`
+ Operator perbandingan variabel ke variabel

## Bidang objek konteks
<a name="contextobject-format"></a>

Objek Context mencakup informasi tentang state machine, state, execution, dan task. Objek Context JSON mencakup node untuk setiap jenis data dalam format berikut:

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

Selama eksekusi, objek Context diisi dengan data yang relevan. 

Kadang-kadang, bidang baru ditambahkan ke konteks. Jika Anda memproses konteks JSON secara langsung, kami sarankan membuat kode yang dapat menangani bidang baru yang tidak dikenal dengan anggun. Misalnya, jika menggunakan pustaka Jackson untuk unmarshalling JSON, sebaiknya setel `FAIL_ON_UNKNOWN_PROPERTIES` ke `false` in your `ObjectMapper` untuk mencegah file. `UnrecognizedPropertyException`

 `RedriveTime`Objek konteks hanya tersedia jika Anda redriven memiliki eksekusi. Jika sudah [redriven a Map Run](redrive-map-run.md), objek `RedriveTime` konteks hanya tersedia untuk alur kerja anak dari tipe Standard. Untuk redriven Map Run dengan alur kerja turunan tipe Express, `RedriveTime` tidak tersedia.

Konten dari eksekusi yang sedang berjalan mencakup spesifikasi dalam format berikut: 

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

**Format stempel waktu dengan detik pecahan**  
Step Functions mengikuti ISO8601 spesifikasi yang menyatakan bahwa output bisa nol, tiga, enam atau sembilan digit yang diperlukan. Ketika stempel waktu memiliki nol detik pecahan, Step Functions menghapus angka nol yang tertinggal daripada melapisi output.   
Jika Anda membuat kode yang menggunakan stempel waktu Step Functions, kode Anda harus dapat memproses sejumlah variabel detik pecahan.

## Data objek konteks untuk status Peta
<a name="contextobject-map"></a>

**Mengelola status dan mengubah data**  
Pelajari tentang [Melewati data antar status dengan variabel](workflow-variables.md) dan [Mengubah data dengan JSONata](transforming-data.md).

Saat memproses [`Map`status](state-map.md), konteksnya juga akan berisi`Index`,`Value`, dan`Source`. 

Untuk setiap iterasi `Map` status, `Index` berisi nomor indeks untuk item array yang sedang diproses, `Value` berisi item array yang sedang diproses, dan `Source` akan menjadi InputType dari`CSV`,, `JSON``JSONL`, atau`PARQUET`.

Dalam `Map` keadaan, objek Context mencakup data berikut:

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

Ini hanya tersedia di `Map` negara bagian, dan dapat ditentukan di `ItemSelector (Peta)` lapangan.

**catatan**  
Anda harus menentukan parameter dari objek Konteks di `ItemSelector` blok `Map` negara bagian utama, bukan dalam status yang termasuk dalam `ItemProcessor` bagian.

Mengingat mesin status menggunakan **JSONPath**`Map`status, Anda dapat menyuntikkan informasi dari objek Context sebagai berikut.

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

Untuk JSONata, informasi konteks status Peta tambahan dapat diakses dari `$states.context` variabel:

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



Jika Anda mengeksekusi mesin status sebelumnya dengan input berikut, `Index` dan `Value` dimasukkan dalam output.

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

Output untuk eksekusi mengembalikan nilai `Index` dan `Value` item untuk masing-masing dari tiga iterasi sebagai berikut:

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

Perhatikan bahwa `$states.context.Map.Item.Source` akan menjadi salah satu dari berikut ini:
+ Untuk input status, nilainya adalah: `STATE_DATA`
+ Untuk `Amazon S3 LIST_OBJECTS_V2` with`Transformation=NONE`, nilainya akan menampilkan URI S3 untuk bucket. Sebagai contoh: `S3://bucket-name`. 
+ Untuk semua jenis input lainnya, nilainya adalah URI Amazon S3. Misalnya: `S3://bucket-name/object-key`.