Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Status alur kerja paralel
Mengelola status dan mengubah data
Pelajari tentang Melewati data antar status dengan variabel dan Mengubah data dengan JSONata.
Parallel
State ("Type": "Parallel"
) dapat digunakan untuk menambahkan cabang eksekusi terpisah di mesin negara Anda.
Selain bidang status umum, status Parallel
memperkenalkan bidang tambahan ini.
-
Branches
(Wajib) -
Array objek yang menentukan mesin status untuk mengeksekusi secara paralel. Setiap objek mesin status tersebut harus memiliki bidang dengan nama
States
danStartAt
, yang maknanya persis seperti yang ada di tingkat atas mesin status. Parameters
(Opsional, JSONPath hanya)-
Digunakan untuk meneruskan informasi ke mesin negara yang didefinisikan dalam
Branches
array. Arguments
(Opsional, JSONata hanya)-
Digunakan untuk menyampaikan informasi ke tindakan API dari sumber daya yang terhubung. Nilai dapat mencakup JSONata ekspresi. Untuk informasi selengkapnya, lihat Mengubah data dengan Step JSONata Functions.
Output
(Opsional, JSONata hanya)-
Digunakan untuk menentukan dan mengubah output dari negara. Ketika ditentukan, nilai mengesampingkan default output status.
Bidang output menerima nilai JSON apa pun (objek, array, string, angka, boolean, null). Nilai string apa pun, termasuk yang ada di dalam objek atau array, akan dievaluasi JSONata seolah-olah dikelilingi oleh karakter {%%}.
Output juga menerima JSONata ekspresi secara langsung, misalnya: “Output”: “{% jsonata expression%}”
Untuk informasi selengkapnya, lihat Mengubah data dengan Step JSONata Functions.
-
Assign
(Opsional) -
Digunakan untuk menyimpan variabel.
Assign
Bidang menerima objek JSON dengan pasangan kunci/nilai yang menentukan nama variabel dan nilai yang ditetapkan. Nilai string apa pun, termasuk yang ada di dalam objek atau array, akan dievaluasi seperti JSONata ketika dikelilingi oleh karakter{% %}
Untuk informasi selengkapnya, lihat Melewati data antar negara bagian dengan variabel.
-
ResultPath
(Opsional, JSONPath hanya) -
Menentukan tempat (dalam input) untuk meletakkan output cabang. Input kemudian difilter sebagaimana ditentukan oleh bidang
OutputPath
(jika ada) sebelum digunakan sebagai output status. Untuk informasi selengkapnya, lihat Pemrosesan Input dan Output. -
ResultSelector
(Opsional, JSONPath hanya) -
Teruskan koleksi pasangan nilai kunci, tempat nilai-nilai bersifat statis atau dipilih dari hasil. Untuk informasi selengkapnya, lihat ResultSelector.
-
Retry
(Opsional) -
Array objek, yang disebut Retriers, yang menentukan kebijakan percobaan ulang jika status menemukan kesalahan waktu aktif. Untuk informasi selengkapnya, lihat Nyatakan contoh mesin menggunakan Coba Ulang dan menggunakan Catch.
-
Catch
(Opsional) -
Array objek, yang disebut Catcher, yang menentukan status fallback yang dijalankan jika status menemukan kesalahan waktu aktif dan kebijakan percobaan ulang habis atau tidak ditentukan. Untuk informasi selengkapnya, lihat Status Fallback.
Sebuah Parallel
status menyebabkan AWS Step Functions untuk mengeksekusi setiap cabang, dimulai dengan status yang disebutkan di StartAt
bidang cabang itu, serentetan mungkin, dan menunggu sampai semua cabang berakhir (mencapai status terminal) sebelum memproses bidang Parallel
status. Next
Contoh Status Paralel
{ "Comment": "Parallel Example.", "StartAt": "LookupCustomerInfo", "States": { "LookupCustomerInfo": { "Type": "Parallel", "End": true, "Branches": [ { "StartAt": "LookupAddress", "States": { "LookupAddress": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:AddressFinder", "End": true } } }, { "StartAt": "LookupPhone", "States": { "LookupPhone": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:PhoneFinder", "End": true } } } ] } } }
Dalam contoh ini, cabang LookupAddress
dan LookupPhone
dieksekusi secara paralel. Berikut adalah bagaimana alur kerja visual terlihat di konsol Step Functions.

Setiap cabang harus mandiri. Status di cabang status Parallel
tidak boleh memiliki bidang Next
yang menargetkan sebuah bidang di luar cabang tersebut, begitu pula status lain di luar cabang tidak boleh bertransisi ke cabang tersebut.
Pemrosesan Input dan Output Status Paralel
Status Parallel
menyediakan setiap cabang dengan salinan data inputnya sendiri (tunduk pada modifikasi oleh bidang InputPath
). Ini menghasilkan output yang merupakan array dengan satu elemen untuk setiap cabang, yang berisi output dari cabang tersebut. Tidak ada persyaratan bahwa semua elemen harus dengan tipe yang sama. Array output dapat dimasukkan ke dalam data input (dan seluruhnya dikirim sebagai output status Parallel
) dengan menggunakan bidang ResultPath
dengan cara umum (lihat Pemrosesan Input dan Output).
{ "Comment": "Parallel Example.", "StartAt": "FunWithMath", "States": { "FunWithMath": { "Type": "Parallel", "End": true, "Branches": [ { "StartAt": "Add", "States": { "Add": { "Type": "Task", "Resource": "arn:aws:states:us-east-1:123456789012:activity:Add", "End": true } } }, { "StartAt": "Subtract", "States": { "Subtract": { "Type": "Task", "Resource": "arn:aws:states:us-east-1:123456789012:activity:Subtract", "End": true } } } ] } } }
Jika status FunWithMath
diberikan array [3, 2]
sebagai input, maka kedua status Add
dan Subtract
menerima array tersebut sebagai masukan. Output dari Subtract
tugas Add
dan akan menjadi jumlah dan perbedaan antara elemen array 3 dan 2, yaitu 5
dan1
, sedangkan output dari Parallel
keadaan akan menjadi array.
[ 5, 1 ]
Tip
Jika status Paralel atau Peta yang Anda gunakan di mesin status Anda mengembalikan array array, Anda dapat mengubahnya menjadi array datar dengan ResultSelector bidang. Untuk informasi selengkapnya, lihat Meratakan array array.
Penanganan Kesalahan
Jika setiap cabang gagal karena kesalahan tidak tertangani atau dengan transisi ke status Fail
, seluruh status Parallel
dianggap telah gagal dan semua cabangnya dihentikan. Jika kesalahan tidak ditangani oleh status Parallel
itu sendiri, Step Functions menghentikan eksekusi dengan kesalahan.
catatan
Ketika status paralel gagal, fungsi Lambda Invoke terus berjalan dan pekerja aktivitas yang memproses token tugas tidak dihentikan.
-
Untuk menghentikan aktivitas yang berjalan lama, gunakan heartbeat untuk mendeteksi apakah cabangnya telah dihentikan oleh Step Functions, dan menghentikan pekerja yang memproses tugas. Memanggil
SendTaskHeartbeat
,SendTaskSuccess
, atauSendTaskFailure
akan mengembalikan kesalahan jika status telah gagal. Lihat Kesalahan Heartbeat. -
Menjalankan fungsi Lambda tidak dapat dihentikan. Jika Anda telah menerapkan fallback, gunakan status
Wait
sehingga pekerjaan pembersihan terjadi setelah fungsi Lambda telah selesai.