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
Mengelola status dan mengubah data
Pelajari tentang Melewati data antar status dengan variabel dan Mengubah data dengan JSONata.
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
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 berikut:
-
InputPath -
OutputPath -
ItemsPath(di status Peta) -
Variable(di status Pilihan) -
ResultSelector -
Parameters -
Operator perbandingan variabel ke variabel
Bidang objek konteks
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
RedriveTimeObjek konteks hanya tersedia jika Anda redriven memiliki eksekusi. Jika sudah redriven a Map Run, 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 spesifikasi ISO86 01 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
Mengelola status dan mengubah data
Pelajari tentang Melewati data antar status dengan variabel dan Mengubah data dengan JSONata.
Saat memproses Mapstatus, konteksnya juga akan berisiIndex,Value, danSource.
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 dariCSV,, JSONJSONL, atauPARQUET.
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 JSONPathMapstatus, 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_V2withTransformation=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.