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
Mengelola status dan mengubah data
Pelajari tentang Melewati data antar status dengan variabel dan Mengubah data dengan JSONata.
Secara default, Map status berjalan dalam mode Inline. Dalam mode Inline, status Peta hanya menerima array JSON 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.
MapStatus 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 dengan Peta Inline.
Daftar Isi
Konsep kunci dalam topik ini
- Modus sebaris
-
Mode konkurensi terbatas dari negara.
MapDalam mode ini, setiap iterasiMapstatus berjalan dalam konteks alur kerja yang berisi status.MapStep Functions menambahkan riwayat eksekusi iterasi ini ke riwayat eksekusi alur kerja induk.Mapstatus berjalan dalam mode Inline secara default.Mode ini hanya menerima array JSON sebagai input dan mendukung hingga 40 iterasi bersamaan.
- Status Peta Sebaris
-
MapStatus diatur ke mode Inline. - Alur kerja peta
Kumpulan langkah-langkah yang dijalankan oleh
Mapstate untuk setiap iterasi.- Iterasi status peta
-
Pengulangan alur kerja yang didefinisikan di dalam negara.
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 objek JSON berikut yang menentukan mode pemrosesan
Mapstatus dan definisi.Definisi tersebut berisi serangkaian langkah yang harus diulang untuk memproses setiap item array.
-
ProcessorConfig— Objek JSON opsional yang menentukan mode pemrosesan untuk negara.MapObjek ini berisiModesub-bidang. Bidang ini default keINLINE, yang menggunakanMapstatus dalam mode Inline.Dalam mode ini, kegagalan iterasi apa pun menyebabkan
Mapstatus gagal. Semua iterasi berhenti ketikaMapstatus 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 keMapstatus akan diteruskan keStartAtstatus terlebih dahulu.-
States— Objek JSON yang berisi kumpulan status yang dibatasi koma. Dalam objek ini, Anda mendefinisikanMap workflow.catatan
-
Negara-negara di
ItemProcessorlapangan hanya dapat bertransisi satu sama lain. Tidak ada negara di luarItemProcessorlapangan yang dapat beralih ke keadaan di dalamnya. -
ItemProcessorBidang menggantikan bidang yang sekarang tidak digunakan lagi.IteratorMeskipun Anda dapat terus menyertakanMapstatus yang menggunakanIteratorbidang ini, kami sangat menyarankan Anda mengganti bidang ini denganItemProcessor.Step Functions Local saat ini tidak mendukung
ItemProcessorbidang. Kami menyarankan Anda menggunakanIteratorbidang dengan Step Functions Local.
-
-
Items(Opsional, JSONata hanya)-
Sebuah array JSON atau JSONata ekspresi yang harus mengevaluasi ke array.
ItemsPath(Opsional, JSONPath hanya)-
Menentukan jalur referensi menggunakan JsonPath
sintaks. Path ini memilih node JSON yang berisi array item di dalam input status. Untuk informasi selengkapnya, lihat ItemsPath (Peta, JSONPath hanya). ItemSelector(Opsional)-
Mengganti nilai item array input sebelum diteruskan ke setiap iterasi
Mapstatus.Di bidang ini, Anda menentukan JSON valid 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).
ItemSelectorBidang menggantikan bidang yang sekarang tidak digunakan lagi.ParametersMeskipun Anda dapat terus menyertakanMapstatus yang menggunakanParametersbidang ini, kami sangat menyarankan Anda mengganti bidang ini denganItemSelector. -
MaxConcurrency(Opsional)-
Menentukan nilai integer yang menyediakan batas atas pada jumlah iterasi
Mapnegara yang dapat berjalan secara paralel. Misalnya,MaxConcurrencynilai 10 membatasiMapstatus menjadi 10 iterasi bersamaan yang berjalan pada satu waktu.Di JSONata negara bagian, Anda dapat menentukan JSONata ekspresi yang mengevaluasi ke bilangan bulat.
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.MaxConcurrencyNilai dari1memanggilItemProcessorsekali 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, JSONPath hanya)-
Jika Anda ingin memberikan nilai konkurensi maksimum secara dinamis dari input status menggunakan jalur referensi, gunakan.
MaxConcurrencyPathKetika diselesaikan, jalur referensi harus memilih bidang yang nilainya adalah bilangan bulat non-negatif.catatan
Suatu
Mapnegara tidak dapat mencakup keduanyaMaxConcurrencydanMaxConcurrencyPath. ResultPath(Opsional, JSONPath hanya)-
Menentukan di mana dalam input untuk menyimpan output dari iterasi
Mapnegara. 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, JSONPath hanya)-
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 Contoh mesin negara menggunakan Coba Ulang dan Tangkap.
catatan
Jika Anda mendefinisikan Retrier untuk status Peta Sebaris, kebijakan coba lagi berlaku untuk semua iterasi
Mapstatus, bukan hanya iterasi yang gagal. Misalnya,Mapstatus Anda berisi dua iterasi yang berhasil dan satu iterasi gagal. Jika Anda telah menentukanRetrybidang untukMapstatus, kebijakan coba lagi berlaku untuk ketiga iterasiMapstatus, 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.
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.
AssignBidang menerima objek JSON dengan key/value pasangan yang mendefinisikan 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.
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 objek JSON yang mendefinisikan satu set langkah-langkah yang memproses setiap elemen 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 Inline () JSONPath
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 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:account-id: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
}
Setelah selesai, output status Map adalah array JSON, saat setiap item adalah output dari perulangan. 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:region:account-id:function:ship-val",
"End": true
}
}
},
"End": true
}
ItemSelectorBlok 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. MapStatus 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 sebuah Map negara harus menyertakan array JSON. MapStatus 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. MapStatus menerapkan jalur ini ke input efektif setelah menerapkanInputPath. ItemsPathHarus mengidentifikasi bidang yang nilainya adalah array JSON.
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.
Setelah selesai, output status Map adalah array JSON, saat setiap item adalah output dari perulangan.
Untuk informasi selengkapnya tentang input dan output status Peta Inline, lihat berikut ini: