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
Pelajari tentang Melewati data antar status dengan variabel dan Mengubah data dengan JSONata.
Awas
Fungsi intrinsik hanya tersedia untuk negara yang menggunakan bahasa JSONPathkueri. Untuk JSONata, lihatMengubah 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.Arrayintrinsik membutuhkan nol atau lebih argumen. Interpreter mengembalikan array JSON 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 sebagai berikut:
“BuildId”: [123456] States.ArrayPartition-
Gunakan fungsi
States.ArrayPartitionintrinsik 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.ArrayPartitionfungsi 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.ArrayPartitionfungsi tersebut mengeluarkan 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.ArrayContainsintrinsik untuk menentukan apakah nilai tertentu hadir dalam array. Misalnya, Anda dapat menggunakan fungsi ini untuk mendeteksi jika ada kesalahan dalam iterasiMapstatus.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 objek JSON 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.ArrayContainsfungsi untuk menemukanlookingFornilai dalaminputArray:"contains.$": "States.ArrayContains($.inputArray, $.lookingFor)"Karena nilai yang
lookingFordisimpan dalam termasuk dalaminputArray,States.ArrayContainsmengembalikan hasil sebagai berikut:{"contains": true } -
States.ArrayRange-
Gunakan fungsi
States.ArrayRangeintrinsik 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.ArrayRangefungsi 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
inputArraydanindexnilai:{ "inputArray": [1,2,3,4,5,6,7,8,9], "index": 5 }Dari nilai-nilai ini, Anda dapat menggunakan
States.ArrayGetItemfungsi untuk mengembalikan nilai diindexposisi 5 dalam array:"item.$": "States.ArrayGetItem($.inputArray, $.index)"Dalam contoh ini,
States.ArrayGetItemakan mengembalikan hasil sebagai berikut:{ "item": 6 } States.ArrayLength-
Fungsi
States.ArrayLengthintrinsik 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.ArrayLengthuntuk mengembalikan panjanginputArray:"length.$": "States.ArrayLength($.inputArray)"Dalam contoh ini,
States.ArrayLengthakan mengembalikan objek JSON berikut yang mewakili panjang array:{ "length": 9 } States.ArrayUnique-
Fungsi
States.ArrayUniqueintrinsik 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
inputArrayberisi serangkaian nilai duplikat:{"inputArray": [1,2,3,3,3,3,3,3,4] }Anda dapat menggunakan
States.ArrayUniquefungsi sebagai dan menentukan array yang ingin Anda hapus nilai duplikat dari:"array.$": "States.ArrayUnique($.inputArray)"States.ArrayUniqueFungsi 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.Base64Encodeintrinsik 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
inputstring berikut:{"input": "Data to encode" }Anda dapat menggunakan
States.Base64Encodefungsi untuk menyandikaninputstring sebagai string MIME Base64:"base64.$": "States.Base64Encode($.input)"States.Base64EncodeFungsi mengembalikan data dikodekan berikut sebagai tanggapan:{"base64": "RGF0YSB0byBlbmNvZGU=" } States.Base64Decode-
Gunakan fungsi
States.Base64Decodeintrinsik 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.Base64Decodefungsi untuk memecahkan kode string base64 ke string yang dapat dibaca manusia:"data.$": "States.Base64Decode($.base64)"Ini
States.Base64Decode functionakan mengembalikan data yang diterjemahkan berikut sebagai tanggapan:{"data": "Decoded data" }
Intrinsik untuk perhitungan hash
States.Hash-
Gunakan fungsi
States.Hashintrinsik 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
Datastring menggunakan yang ditentukanAlgorithm:{ "Data": "input data", "Algorithm": "SHA-1" }Anda dapat menggunakan
States.Hashfungsi untuk menghitung nilai hash:"output.$": "States.Hash($.Data, $.Algorithm)"States.HashFungsi mengembalikan nilai hash berikut sebagai tanggapan:{"output": "aaff4a450a104cd177d28d18d7485e8cae074b7" } -
Intrinsik untuk manipulasi data JSON
Gunakan fungsi-fungsi ini untuk melakukan operasi pengolahan data dasar pada objek JSON.
States.JsonMerge-
Gunakan fungsi
States.JsonMergeintrinsik untuk menggabungkan dua objek JSON menjadi satu objek. Fungsi ini membutuhkan tiga argumen. Dua argumen pertama adalah objek JSON yang ingin Anda gabungkan. Argumen ketiga adalah nilai boolean dari.falseNilai 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.
falseDalam mode dangkal, jika kunci yang sama ada di kedua objek JSON, kunci objek terakhir mengganti kunci yang sama di objek pertama. Selain itu, objek yang bersarang di dalam objek JSON tidak digabungkan saat Anda menggunakan penggabungan dangkal.Misalnya, Anda dapat menggunakan
States.JsonMergefungsi untuk menggabungkan objek JSON berikut yang berbagi kunci.a{ "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.JsonMergefungsi untuk menggabungkannya:"output.$": "States.JsonMerge($.json1, $.json2, false)"States.JsonMergeMengembalikan objek JSON digabungkan berikut sebagai hasilnya. Dalam objek JSON yang digabungkanoutput, kuncijson2objekamenggantikan kuncijson1objek.aJuga, objek bersarang di kuncijson1objek dibuangakarena mode dangkal tidak mendukung penggabungan objek bersarang.{ "output": { "a": {"a3": 1, "a4": 2}, "b": 2, "c": 3 } } -
States.StringToJson -
States.StringToJsonFungsi ini mengambil jalur referensi ke string JSON yang lolos sebagai satu-satunya argumen.Interpreter menerapkan parser JSON dan mengembalikan formulir JSON masukan yang diurai. Misalnya, Anda dapat menggunakan fungsi ini untuk melarikan diri dari string input berikut:
{ "escapedJsonString": "{\"foo\": \"bar\"}" }Gunakan
States.StringToJsonfungsi dan tentukanescapedJsonStringsebagai argumen masukan:States.StringToJson($.escapedJsonString)States.StringToJsonFungsi mengembalikan hasil sebagai berikut:{ "foo": "bar" } -
States.JsonToString -
States.JsonToStringFungsi ini hanya membutuhkan satu argumen, yaitu jalur yang berisi data JSON untuk kembali sebagai string unescaped. Interpreter mengembalikan string yang berisi teks JSON yang mewakili data yang ditentukan oleh Path. Misalnya, Anda dapat memberikan Jalur JSON berikut yang berisi nilai yang diloloskan:{ "unescapedJson": { "foo": "bar" } }Berikan
States.JsonToStringfungsi dengan data yang terkandung di dalamunescapedJson:States.JsonToString($.unescapedJson)States.JsonToStringFungsi mengembalikan respon berikut:{\"foo\": \"bar\"}
Intrinsik untuk operasi Matematika
Gunakan fungsi-fungsi ini untuk melakukan operasi Matematika.
States.MathRandom-
Gunakan fungsi
States.MathRandomintrinsik 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.MathRandomfungsi 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
startdanendnilai keStates.MathRandomfungsi:"random.$": "States.MathRandom($.start, $.end)"States.MathRandomFungsi mengembalikan nomor acak berikut sebagai respon:{"random": 456 } -
States.MathAdd-
Gunakan fungsi
States.MathAddintrinsik 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.MathAddfungsi yang mendefinisikanvalue1sebagai nilai awal, danstepsebagai nilai untuk bertambah dengan:value1"value1.$": "States.MathAdd($.value1, $.step)"States.MathAddFungsi akan mengembalikan nomor berikut sebagai tanggapan:{"value1": 110 } -
Intrinsik untuk operasi String
States.StringSplit-
Gunakan fungsi
States.StringSplitintrinsik 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.StringSplituntuk membagi berikut iniinputString, yang berisi serangkaian nilai yang dipisahkan koma:{ "inputString": "1,2,3,4,5", "splitter": "," }Gunakan
States.StringSplitfungsi dan definisikaninputStringsebagai argumen pertama, dan karakter pembatassplittersebagai argumen kedua:"array.$": "States.StringSplit($.inputString, $.splitter)"States.StringSplitFungsi 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.StringSplituntuk membagi berikut iniinputString, yang berisi beberapa karakter pembatas:{ "inputString": "This.is+a,test=string", "splitter": ".+,=" }Gunakan
States.StringSplitfungsi sebagai berikut:{ "myStringArray.$": "States.StringSplit($.inputString, $.splitter)" }States.StringSplitFungsi mengembalikan array string berikut sebagai hasilnya:{"myStringArray": [ "This", "is", "a", "test", "string" ]}
Intrinsik untuk pembuatan pengenal unik
States.UUID-
Gunakan fungsi
States.UUIDintrinsik untuk mengembalikan pengenal unik universal versi 4 (v4 UUID) yang dihasilkan menggunakan angka acak. Misalnya, Anda dapat menggunakan fungsi ini untuk memanggil AWS layanan atau sumber daya lain yang memerlukan parameter UUID atau menyisipkan item dalam tabel DynamoDB.States.UUIDFungsi ini dipanggil tanpa argumen yang ditentukan:"uuid.$": "States.UUID()"Fungsi mengembalikan UUID yang dihasilkan secara acak, seperti pada contoh berikut:
{"uuid": "ca4c1140-dcc1-40cd-ad05-7b4aa23df4a8" }
Intrinsik untuk operasi generik
States.Format-
Gunakan fungsi
States.Formatintrinsik 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, dantemplatekalimat untuk memasukkan nama mereka ke:{ "name": "Arnav", "template": "Hello, my name is {}." }Gunakan
States.Formatfungsi dan tentukantemplatestring 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.Formatfungsi 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\.
Dalam JSON, garis miring terbalik yang terkandung dalam nilai string literal harus dihilangkan dengan garis miring terbalik lain. Daftar ekuivalen 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 ABNF. JsonPath _, Anda harus menggunakan notasi kurung siku. Misalnya, $.abc.['def ghi'].