Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mengelola status dan mengubah data
Halaman ini mengacu pada JSONPath. Step Functions baru-baru ini menambahkan variabel dan JSONata untuk mengelola status dan mengubah data.
Pelajari tentang Melewati data dengan variabel dan Mengubah data dengan JSONata.
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 jalur harus mengidentifikasi hanya satu simpul di JSON. Lihat Jalur Referensi di Bahasa Status Amazon.
Gunakan ResultPath untuk mengganti input dengan hasil tugas
Jika Anda tidak menentukanResultPath
, perilaku defaultnya sama dengan"ResultPath": "$"
. Negara akan mengganti seluruh input status dengan hasil dari tugas.
# State Input
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
# Path
"ResultPath": "$"
# Task result
"Hello, Step Functions!"
# State Output
"Hello, Step Functions!"
catatan
ResultPath
digunakan untuk memasukkan konten dari hasil dengan input, sebelum meneruskannya ke output. Tapi, jika ResultPath
tidak ditentukan, tindakan defaultnya adalah mengganti seluruh input.
Buang hasilnya dan simpan input asli
Jika Anda mengatur ResultPath
kenull
, status akan meneruskan input asli ke output. Muatan masukan negara akan disalin langsung ke output, tanpa memperhatikan hasil tugas.
# State Input
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
# Path
"ResultPath": null
# Task result
"Hello, Step Functions!"
# State Output
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
Gunakan ResultPath untuk memasukkan hasil dengan input
Jika Anda menentukan jalur untuk ResultPath, output status akan menggabungkan input status dan hasil tugas:
# State Input
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
# Path
"ResultPath": "$.taskresult"
# Task result
"Hello, Step Functions!"
# State Output
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions",
"taskresult" : "Hello, Step Functions!"
}
Anda juga dapat memasukkan hasilnya ke simpul anak dari input. Atur ResultPath
ke hal berikut.
"ResultPath": "$.strings.lambdaresult"
Diberikan masukan berikut:
{
"comment": "An input comment.",
"strings": {
"string1": "foo",
"string2": "bar",
"string3": "baz"
},
"who": "AWS Step Functions"
}
Hasil tugas akan dimasukkan sebagai anak dari strings
node di input.
{
"comment": "An input comment.",
"strings": {
"string1": "foo",
"string2": "bar",
"string3": "baz",
"lambdaresult": "Hello, Step Functions!"
},
"who": "AWS Step Functions"
}
Output status sekarang termasuk input asli JSON dengan hasil sebagai simpul anak.
Gunakan ResultPath untuk memperbarui node di input dengan hasilnya
Jika Anda menentukan node yang ada untuk ResultPath, hasil tugas akan menggantikan node yang ada:
# State Input
{
"comment": "This is a test",
"details": "Default example",
"who" : "Step Functions"
}
# Path
"ResultPath": "$.comment"
# Task result
"Hello, Step Functions!"
# State Output
{
"comment": "Hello, Step Functions!",
"details": "Default example",
"who" : "Step Functions"
}
Gunakan ResultPath untuk memasukkan kesalahan dan masukan dalam Catch
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: