Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Objek konteks
Objek konteks adalah struktur JSON internal yang tersedia selama eksekusi, dan berisi informasi tentang mesin dan eksekusi status Anda. Hal ini mengizinkan alur kerja Anda mengakses informasi tentang eksekusi spesifiknya. Anda dapat mengakses objek konteks dari bidang-bidang berikut:
-
InputPath
-
OutputPath
-
ItemsPath
(di status Peta) -
Variable
(di status Pilihan) -
ResultSelector
Parameters
-
Operator perbandingan variabel ke variabel
Format Objek Konteks
Objek konteks mencakup informasi tentang mesin status, status, eksekusi, dan tugas. Objek JSON ini mencakup simpul untuk setiap tipe 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 konteks diisi dengan data yang relevan untuk bidang Parameters
dari asalnya diakses. Nilai untuk bidang Task
adalah null jika bidang Parameters
di luar status tugas.
Nilai objek RedriveCount
konteks adalah 0, jika Anda belum redriveneksekusi. Selanjutnya, objek RedriveTime
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 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 status Map
, lihat Data Objek Konteks untuk Status Peta.
Mengakses Obyek Konteks
Untuk mengakses objek konteks, pertama tentukan nama parameter dengan menambahkan .$
sampai akhir, seperti yang Anda lakukan saat memilih input status dengan jalur. Kemudian, untuk mengakses data objek konteks bukan input, tambahkan jalur dengan $$.
. Ini memberitahu AWS Step Functions untuk menggunakan jalur untuk memilih node dalam objek konteks.
Contoh berikut menunjukkan bagaimana Anda dapat mengakses objek konteks, seperti ID eksekusi, nama, waktu mulai, dan redrive hitungan.
Mengambil dan meneruskan eksekusi ARN ke layanan hilir
Contoh status Tugas ini menggunakan jalur untuk mengambil dan meneruskan eksekusi Amazon Resource Name (ARN) ke Amazon Simple Queue Service (Amazon SQS) pesan.
{
"Order Flight Ticket Queue": {
"Type": "Task",
"Resource": "arn:aws:states:::sqs:sendMessage",
"Parameters": {
"QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/flight-purchase",
"MessageBody": {
"From": "YVR",
"To": "SEA",
"Execution.$": "$$.Execution.Id"
}
},
"Next": "NEXT_STATE"
}
}
Untuk informasi selengkapnya tentang menggunakan token tugas saat memanggil layanan terpadu, lihat Tunggu Panggilan Balik dengan Token Tugas.
Akses waktu mulai eksekusi dan nama dalam status Pass
{ "Comment": "Accessing context object in a state machine", "StartAt": "Get execution context data", "States": { "Get execution context data": { "Type": "Pass", "Parameters": { "startTime.$": "$$.Execution.StartTime", "execName.$": "$$.Execution.Name" }, "ResultPath": "$.executionContext", "End": true } } }
Akses redrive hitungan eksekusi
Contoh definisi status Tugas berikut menunjukkan bagaimana Anda dapat mengakses redrivehitungan eksekusi.
{ "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload": {
"Number.$": "$$.Execution.RedriveCount"
}, "FunctionName": "arn:aws:lambda:us-east-2
:123456789012
:function:functionName
" }, "End": true }
Data Objek Konteks untuk Status Peta
Ada dua item tambahan yang tersedia dalam objek konteks ketika memproses status Map: Index
dan Value
. 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 konteks mencakup data berikut:
"Map": {
"Item": {
"Index": Number
,
"Value": "String
"
}
}
Ini hanya tersedia di Map
negara bagian, dan dapat ditentukan di ItemSelector
lapangan.
catatan
Anda harus menentukan parameter dari objek konteks di blok ItemSelector
dari status Map
utama, tidak dalam status yang termasuk dalam bagian ItemProcessor
.
Mengingat mesin status dengan status Map
sederhana, kita dapat menyuntikkan informasi dari objek konteks 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"
}
}
]