Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menentukan output status menggunakan alur kerja ResultPath Step Functions
Output dari suatu status dapat menjadi salinan inputnya, hasilnya menghasilkan (misalnya, output dari fungsi Lambda status Task
), atau kombinasi dari input dan hasilnya. Gunakan ResultPath
untuk kombinasi mana dari ini yang diteruskan ke output status.
Tipe negara berikut dapat menghasilkan hasil dan dapat mencakup ResultPath:
Gunakan ResultPath
untuk menggabungkan hasil tugas dengan input tugas, atau untuk memilih salah satu dari ini. Jalan yang Anda berikan untuk ResultPath
mengontrol informasi apa yang diteruskan ke output.
catatan
ResultPath
terbatas untuk menggunakan jalur referensi, yang membatasi ruang lingkup sehingga hanya dapat mengidentifikasi satu node diJSON. Lihat Jalur Referensi di Bahasa Status Amazon.
Contoh-contoh ini didasarkan pada mesin status dan fungsi Lambda yang dijelaskan dalam tutorial Membuat mesin status Step Functions yang menggunakan Lambda. Bekerja melalui tutorial itu dan menguji output yang berbeda dengan mencoba berbagai jalur dalam bidang ResultPath
.
Gunakan ResultPath untuk:
Gunakan ResultPath untuk Mengganti Input dengan Hasil
Jika Anda tidak menentukan ResultPath
, perilaku default adalah seolah-olah Anda telah menentukan "ResultPath": "$"
. Karena hal ini memberitahu status untuk mengganti seluruh input dengan hasil, input status benar-benar digantikan oleh hasil yang berasal dari hasil tugas.
Diagram berikut menunjukkan bagaimana ResultPath
benar-benar dapat mengganti input dengan hasil tugas.
Gunakan mesin status dan fungsi Lambda yang dijelaskan dalamMembuat mesin status Step Functions yang menggunakan Lambda, dan ubah jenis integrasi layanan menjadi AWS SDKintegrasi untuk fungsi Lambda. Untuk melakukan ini, tentukan fungsi Lambda Amazon Resource Name (ARN) di Resource
bidang Task
status seperti yang ditunjukkan pada contoh berikut. Menggunakan AWS SDK integrasi memastikan bahwa hasil Task
status hanya berisi output fungsi Lambda tanpa metadata apa pun.
{
"StartAt":"CallFunction",
"States":{
"CallFunction": {
"Type":"Task",
"Resource":"arn:aws:lambda:us-east-2:123456789012:function:HelloFunction",
"End": true
}
}
}
Kemudian, berikan masukan berikut:
{ "comment": "This is a test of the input and output of a Task state.", "details": "Default example", "who": "AWS Step Functions" }
Fungsi Lambda memberikan hasil sebagai berikut.
"Hello, AWS Step Functions!"
Tip
Anda dapat melihat hasil ini di Step Functions konsol
Jika ResultPath
tidak dispesifikasikan di status, atau jika "ResultPath":
"$"
diatur, input status digantikan oleh hasil fungsi Lambda, dan output status adalah sebagai berikut.
"Hello, AWS Step Functions!"
catatan
ResultPath
digunakan untuk memasukkan konten dari hasil dengan input, sebelum meneruskannya ke output. Tapi, jika ResultPath
tidak ditentukan, default-nya adalah mengganti seluruh input.
Buang Hasil dan Simpan Input Asli
Jika Anda mengatur ResultPath
ke null
, itu akan meneruskan input asli ke output. Menggunakan "ResultPath": null
, muatan input status akan disalin langsung ke output, tanpa memperhatikan hasilnya.
Diagram berikut menunjukkan bagaimana ResultPath
null akan menyalin input langsung ke output.
Gunakan ResultPath untuk Menyertakan Hasil dengan Input
Diagram berikut menunjukkan bagaimana ResultPath
dapat menyertakan hasilnya dengan input.
Menggunakan mesin status dan fungsi Lambda dijelaskan dalam tutorial Membuat mesin status Step Functions yang menggunakan Lambda, kita bisa meneruskan input berikut.
{ "comment": "This is a test of the input and output of a Task state.", "details": "Default example", "who": "AWS Step Functions" }
Hasil dari fungsi Lambda adalah sebagai berikut.
"Hello, AWS Step Functions!"
Untuk mempertahankan input, masukkan hasil fungsi Lambda, dan kemudian meneruskan gabungan JSON ke status berikutnya, kita bisa mengatur ResultPath
ke berikut ini.
"ResultPath": "$.taskresult"
Ini termasuk hasil dari fungsi Lambda dengan input asli.
{ "comment": "This is a test of input and output of a Task state.", "details": "Default behavior example", "who": "AWS Step Functions", "taskresult": "Hello, AWS Step Functions!" }
Output dari fungsi Lambda ditambahkan ke input asli sebagai nilai untuk taskresult
. Input, termasuk nilai yang baru dimasukkan, diteruskan ke status berikutnya.
Anda juga dapat memasukkan hasilnya ke simpul anak dari input. Atur ResultPath
ke hal berikut.
"ResultPath": "$.strings.lambdaresult"
Mulai eksekusi menggunakan input berikut.
{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz" }, "who": "AWS Step Functions" }
Hasil dari fungsi Lambda dimasukkan sebagai anak dari simpul strings
dalam input.
{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz", "lambdaresult": "Hello, AWS Step Functions!" }, "who": "AWS Step Functions" }
Output status sekarang menyertakan input asli JSON dengan hasil sebagai simpul anak.
Gunakan ResultPath untuk Memperbarui Node di Input dengan Hasil
Diagram berikut menunjukkan bagaimana ResultPath
dapat memperbarui nilai JSON node yang ada di input dengan nilai-nilai dari hasil tugas.
Menggunakan contoh mesin status dan fungsi Lambda yang dijelaskan dalam tutorial Membuat mesin status Step Functions yang menggunakan Lambda, kita bisa meneruskan input berikut.
{ "comment": "This is a test of the input and output of a Task state.", "details": "Default example", "who": "AWS Step Functions" }
Hasil dari fungsi Lambda adalah sebagai berikut.
Hello, AWS Step Functions!
Alih-alih melestarikan input dan memasukkan hasilnya sebagai node baru diJSON, kita dapat menimpa node yang ada.
Sebagai contoh, sama seperti menghilangkan atau menetapkan "ResultPath": "$"
yang menimpa seluruh simpul, Anda dapat menentukan simpul individu untuk menimpa dengan hasilnya.
"ResultPath": "$.comment"
Karena simpul comment
sudah ada di input status, mengatur ResultPath
ke "$.comment"
menggantikan simpul di input dengan hasil dari fungsi Lambda. Tanpa pemfilteran lebih lanjut oleh OutputPath
, berikut ini diteruskan ke output.
{ "comment": "Hello, AWS Step Functions!", "details": "Default behavior example", "who": "AWS Step Functions", }
Nilai untuk simpul comment
, "This is a test of the input and output
of a Task state."
, digantikan oleh hasil fungsi Lambda: "Hello, AWS
Step Functions!"
dalam output status.
Gunakan ResultPath untuk Menyertakan Kesalahan dan Input dalam Catch
Tutorial Menangani kondisi kesalahan menggunakan mesin status Step Functions ini menunjukkan cara menggunakan mesin status untuk menangkap kesalahan. Dalam beberapa kasus, Anda mungkin ingin mempertahankan input asli dengan kesalahan. Gunakan ResultPath
dalam Catch
untuk memasukkan kesalahan dengan input asli, bukan menggantikannya.
"Catch": [{ "ErrorEquals": ["States.ALL"], "Next": "NextTask", "ResultPath": "$.error" }]
Jika pernyataan Catch
sebelumnya menangkap kesalahan, pernyataan itu mencakup hasil dalam simpul error
dalam input status. Sebagai contoh, dengan input berikut:
{"foo": "bar"}
Output status saat menangkap kesalahan adalah sebagai berikut.
{ "foo": "bar", "error": { "Error": "
Error here
" } }
Untuk informasi selengkapnya tentang penanganan kesalahan, lihat hal berikut: