Menentukan output status menggunakan alur kerja ResultPath 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.

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

ResultPathterbatas 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 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.

Ganti input dengan ResultPath.

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. Untuk melakukan ini, pada halaman Detail Eksekusi konsol, pilih Lambda fungsi dalam tampilan Grafik. Kemudian, pilih Output tab di Detail langkah panel untuk melihat hasil ini.

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.

Salin Input ke Output dengan ResultPath.

Gunakan ResultPath untuk Menyertakan Hasil dengan Input

Diagram berikut menunjukkan bagaimana ResultPath dapat menyertakan hasilnya dengan input.

Sertakan masukan dengan ResultPath

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.

Ganti input dengan ResultPath

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: