Fungsi intrinsik di Amazon States Language untuk alur kerja 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.

Fungsi intrinsik di Amazon States Language untuk alur kerja Step Functions

Amazon States Language menyediakan beberapa fungsi intrinsik, juga dikenal sebagai intrinsik, yang membantu Anda melakukan operasi pemrosesan data dasar tanpa menggunakan status. Task Intrinsik adalah konstruksi yang terlihat mirip dengan fungsi dalam bahasa pemrograman. Mereka dapat digunakan untuk membantu pembangun muatan memproses data yang pergi ke dan dari Resource bidang suatu Task negara.

Di Amazon States Language, fungsi intrinsik dikelompokkan ke dalam kategori berikut, berdasarkan jenis tugas pemrosesan data yang ingin Anda lakukan:

catatan
  • 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 myArn yang mencakup sembilan fungsi intrinsik bersarang:

    "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))"
Tip

Jika Anda menggunakan Step Functions di lingkungan pengembangan lokal, pastikan Anda menggunakan versi 1.12.0 atau lebih tinggi untuk dapat menyertakan semua fungsi intrinsik dalam alur kerja Anda.

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 sebagai 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 KB.

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 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.ArrayContains intrinsik untuk menentukan apakah nilai tertentu hadir dalam array. Misalnya, Anda dapat menggunakan fungsi ini untuk mendeteksi jika ada kesalahan dalam iterasi Map 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 KB.

Misalnya, diberikan array input berikut:

{ "inputArray": [1,2,3,4,5,6,7,8,9], "lookingFor": 5 }

Anda dapat menggunakan States.ArrayContains fungsi untuk menemukan lookingFor 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 dan index 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 di index 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.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.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 menyandikan input string sebagai string MIME Base64:

"base64.$": "States.Base64Encode($.input)"

States.Base64EncodeFungsi 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.HashFungsi 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.JsonMergeMengembalikan JSON objek digabungkan berikut sebagai hasilnya. Dalam JSON objek gabunganoutput, kunci json2 objek a menggantikan kunci json1 objek. a Juga, objek bersarang di kunci json1 objek dibuang a karena mode dangkal tidak mendukung penggabungan objek bersarang.

{ "output": { "a": {"a3": 1, "a4": 2}, "b": 2, "c": 3 } }
States.StringToJson

States.StringToJsonFungsi 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 tentukan escapedJsonString sebagai 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 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 yang diloloskan:

{ "unescapedJson": { "foo": "bar" } }

Berikan States.JsonToString fungsi 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.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 dan end nilai ke States.MathRandom fungsi:

"random.$": "States.MathRandom($.start, $.end)"

States.MathRandomFungsi 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 mendefinisikan value1 sebagai nilai awal, dan step sebagai 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.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 definisikan inputString sebagai argumen pertama, dan karakter pembatas splitter sebagai 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.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.StringSplitFungsi 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.UUIDFungsi 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 doa 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 individuname, dan template kalimat untuk memasukkan nama mereka ke:

{ "name": "Arnav", "template": "Hello, my name is {}." }

Gunakan States.Format fungsi dan tentukan template 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.