Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan status Peta dalam mode Inline dalam alur kerja Step Functions
Secara default, Map
status berjalan dalam mode Inline. Dalam mode Inline, status Peta hanya menerima JSON array sebagai input. Ia menerima array ini dari langkah sebelumnya dalam alur kerja. Dalam mode ini, setiap iterasi Map
status berjalan dalam konteks alur kerja yang berisi status. Map
Step Functions menambahkan riwayat eksekusi iterasi ini ke riwayat eksekusi alur kerja induk.
Dalam mode ini, Map
status mendukung hingga 40 iterasi bersamaan.
Map
Status yang disetel ke Inline dikenal sebagai status Peta Inline. Gunakan Map
status dalam mode Inline jika riwayat eksekusi alur kerja Anda tidak akan melebihi 25.000 entri, atau jika Anda tidak memerlukan lebih dari 40 iterasi bersamaan.
Untuk pengantar menggunakan status Inline Map, lihat tutorialnyaUlangi tindakan menggunakan status Peta Inline.
Daftar Isi
Konsep kunci dalam topik ini
- Modus sebaris
-
Mode konkurensi terbatas dari negara.
Map
Dalam mode ini, setiap iterasiMap
status berjalan dalam konteks alur kerja yang berisi status.Map
Step Functions menambahkan riwayat eksekusi iterasi ini ke riwayat eksekusi alur kerja induk.Map
status berjalan dalam mode Inline secara default.Mode ini hanya menerima JSON array sebagai input dan mendukung hingga 40 iterasi bersamaan.
- Status Peta Sebaris
-
Map
Status diatur ke mode Inline. - Alur kerja peta
Kumpulan langkah-langkah yang dijalankan oleh
Map
state untuk setiap iterasi.- Iterasi status peta
-
Pengulangan alur kerja yang didefinisikan di dalam negara bagian.
Map
Bidang status Peta Inline
Untuk menggunakan status Peta Sebaris dalam alur kerja Anda, tentukan satu atau beberapa bidang ini. Anda menentukan bidang ini selain bidang status umum.
Type
(Wajib)-
Menetapkan jenis negara, seperti
Map
. ItemProcessor
(Wajib)-
Berisi JSON objek berikut yang menentukan mode dan definisi pemrosesan
Map
status.Definisi tersebut berisi serangkaian langkah yang harus diulang untuk memproses setiap item array.
-
ProcessorConfig
— JSON Objek opsional yang menentukan mode pemrosesan untukMap
negara. Objek ini berisiMode
sub-bidang. Bidang ini default keINLINE
, yang menggunakanMap
status dalam mode Inline.Dalam mode ini, kegagalan iterasi apa pun menyebabkan
Map
status gagal. Semua iterasi berhenti ketikaMap
status gagal.
StartAt
- Menentukan string yang menunjukkan keadaan pertama dalam alur kerja. String ini peka huruf besar/kecil dan harus cocok dengan nama salah satu objek state. Status ini berjalan pertama kali untuk setiap item dalam kumpulan data. Masukan eksekusi apa pun yang Anda berikan keMap
status akan diteruskan keStartAt
status terlebih dahulu.-
States
— JSON Objek yang berisi sekumpulan status yang dibatasi koma. Dalam objek ini, Anda mendefinisikanMap workflow.catatan
-
Negara-negara di
ItemProcessor
lapangan hanya dapat bertransisi satu sama lain. Tidak ada negara bagian di luarItemProcessor
lapangan yang dapat beralih ke keadaan di dalamnya. -
ItemProcessor
Bidang menggantikan bidang yang sekarang tidak digunakan lagi.Iterator
Meskipun Anda dapat terus menyertakanMap
status yang menggunakanIterator
bidang ini, kami sangat menyarankan Anda mengganti bidang ini denganItemProcessor
.Step Functions Local saat ini tidak mendukung
ItemProcessor
bidang. Kami menyarankan Anda menggunakanIterator
bidang dengan Step Functions Local.
-
-
ItemsPath
(Opsional)-
Menentukan jalur referensi menggunakan JsonPath
sintaks. Path ini memilih JSON node yang berisi array item di dalam input status. Untuk informasi selengkapnya, lihat ItemsPath (Peta). ItemSelector
(Opsional)-
Mengganti nilai item array input sebelum diteruskan ke setiap iterasi
Map
status.Di bidang ini, Anda menentukan valid JSON yang berisi kumpulan pasangan kunci-nilai. Pasangan ini dapat berisi salah satu dari berikut ini:
-
Nilai statis yang Anda tentukan dalam definisi mesin status Anda.
-
Nilai yang dipilih dari input status menggunakan jalur.
-
Nilai diakses dari objek konteks.
Untuk informasi selengkapnya, lihat ItemSelector (Peta).
ItemSelector
Bidang menggantikan bidang yang sekarang tidak digunakan lagi.Parameters
Meskipun Anda dapat terus menyertakanMap
status yang menggunakanParameters
bidang ini, kami sangat menyarankan Anda mengganti bidang ini denganItemSelector
. -
MaxConcurrency
(Opsional)-
Menentukan nilai integer yang menyediakan batas atas pada jumlah iterasi
Map
negara yang dapat berjalan secara paralel. Misalnya,MaxConcurrency
nilai 10 membatasiMap
status menjadi 10 iterasi bersamaan yang berjalan pada satu waktu.catatan
Perulangan bersamaan mungkin terbatas. Ketika ini terjadi, beberapa iterasi tidak akan dimulai sampai iterasi sebelumnya selesai. Kemungkinan hal ini terjadi meningkat ketika array input Anda memiliki lebih dari 40 item.
Untuk mencapai konkurensi yang lebih tinggi, pertimbangkanMode terdistribusi.
Nilai defaultnya adalah
0
, yang tidak membatasi konkurensi. Step Functions memanggil iterasi serempak mungkin.MaxConcurrency
Nilai dari1
memanggilItemProcessor
sekali untuk setiap elemen array. Item dalam array diproses dalam urutan penampilan mereka dalam input. Step Functions tidak memulai iterasi baru sampai menyelesaikan iterasi sebelumnya. MaxConcurrencyPath
(Opsional)-
Jika Anda ingin memberikan nilai konkurensi maksimum secara dinamis dari input status menggunakan jalur referensi, gunakan.
MaxConcurrencyPath
Ketika diselesaikan, jalur referensi harus memilih bidang yang nilainya adalah bilangan bulat non-negatif.catatan
Suatu
Map
negara tidak dapat mencakup keduanyaMaxConcurrency
danMaxConcurrencyPath
. ResultPath
(Opsional)-
Menentukan di mana di input untuk menyimpan output dari iterasi
Map
negara. Status Peta kemudian menyaring input seperti yang ditentukan oleh OutputPathbidang, jika ditentukan. Kemudian, ia menggunakan input yang difilter sebagai output negara. Untuk informasi selengkapnya, lihat Pemrosesan Input dan Output. ResultSelector
(Opsional)-
Lewati kumpulan pasangan nilai kunci, di mana nilainya statis atau dipilih dari hasilnya. Untuk informasi selengkapnya, lihat ResultSelector.
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.
Retry
(Opsional)-
Array objek, yang disebut Retriers, yang mendefinisikan kebijakan coba lagi. Status menggunakan kebijakan coba lagi ketika mereka menemukan kesalahan runtime. Untuk informasi selengkapnya, lihat Nyatakan contoh mesin menggunakan Coba Ulang dan menggunakan Catch.
catatan
Jika Anda mendefinisikan Retrier untuk status Peta Sebaris, kebijakan coba lagi berlaku untuk semua iterasi
Map
status, bukan hanya iterasi yang gagal. Misalnya,Map
status Anda berisi dua iterasi yang berhasil dan satu iterasi gagal. Jika Anda telah menentukanRetry
bidang untukMap
status, kebijakan coba lagi berlaku untuk ketiga iterasiMap
status, bukan hanya iterasi yang gagal. Catch
(Opsional)-
Array objek, disebut Catch yang menentukan status fallback. Status menjalankan penangkap jika mereka mengalami kesalahan runtime dan tidak memiliki kebijakan coba lagi, atau kebijakan coba ulang mereka habis. Untuk informasi selengkapnya, lihat Status Fallback.
Bidang usang
catatan
Meskipun Anda dapat terus menyertakan Map
status yang menggunakan bidang berikut, kami sangat menyarankan Anda mengganti Iterator
dengan ItemProcessor
dan Parameters
denganItemSelector
.
-
Iterator
-
Menentukan JSON objek yang mendefinisikan satu set langkah-langkah yang memproses setiap elemen dari array.
Parameters
-
Menentukan koleksi pasangan kunci-nilai, di mana nilai-nilai dapat berisi salah satu dari berikut:
-
Nilai statis yang Anda tentukan dalam definisi mesin status Anda.
-
Nilai yang dipilih dari input menggunakan jalur.
-
Contoh status Peta Sebaris
Pertimbangkan data input berikut untuk Map
status yang berjalan dalam mode Inline.
{
"ship-date": "2016-03-14T01:59:00Z",
"detail": {
"delivery-partner": "UQS",
"shipped": [
{ "prod": "R31", "dest-code": 9511, "quantity": 1344 },
{ "prod": "S39", "dest-code": 9511, "quantity": 40 },
{ "prod": "R31", "dest-code": 9833, "quantity": 12 },
{ "prod": "R40", "dest-code": 9860, "quantity": 887 },
{ "prod": "R40", "dest-code": 9511, "quantity": 1220 }
]
}
}
Mengingat masukan sebelumnya, Map
status dalam contoh berikut memanggil AWS Lambda fungsi bernama ship-val
sekali untuk setiap item dari array di shipped
bidang.
"Validate All": {
"Type": "Map",
"InputPath": "$.detail",
"ItemProcessor": {
"ProcessorConfig": {
"Mode": "INLINE"
},
"StartAt": "Validate",
"States": {
"Validate": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:ship-val:$LATEST
"
},
"End": true
}
}
},
"End": true,
"ResultPath": "$.detail.shipped",
"ItemsPath": "$.shipped"
}
Setiap iterasi Map
status mengirimkan item dalam array, dipilih dengan ItemsPathbidang, sebagai input ke fungsi ship-val
Lambda. Nilai-nilai berikut adalah contoh masukan yang dikirimkan Map
status ke pemanggilan fungsi Lambda:
{
"prod": "R31",
"dest-code": 9511,
"quantity": 1344
}
Ketika selesai, output dari Map
status adalah JSON array, di mana setiap item adalah output dari iterasi. Dalam hal ini, array ini berisi output dari fungsi ship-val
Lambda.
Contoh status Peta Sebaris dengan ItemSelector
Misalkan fungsi ship-val
Lambda pada contoh sebelumnya juga membutuhkan informasi tentang kurir pengiriman. Informasi ini merupakan tambahan untuk item dalam array untuk setiap iterasi. Anda dapat menyertakan informasi dari input, bersama dengan informasi khusus untuk iterasi Map
status saat ini. Perhatikan ItemSelector
bidang dalam contoh berikut:
"Validate-All": {
"Type": "Map",
"InputPath": "$.detail",
"ItemsPath": "$.shipped",
"MaxConcurrency": 0,
"ResultPath": "$.detail.shipped",
"ItemSelector": {
"parcel.$": "$$.Map.Item.Value",
"courier.$": "$.delivery-partner"
},
"ItemProcessor": {
"StartAt": "Validate",
"States": {
"Validate": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:ship-val",
"End": true
}
}
},
"End": true
}
ItemSelector
Blok menggantikan input ke iterasi dengan node. JSON Node ini berisi data item saat ini dari objek konteks dan informasi kurir dari delivery-partner
bidang input Map
status. Berikut ini adalah contoh input ke iterasi tunggal. Map
Status meneruskan input ini ke pemanggilan fungsi Lambdaship-val
.
{
"parcel": {
"prod": "R31",
"dest-code": 9511,
"quantity": 1344
},
"courier": "UQS"
}
Dalam contoh status Peta Inline sebelumnya, ResultPath
bidang menghasilkan output dalam format yang sama dengan input. Namun, ia menimpa detail.shipped
bidang dengan array di mana setiap elemen adalah output dari setiap pemanggilan Lambda ship-val
iterasi.
Untuk informasi selengkapnya tentang penggunaan status Peta Sebaris dan bidangnya, lihat berikut ini.
Pemrosesan input dan output Map
status sebaris
Untuk Map
status tertentu, InputPathpilih subset dari masukan negara.
Masukan dari suatu Map
negara harus mencakup JSON array. Map
Status menjalankan ItemProcessor
bagian satu kali untuk setiap item dalam array. Jika Anda menentukan ItemsPathbidang, Map
status memilih di mana di input untuk menemukan array untuk diulang. Jika tidak ditentukan, nilai ItemsPath
berupa $
, dan bagian ItemProcessor
berharap agar array adalah satu-satunya input. Jika Anda menentukan ItemsPath
bidang, nilainya harus berupa Jalur Referensi. Map
Status menerapkan jalur ini ke input efektif setelah menerapkanInputPath
. ItemsPath
Harus mengidentifikasi bidang yang nilainya adalah JSON array.
Masukan untuk setiap iterasi, secara default, adalah elemen tunggal dari bidang array yang diidentifikasi oleh ItemsPath
nilai. Anda dapat mengganti nilai ini dengan ItemSelector (Peta)
bidang.
Ketika selesai, output dari Map
status adalah JSON array, di mana setiap item adalah output dari iterasi.
Untuk informasi selengkapnya tentang input dan output status Peta Inline, lihat berikut ini: