Mengakses data eksekusi dari objek Context di Step Functions - AWS Step Functions

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" } } ]