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
Step Functions baru-baru ini menambahkan variabel dan JSONata untuk mengelola status dan mengubah data.
Pelajari tentang Melewati data dengan variabel dan Mengubah data dengan JSONata.
Objek Context adalah JSON struktur internal yang tersedia selama eksekusi, dan berisi informasi tentang mesin dan eksekusi status Anda. Konteksnya 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 diJSONPath, 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"
}
JSONPathnegara 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
Objek Context mencakup informasi tentang state machine, state, execution, dan task. JSONObjek ini mencakup node untuk setiap jenis data, dan 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. RedriveTime
Objek konteks hanya tersedia jika Anda redriven sebuah eksekusi. Jika Anda sudah redriven a Map Run, objek RedriveTime
konteks hanya tersedia untuk alur kerja anak dari tipe Standar. Untuk a redriven Map Run dengan alur kerja anak tipe Express, RedriveTime
tidak tersedia.
Konten dari eksekusi yang berjalan termasuk spesifik dalam format berikut.
{
"Execution": {
"Id": "arn:aws:states:us-east-1:123456789012:execution:stateMachineName:executionName",
"Input": {
"key": "value"
},
"Name": "executionName",
"RoleArn": "arn:aws:iam::123456789012:role...",
"StartTime": "2019-03-26T20:14:13.192Z"
},
"State": {
"EnteredTime": "2019-03-26T20:14:13.192Z",
"Name": "Test",
"RetryCount": 3
},
"StateMachine": {
"Id": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName",
"Name": "stateMachineName"
},
"Task": {
"Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W"
}
}
catatan
Untuk data objek Konteks yang terkait dengan Map
status, lihatData objek konteks untuk status Peta.
Data objek konteks untuk status Peta
Mengelola status dan mengubah data
Step Functions baru-baru ini menambahkan variabel dan JSONata untuk mengelola status dan mengubah data.
Pelajari tentang Melewati data dengan variabel dan Mengubah data dengan JSONata.
Ada dua item tambahan yang tersedia di objek Context saat memproses Mapstatus: Index
danValue
. Untuk setiap iterasi Map
status, Index
berisi nomor indeks untuk item array yang sedang diproses, sementara Value
berisi item array yang sedang diproses. Dalam Map
keadaan, objek Context mencakup data berikut:
"Map": {
"Item": {
"Index": Number
,
"Value": "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" }, "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"
}
},
{
"ContextIndex": 1,
"ContextValue": {
"who": "meg"
}
},
{
"ContextIndex": 2,
"ContextValue": {
"who": "joe"
}
}
]