Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fungsi intrinsik untuk JSONPath status di Step Functions
Mengelola status dan mengubah data
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.
Awas
Fungsi intrinsik hanya tersedia untuk negara yang menggunakan bahasa JSONPathkueri. Untuk JSONata, lihat Mengubah data dengan Step JSONata Functions.
Amazon States Language menyediakan beberapa fungsi intrinsik, juga dikenal sebagai intrinsik, untuk digunakan dalam bidang yang menerima. JSONPath Dengan intrinsik, Anda dapat melakukan operasi pemrosesan data dasar tanpa menggunakan status. Task
Intrinsik terlihat mirip dengan fungsi dalam bahasa pemrograman. Mereka dapat digunakan untuk membantu pembangun payload memproses data yang masuk ke dan dari Resource
bidang Task
status yang menggunakan bahasa JSONPath kueri.
Di Amazon States Language, fungsi intrinsik dikelompokkan ke dalam kategori berikut, berdasarkan jenis tugas pemrosesan data yang ingin Anda lakukan:
Untuk menggunakan fungsi intrinsik, Anda harus menentukan .$
nilai kunci dalam definisi mesin status Anda, seperti yang ditunjukkan pada contoh berikut:
"KeyId.$": "States.Array
($.Id)"
Anda dapat membuat sarang hingga 10 fungsi intrinsik dalam bidang dalam alur kerja Anda. Contoh berikut menunjukkan bidang bernama
yang mencakup sembilan fungsi intrinsik bersarang:myArn
"myArn.$
": "States.Format('{}.{}.{}', States.ArrayGetItem(States.StringSplit(States.ArrayGetItem(States.StringSplit($.ImageRecipe.Arn
, '/'), 2), '.'), 0), States.ArrayGetItem(States.StringSplit(States.ArrayGetItem(States.StringSplit($.ImageRecipe.Arn
, '/'), 2), '.'), 1))"
QueryLanguage diperlukan untuk fungsi intrinsik
Untuk menggunakan fungsi intrinsik, mesin negara harus menggunakan bahasa JSONPathkueri.
Status yang menggunakan JSONata tidak dapat menggunakan fungsi intrinsik; namun, JSONata dan Step Functions menyediakan opsi yang setara.
Bidang yang mendukung fungsi intrinsik
Negara-negara berikut mendukung fungsi intrinsik di bidang berikut:
-
Status lulus: Parameter
-
Status tugas: Parameter, ResultSelector, Kredensial
-
Keadaan paralel: Parameter, ResultSelector
-
Status peta: Parameter, ResultSelector
Intrinsik untuk array
Gunakan intrinsik berikut untuk melakukan manipulasi array.
States.Array
-
Fungsi
States.Array
intrinsik membutuhkan nol atau lebih argumen. Interpreter mengembalikan JSON array yang berisi nilai-nilai argumen dalam urutan yang disediakan. Misalnya, diberikan input berikut:{ "Id": 123456 }
Anda dapat menggunakan
"BuildId.$": "States.Array($.Id)"
Yang akan mengembalikan hasil berikut:
“BuildId”: [123456]
States.ArrayPartition
-
Gunakan fungsi
States.ArrayPartition
intrinsik untuk mempartisi array besar. Anda juga dapat menggunakan intrinsik ini untuk mengiris data dan kemudian mengirim muatan dalam potongan yang lebih kecil.Fungsi intrinsik ini membutuhkan dua argumen. Argumen pertama adalah array, sedangkan argumen kedua mendefinisikan ukuran potongan. Interpreter memotong array input menjadi beberapa array dari ukuran yang ditentukan oleh ukuran chunk. Panjang potongan array terakhir mungkin kurang dari panjang potongan array sebelumnya jika jumlah item yang tersisa dalam array lebih kecil dari ukuran potongan.
Validasi masukan
-
Anda harus menentukan array sebagai nilai masukan untuk argumen pertama fungsi.
-
Anda harus menentukan bilangan bulat positif bukan nol untuk argumen kedua yang mewakili nilai ukuran potongan.
Jika Anda menentukan nilai non-integer untuk argumen kedua, Step Functions akan membulatkannya ke integer terdekat.
-
Array input tidak dapat melebihi batas ukuran muatan Step Functions sebesar 256 KiB.
Misalnya, diberikan array input berikut:
{"inputArray": [1,2,3,4,5,6,7,8,9] }
Anda dapat menggunakan
States.ArrayPartition
fungsi untuk membagi array menjadi potongan-potongan dari empat nilai:"inputArray.$": "States.ArrayPartition($.inputArray,4)"
Yang akan mengembalikan potongan array berikut:
{"inputArray": [ [1,2,3,4], [5,6,7,8], [9]] }
Pada contoh sebelumnya,
States.ArrayPartition
fungsi menampilkan tiga array. Dua array pertama masing-masing berisi empat nilai, seperti yang didefinisikan oleh ukuran potongan. Array ketiga berisi nilai yang tersisa dan lebih kecil dari ukuran potongan yang ditentukan. -
States.ArrayContains
-
Gunakan fungsi
States.ArrayContains
intrinsik untuk menentukan apakah nilai tertentu hadir dalam array. Misalnya, Anda dapat menggunakan fungsi ini untuk mendeteksi jika ada kesalahan dalam iterasiMap
status.Fungsi intrinsik ini membutuhkan dua argumen. Argumen pertama adalah array, sedangkan argumen kedua adalah nilai yang akan dicari dalam array.
Validasi masukan
-
Anda harus menentukan array sebagai nilai masukan untuk argumen pertama fungsi ini.
Anda harus menentukan JSON objek yang valid sebagai argumen kedua.
-
Array input tidak dapat melebihi batas ukuran muatan Step Functions sebesar 256 KiB.
Misalnya, diberikan array input berikut:
{ "inputArray": [1,2,3,4,5,6,7,8,9], "lookingFor": 5 }
Anda dapat menggunakan
States.ArrayContains
fungsi untuk menemukanlookingFor
nilai dalaminputArray
:"contains.$": "States.ArrayContains($.inputArray, $.lookingFor)"
Karena nilai yang
lookingFor
disimpan dalam termasuk dalaminputArray
,States.ArrayContains
mengembalikan hasil sebagai berikut:{"contains": true }
-
States.ArrayRange
-
Gunakan fungsi
States.ArrayRange
intrinsik untuk membuat array baru yang berisi berbagai elemen tertentu. Array baru dapat berisi hingga 1000 elemen.Fungsi ini membutuhkan tiga argumen. Argumen pertama adalah elemen pertama dari array baru, argumen kedua adalah elemen akhir dari array baru, dan argumen ketiga adalah nilai kenaikan antara unsur-unsur dalam array baru.
Validasi masukan
-
Anda harus menentukan nilai integer untuk semua argumen.
Jika Anda menentukan nilai non-integer untuk salah satu argumen, Step Functions akan membulatkannya ke integer terdekat.
-
Anda harus menentukan nilai bukan nol untuk argumen ketiga.
-
Array yang baru dihasilkan tidak dapat berisi lebih dari 1000 item.
Misalnya, penggunaan
States.ArrayRange
fungsi berikut akan membuat array dengan nilai pertama 1, nilai akhir 9, dan nilai di antara nilai pertama dan akhir meningkat dua untuk setiap item:"array.$": "States.ArrayRange(1, 9, 2)"
Yang akan mengembalikan array berikut:
{"array": [1,3,5,7,9] }
-
States.ArrayGetItem
-
Fungsi intrinsik ini mengembalikan nilai indeks tertentu. Fungsi ini membutuhkan dua argumen. Argumen pertama adalah array nilai dan argumen kedua adalah indeks array dari nilai untuk kembali.
Misalnya, gunakan yang berikut
inputArray
danindex
nilai:{ "inputArray": [1,2,3,4,5,6,7,8,9], "index": 5 }
Dari nilai-nilai ini, Anda dapat menggunakan
States.ArrayGetItem
fungsi untuk mengembalikan nilai diindex
posisi 5 dalam array:"item.$": "States.ArrayGetItem($.inputArray, $.index)"
Dalam contoh ini,
States.ArrayGetItem
akan mengembalikan hasil sebagai berikut:{ "item": 6 }
States.ArrayLength
-
Fungsi
States.ArrayLength
intrinsik mengembalikan panjang array. Ini memiliki satu argumen, array untuk mengembalikan panjang.Misalnya, diberikan array input berikut:
{ "inputArray": [1,2,3,4,5,6,7,8,9] }
Anda dapat menggunakan
States.ArrayLength
untuk mengembalikan panjanginputArray
:"length.$": "States.ArrayLength($.inputArray)"
Dalam contoh ini,
States.ArrayLength
akan mengembalikan JSON objek berikut yang mewakili panjang array:{ "length": 9 }
States.ArrayUnique
-
Fungsi
States.ArrayUnique
intrinsik menghapus nilai duplikat dari array dan mengembalikan array yang hanya berisi elemen unik. Fungsi ini mengambil array, yang dapat unsorted, sebagai argumen tunggal.Misalnya, berikut ini
inputArray
berisi serangkaian nilai duplikat:{"inputArray": [1,2,3,3,3,3,3,3,4] }
Anda dapat menggunakan
States.ArrayUnique
fungsi sebagai dan menentukan array yang ingin Anda hapus nilai duplikat dari:"array.$": "States.ArrayUnique($.inputArray)"
States.ArrayUnique
Fungsi akan mengembalikan array berikut yang hanya berisi elemen unik, menghapus semua nilai duplikat:{"array": [1,2,3,4] }
Intrinsik untuk pengkodean dan decoding data
Gunakan fungsi intrinsik berikut untuk menyandikan atau memecahkan kode data berdasarkan skema pengkodean Base64.
States.Base64Encode
-
Gunakan fungsi
States.Base64Encode
intrinsik untuk menyandikan data berdasarkan skema pengkodean MIME Base64. Anda dapat menggunakan fungsi ini untuk meneruskan data ke AWS layanan lain tanpa menggunakan AWS Lambda fungsi.Fungsi ini mengambil string data hingga 10.000 karakter untuk dikodekan sebagai satu-satunya argumen.
Misalnya, pertimbangkan
input
string berikut:{"input": "Data to encode" }
Anda dapat menggunakan
States.Base64Encode
fungsi untuk menyandikaninput
string sebagai string MIME Base64:"base64.$": "States.Base64Encode($.input)"
States.Base64Encode
Fungsi mengembalikan data dikodekan berikut sebagai tanggapan:{"base64": "RGF0YSB0byBlbmNvZGU=" }
States.Base64Decode
-
Gunakan fungsi
States.Base64Decode
intrinsik untuk memecahkan kode data berdasarkan skema decoding MIME Base64. Anda dapat menggunakan fungsi ini untuk meneruskan data ke AWS layanan lain tanpa menggunakan fungsi Lambda.Fungsi ini mengambil string data yang dikodekan Base64 hingga 10.000 karakter untuk memecahkan kode sebagai satu-satunya argumen.
Misalnya, diberikan input berikut:
{"base64": "RGF0YSB0byBlbmNvZGU=" }
Anda dapat menggunakan
States.Base64Decode
fungsi untuk memecahkan kode string base64 ke string yang dapat dibaca manusia:"data.$": "States.Base64Decode($.base64)"
Ini
States.Base64Decode function
akan mengembalikan data yang diterjemahkan berikut sebagai tanggapan:{"data": "Decoded data" }
Intrinsik untuk perhitungan hash
States.Hash
-
Gunakan fungsi
States.Hash
intrinsik untuk menghitung nilai hash dari input yang diberikan. Anda dapat menggunakan fungsi ini untuk meneruskan data ke AWS layanan lain tanpa menggunakan fungsi Lambda.Fungsi ini membutuhkan dua argumen. Argumen pertama adalah data yang ingin Anda hitung nilai hash. Argumen kedua adalah algoritma hashing yang digunakan untuk melakukan perhitungan hash. Data yang Anda berikan harus berupa string objek yang berisi 10.000 karakter atau kurang.
Algoritma hashing yang Anda tentukan dapat berupa salah satu algoritma berikut:
-
MD5
-
SHA-1
-
SHA-256
-
SHA-384
-
SHA-512
Misalnya, Anda dapat menggunakan fungsi ini untuk menghitung nilai hash
Data
string menggunakan yang ditentukanAlgorithm
:{ "Data": "input data", "Algorithm": "SHA-1" }
Anda dapat menggunakan
States.Hash
fungsi untuk menghitung nilai hash:"output.$": "States.Hash($.Data, $.Algorithm)"
States.Hash
Fungsi mengembalikan nilai hash berikut sebagai tanggapan:{"output": "aaff4a450a104cd177d28d18d7485e8cae074b7" }
-
Intrinsik untuk manipulasi data JSON
Gunakan fungsi-fungsi ini untuk melakukan operasi pemrosesan data dasar pada JSON objek.
States.JsonMerge
-
Gunakan fungsi
States.JsonMerge
intrinsik untuk menggabungkan dua JSON objek menjadi satu objek. Fungsi ini membutuhkan tiga argumen. Dua argumen pertama adalah JSON objek yang ingin Anda gabungkan. Argumen ketiga adalah nilai boolean dari.false
Nilai boolean ini menentukan apakah mode penggabungan mendalam diaktifkan.Saat ini, Step Functions hanya mendukung mode penggabungan dangkal; oleh karena itu, Anda harus menentukan nilai boolean sebagai.
false
Dalam mode dangkal, jika kunci yang sama ada di kedua JSON objek, kunci objek yang terakhir mengganti kunci yang sama di objek pertama. Selain itu, objek yang bersarang di dalam JSON objek tidak digabungkan saat Anda menggunakan penggabungan dangkal.Misalnya, Anda dapat menggunakan
States.JsonMerge
fungsi untuk menggabungkan JSON objek berikut yang berbagi kuncia
.{ "json1": { "a": {"a1": 1, "a2": 2}, "b": 2 }, "json2": { "a": {"a3": 1, "a4": 2}, "c": 3 } }
Anda dapat menentukan objek json1 dan json2 sebagai input dalam
States.JsonMerge
fungsi untuk menggabungkannya:"output.$": "States.JsonMerge($.json1, $.json2, false)"
States.JsonMerge
Mengembalikan JSON objek digabungkan berikut sebagai hasilnya. Dalam JSON objek gabunganoutput
, kuncijson2
objeka
menggantikan kuncijson1
objek.a
Juga, objek bersarang di kuncijson1
objek dibuanga
karena mode dangkal tidak mendukung penggabungan objek bersarang.{ "output": { "a": {"a3": 1, "a4": 2}, "b": 2, "c": 3 } }
-
States.StringToJson
-
States.StringToJson
Fungsi mengambil jalur referensi ke JSON string yang lolos sebagai satu-satunya argumen.Interpreter menerapkan JSON parser dan mengembalikan formulir JSON parsed input. Misalnya, Anda dapat menggunakan fungsi ini untuk melarikan diri dari string input berikut:
{ "escapedJsonString": "{\"foo\": \"bar\"}" }
Gunakan
States.StringToJson
fungsi dan tentukanescapedJsonString
sebagai argumen masukan:States.StringToJson($.escapedJsonString)
States.StringToJson
Fungsi mengembalikan hasil sebagai berikut:{ "foo": "bar" }
-
States.JsonToString
-
States.JsonToString
Fungsi ini hanya membutuhkan satu argumen, yaitu jalur yang berisi JSON data untuk dikembalikan sebagai string unescaped. Interpreter mengembalikan string yang berisi JSON teks yang mewakili data yang ditentukan oleh Path. Misalnya, Anda dapat memberikan JSON Path berikut yang berisi nilai escaped:{ "unescapedJson": { "foo": "bar" } }
Berikan
States.JsonToString
fungsi dengan data yang terkandung di dalamunescapedJson
:States.JsonToString($.unescapedJson)
States.JsonToString
Fungsi mengembalikan respon berikut:{\"foo\": \"bar\"}
Intrinsik untuk operasi Matematika
Gunakan fungsi-fungsi ini untuk melakukan operasi Matematika.
States.MathRandom
-
Gunakan fungsi
States.MathRandom
intrinsik untuk mengembalikan angka acak antara nomor awal yang ditentukan (inklusif) dan nomor akhir (eksklusif).Anda dapat menggunakan fungsi ini untuk mendistribusikan tugas tertentu antara dua atau lebih sumber daya.
Fungsi ini membutuhkan tiga argumen. Argumen pertama adalah nomor awal, argumen kedua adalah nomor akhir, dan argumen terakhir mengontrol nilai seed opsional, Perhatikan bahwa jika Anda menggunakan fungsi ini dengan nilai seed yang sama, itu akan mengembalikan angka identik.
penting
Karena
States.MathRandom
fungsi ini tidak mengembalikan angka acak yang aman secara kriptografis, kami menyarankan Anda untuk tidak menggunakannya untuk aplikasi yang sensitif terhadap keamanan.Validasi masukan
-
Anda harus menentukan nilai integer untuk nomor awal dan argumen nomor akhir.
Jika Anda menentukan nilai non-integer untuk nomor awal atau argumen nomor akhir, Step Functions akan membulatkannya ke bilangan bulat terdekat.
Misalnya, untuk menghasilkan angka acak antara satu dan 999, Anda dapat menggunakan nilai input berikut:
{ "start": 1, "end": 999 }
Untuk menghasilkan angka acak, berikan
start
danend
nilai keStates.MathRandom
fungsi:"random.$": "States.MathRandom($.start, $.end)"
States.MathRandom
Fungsi mengembalikan nomor acak berikut sebagai respon:{"random": 456 }
-
States.MathAdd
-
Gunakan fungsi
States.MathAdd
intrinsik untuk mengembalikan jumlah dua angka. Misalnya, Anda dapat menggunakan fungsi ini untuk menambah nilai di dalam loop tanpa menjalankan fungsi Lambda.Validasi masukan
-
Anda harus menentukan nilai integer untuk semua argumen.
Jika Anda menentukan nilai non-integer untuk salah satu atau kedua argumen, Step Functions akan membulatkannya ke integer terdekat.
-
Anda harus menentukan nilai integer dalam kisaran -2147483648 dan 2147483647.
Misalnya, Anda dapat menggunakan nilai berikut untuk mengurangi satu dari 111:
{ "value1": 111, "step": -1 }
Kemudian, gunakan
States.MathAdd
fungsi yang mendefinisikanvalue1
sebagai nilai awal, danstep
sebagai nilai untuk bertambah dengan:value1
"value1.$": "States.MathAdd($.value1, $.step)"
States.MathAdd
Fungsi akan mengembalikan nomor berikut sebagai tanggapan:{"value1": 110 }
-
Intrinsik untuk operasi String
States.StringSplit
-
Gunakan fungsi
States.StringSplit
intrinsik untuk membagi string menjadi array nilai. Fungsi ini membutuhkan dua argumen. Argumen pertama adalah string dan argumen kedua adalah karakter pembatas yang akan digunakan fungsi untuk membagi string.contoh - Membagi string input menggunakan karakter pembatas tunggal
Untuk contoh ini, gunakan
States.StringSplit
untuk membagi berikut iniinputString
, yang berisi serangkaian nilai yang dipisahkan koma:{ "inputString": "1,2,3,4,5", "splitter": "," }
Gunakan
States.StringSplit
fungsi dan definisikaninputString
sebagai argumen pertama, dan karakter pembatassplitter
sebagai argumen kedua:"array.$": "States.StringSplit($.inputString, $.splitter)"
States.StringSplit
Fungsi mengembalikan array string berikut sebagai hasilnya:{"array": ["1","2","3","4","5"] }
contoh - Membagi string input menggunakan beberapa karakter pembatas
Untuk contoh ini, gunakan
States.StringSplit
untuk membagi berikut iniinputString
, yang berisi beberapa karakter pembatas:{ "inputString": "This.is+a,test=string", "splitter": ".+,=" }
Gunakan
States.StringSplit
fungsi sebagai berikut:{ "myStringArray.$": "States.StringSplit($.inputString, $.splitter)" }
States.StringSplit
Fungsi mengembalikan array string berikut sebagai hasilnya:{"myStringArray": [ "This", "is", "a", "test", "string" ]}
Intrinsik untuk pembuatan pengenal unik
States.UUID
-
Gunakan fungsi
States.UUID
intrinsik untuk mengembalikan pengidentifikasi unik universal versi 4 (v4UUID) yang dihasilkan menggunakan angka acak. Misalnya, Anda dapat menggunakan fungsi ini untuk memanggil AWS layanan atau sumber daya lain yang memerlukan UUID parameter atau menyisipkan item dalam tabel DynamoDB.States.UUID
Fungsi ini dipanggil tanpa argumen yang ditentukan:"uuid.$": "States.UUID()"
Fungsi mengembalikan dihasilkan secara acakUUID, seperti dalam contoh berikut:
{"uuid": "ca4c1140-dcc1-40cd-ad05-7b4aa23df4a8" }
Intrinsik untuk operasi generik
States.Format
-
Gunakan fungsi
States.Format
intrinsik untuk membangun string dari nilai literal dan interpolasi. Fungsi ini membutuhkan satu atau lebih argumen. Nilai argumen pertama harus berupa string, dan mungkin termasuk nol atau lebih contoh dari urutan{}
karakter. Harus ada banyak argumen yang tersisa dalam pemanggilan fungsi intrinsik seperti halnya kemunculan.{}
Interpreter mengembalikan string didefinisikan dalam argumen pertama dengan masing-masing{}
diganti dengan nilai argumen yang sesuai secara posisi dalam pemanggilan Intrinsik.Misalnya, Anda dapat menggunakan masukan berikut dari individu
name
, dantemplate
kalimat untuk memasukkan nama mereka ke:{ "name": "Arnav", "template": "Hello, my name is {}." }
Gunakan
States.Format
fungsi dan tentukantemplate
string dan string untuk disisipkan sebagai pengganti{}
karakter:States.Format('Hello, my name is {}.', $.name)
atau
States.Format($.template, $.name)
Dengan salah satu input sebelumnya,
States.Format
fungsi mengembalikan string selesai sebagai tanggapan:Hello, my name is Arnav.
Karakter yang disimpan dalam fungsi intrinsik
Karakter berikut disimpan untuk fungsi intrinsik, dan harus dihilangkan dengan garis miring terbalik ('\') jika Anda ingin karakter tersebut muncul di Nilai: ' { }, dan \.
Jika karakter \
perlu muncul sebagai bagian dari nilai tanpa berfungsi sebagai karakter pelarian, Anda harus menghindarinya dengan garis miring terbalik. Urutan karakter yang diloloskan berikut digunakan dengan fungsi intrinsik:
String literal
\'
menunjukkan'
.String literal
\{
menunjukkan{
.String literal
\}
menunjukkan}
.String literal
\\
menunjukkan\
.
DalamJSON, garis miring terbalik yang terkandung dalam nilai literal string harus diloloskan dengan garis miring terbalik lainnya. Daftar yang setara untuk JSON adalah:
-
String
\\\'
yang hilang menunjukkan\'
. -
String
\\\{
yang hilang menunjukkan\{
. -
String
\\\}
yang hilang menunjukkan\}
. -
String
\\\\
yang hilang menunjukkan\\
.
catatan
Jika garis miring terbalik \
escape terbuka ditemukan di string pemanggilan intrinsik, penerjemah akan mengembalikan kesalahan runtime.
Anda harus menggunakan notasi kurung siku untuk Path yang diteruskan sebagai argumen ke Fungsi Intrinsik jika nama bidang berisi karakter apa pun yang tidak termasuk dalam member-name-shorthand
definisi aturan. JsonPath ABNF_
, Anda harus menggunakan notasi kurung siku. Misalnya, $.abc.['def ghi']
.