Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fungsi
Anda dapat menggunakan fungsi bawaan berikut dalam klausa SELECT atau WHERE dari ekspresi SQL Anda.
Fungsi eksternal berikut ditagih setara dengan tindakan aturan: aws_lambda,, get_dynamodb() get_registry_data(), dan get_thing_shadow(). Anda juga ditagih untuk decode() fungsi hanya saat Anda men dekode pesan Protobuf ke JSON. Untuk detail selengkapnya, lihat halaman AWS IoT Core harga
abs (Desimal)
Mengembalikan nilai absolut dari suatu angka. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: abs(-5) mengembalikan 5.
| Jenis Argumen | Hasil |
|---|---|
Int |
Int, nilai absolut dari argumen. |
Decimal |
Decimal, nilai absolut dari argumen. |
Boolean |
Undefined. |
String |
Decimal. Hasilnya adalah nilai absolut dari argumen. Jika string tidak dapat dikonversi, hasilnya adalahUndefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
account time ()
Mengembalikan ID akun yang memiliki aturan ini sebagaiString. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
accountid() = “123456789012”
acos (Desimal)
Mengembalikan kosinus terbalik dari bilangan dalam radian. Decimalargumen dibulatkan ke presisi ganda sebelum aplikasi fungsi. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh Soal: acos(0) = 1.5707963267948966
| Jenis Argumen | Hasil |
|---|---|
Int |
Decimal(dengan presisi ganda), kosinus terbalik dari argumen. Hasil imajiner dikembalikan sebagaiUndefined. |
Decimal |
Decimal(dengan presisi ganda), kosinus terbalik dari argumen. Hasil imajiner dikembalikan sebagaiUndefined. |
Boolean |
Undefined. |
String |
Decimal, kosinus terbalik dari argumen. Jika string tidak dapat dikonversi, hasilnya adalahUndefined. Hasil imajiner dikembalikan sebagaiUndefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
asin (Desimal)
Mengembalikan sinus terbalik dari bilangan dalam radian. Decimalargumen dibulatkan ke presisi ganda sebelum aplikasi fungsi. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: asin(0) = 0.0
| Jenis Argumen | Hasil |
|---|---|
Int |
Decimal(dengan presisi ganda), sinus terbalik dari argumen. Hasil imajiner dikembalikan sebagaiUndefined. |
Decimal |
Decimal(dengan presisi ganda), sinus terbalik dari argumen. Hasil imajiner dikembalikan sebagaiUndefined. |
Boolean |
Undefined. |
String |
Decimal(dengan presisi ganda), sinus terbalik dari argumen. Jika string tidak dapat dikonversi, hasilnya adalahUndefined. Hasil imajiner dikembalikan sebagaiUndefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
atan (Desimal)
Mengembalikan tangen terbalik dari bilangan dalam radian. Decimalargumen dibulatkan ke presisi ganda sebelum aplikasi fungsi. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: atan(0) = 0.0
| Jenis Argumen | Hasil |
|---|---|
Int |
Decimal(dengan presisi ganda), garis singgung terbalik dari argumen. Hasil imajiner dikembalikan sebagaiUndefined. |
Decimal |
Decimal(dengan presisi ganda), garis singgung terbalik dari argumen. Hasil imajiner dikembalikan sebagaiUndefined. |
Boolean |
Undefined. |
String |
Decimal, tangen terbalik dari argumen. Jika string tidak dapat dikonversi, hasilnya adalahUndefined. Hasil imajiner dikembalikan sebagaiUndefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
atan2 (Desimal, Desimal)
Mengembalikan sudut, dalam radian, antara sumbu x positif dan titik (x, y) yang ditentukan dalam dua argumen. Sudut positif untuk sudut berlawanan arah jarum jam (setengah bidang atas, y > 0), dan negatif untuk sudut searah jarum jam (setengah bidang bawah, y < 0). Decimalargumen dibulatkan ke presisi ganda sebelum aplikasi fungsi. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh Soal: atan2(1, 0) = 1.5707963267948966
| Jenis Argumen | Jenis Argumen | Hasil |
|---|---|---|
Int/Decimal |
Int/Decimal |
Decimal(dengan presisi ganda), sudut antara sumbu x dan titik (x, y) yang ditentukan. |
Int/Decimal/String |
Int/Decimal/String |
Decimal, garis singgung terbalik dari titik yang dijelaskan. Jika string tidak dapat dikonversi, hasilnya adalahUndefined. |
| Nilai lainnya | Nilai lainnya | Undefined. |
aws_lambda (fungsiArn, masukanJSON)
Memanggil fungsi Lambda yang ditentukan yang inputJson diteruskan ke fungsi Lambda dan mengembalikan JSON yang dihasilkan oleh fungsi Lambda.
| Pendapat | Deskripsi |
|---|---|
functionArn |
ARN dari fungsi Lambda untuk dipanggil. Fungsi Lambda harus mengembalikan data JSON. |
inputJson |
Masukan JSON diteruskan ke fungsi Lambda. Untuk meneruskan kueri objek bersarang dan literal, Anda harus menggunakan SQL versi 2016-03-23. |
Anda harus memberikan AWS IoT lambda:InvokeFunction izin untuk memanggil fungsi Lambda yang ditentukan. Contoh berikut menunjukkan cara memberikan lambda:InvokeFunction izin menggunakan AWS CLI:
aws lambda add-permission --function-name "function_name" --region "region" --principal iot.amazonaws.com --source-arn arn:aws:iot:us-east-1:account_id:rule/rule_name--source-account "account_id" --statement-id "unique_id" --action "lambda:InvokeFunction"
Berikut ini adalah argumen untuk add-permission perintah:
- --nama-fungsi
-
Nama fungsi Lambda. Anda menambahkan izin baru untuk memperbarui kebijakan sumber daya fungsi.
- --wilayah
-
Wilayah AWS Akun Anda.
- --kepala sekolah
-
Kepala sekolah yang mendapatkan izin. Ini harus
iot.amazonaws.com.rproxy.goskope.comuntuk mengizinkan AWS IoT izin memanggil fungsi Lambda. - --sumber-arn
-
ARN aturan. Anda dapat menggunakan get-topic-rule AWS CLI perintah untuk mendapatkan ARN dari suatu aturan.
- --sumber-akun
-
Di Akun AWS mana aturan didefinisikan.
- --pernyataan-id
-
Pengidentifikasi pernyataan unik.
- --aksi
-
Tindakan Lambda yang ingin Anda izinkan dalam pernyataan ini. Untuk memungkinkan AWS IoT untuk memanggil fungsi Lambda, tentukan.
lambda:InvokeFunction
penting
Jika Anda menambahkan izin untuk prinsipal AWS IoT tanpa memberikan source-arn atausource-account, apa pun Akun AWS
yang membuat aturan dengan tindakan Lambda Anda dapat memicu aturan untuk memanggil fungsi Lambda Anda. AWS IoT Untuk informasi selengkapnya, lihat Model Iz in Lambda.
Diberikan payload pesan JSON seperti:
{ "attribute1": 21, "attribute2": "value" }
aws_lambdaFungsi ini dapat digunakan untuk memanggil fungsi Lambda sebagai berikut.
SELECT aws_lambda("arn:aws:lambda:us-east-1:account_id:function:lambda_function", {"payload":attribute1}) as output FROM 'topic-filter'
Jika Anda ingin meneruskan payload pesan MQTT penuh, Anda dapat menentukan payload JSON menggunakan '*', seperti contoh berikut.
SELECT aws_lambda("arn:aws:lambda:us-east-1:account_id:function:lambda_function", *) as output FROM 'topic-filter'
payload.inner.elementmemilih data dari pesan yang dipublikasikan pada topik 'topic/subtopic'.
some.valuememilih data dari output yang dihasilkan oleh fungsi Lambda.
catatan
Mesin aturan membatasi durasi eksekusi fungsi Lambda. Panggilan fungsi lambda dari aturan harus diselesaikan dalam 2000 milidetik.
bit (Int, Int)
Melakukan bitwise AND pada representasi bit dari dua argumen Int (-konversi). Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: bitand(13, 5) = 5
| Jenis Argumen | Jenis Argumen | Hasil |
|---|---|---|
Int |
Int |
Int, sedikit AND dari dua argumen. |
Int/Decimal |
Int/Decimal |
Int, sedikit AND dari dua argumen. Semua non- Int angka dibulatkan ke bawah ke yang terdekatInt. Jika salah satu argumen tidak dapat dikonversi menjadi aInt, hasilnya adalahUndefined. |
Int/Decimal/String |
Int/Decimal/String |
Int, sedikit AND dari dua argumen. Semua string dikonversi menjadi desimal dan dibulatkan ke bawah ke yang terdekat. Int Jika konversi gagal, hasilnya adalahUndefined. |
| Nilai lainnya | Nilai lainnya | Undefined. |
bit (Int, Int)
Melakukan OR bitwise dari representasi bit dari dua argumen. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: bitor(8, 5) = 13
| Jenis Argumen | Jenis Argumen | Hasil |
|---|---|---|
Int |
Int |
Int, OR bitwise dari dua argumen. |
Int/Decimal |
Int/Decimal |
Int, OR bitwise dari dua argumen. Semua non- Int angka dibulatkan ke bawah ke yang terdekatInt. Jika konversi gagal, hasilnya adalahUndefined. |
Int/Decimal/String |
Int/Decimal/String |
Int, bitwise OR pada dua argumen. Semua string dikonversi menjadi desimal dan dibulatkan ke bawah ke yang terdekat. Int Jika konversi gagal, hasilnya adalahUndefined. |
| Nilai lainnya | Nilai lainnya | Undefined. |
bitxor (Int, Int)
Melakukan XOR bitwise pada representasi bit dari dua argumen Int (-konversi). Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: bitor(13, 5) = 8
| Jenis Argumen | Jenis Argumen | Hasil |
|---|---|---|
Int |
Int |
Int, XOR bitwise pada dua argumen. |
Int/Decimal |
Int/Decimal |
Int, XOR bitwise pada dua argumen. Non- Int angka dibulatkan ke bawah ke yang terdekatInt. |
Int/Decimal/String |
Int/Decimal/String |
Int, XOR bitwise pada dua argumen. string diubah menjadi desimal dan dibulatkan ke bawah ke yang terdekat. Int Jika ada konversi yang gagal, hasilnya adalahUndefined. |
| Nilai lainnya | Nilai lainnya | Undefined. |
bitnot (Int)
Melakukan NOT bitwise pada representasi bit dari argumen Int (-convert). Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: bitnot(13) = 2
| Jenis Argumen | Hasil |
|---|---|
Int |
Int, sedikit bukan dari argumen. |
Decimal |
Int, sedikit bukan dari argumen. DecimalNilai dibulatkan ke bawah ke yang terdekatInt. |
String |
Int, sedikit bukan dari argumen. String diubah menjadi desimal dan dibulatkan ke bawah ke yang terdekat. Int Jika ada konversi yang gagal, hasilnya adalahUndefined. |
| Nilai lainnya | Nilai lainnya. |
pemeran ()
Mengkonversi nilai dari satu tipe data ke yang lain. Cast berperilaku sebagian besar seperti konversi standar, dengan penambahan kemampuan untuk mentransmisikan angka ke atau dari Boolean. Jika AWS IoT tidak dapat menentukan cara mentransmisikan satu jenis ke jenis lainnya, hasilnya adalahUndefined. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru. Format: pemeran (valuesebagaitype).
Contoh:
cast(true as Int) = 1
Kata kunci berikut mungkin muncul setelah “as” saat memanggilcast:
| Kata Kunci | Hasil |
|---|---|
String |
Memberikan nilai keString. |
| Nvarchar | Memberikan nilai keString. |
| Teks | Memberikan nilai keString. |
| Ntext | Memberikan nilai keString. |
| varchar | Memberikan nilai keString. |
Int |
Memberikan nilai keInt. |
| Bilangan Bulat | Memberikan nilai keInt. |
| Ganda | Memberikan nilai ke Decimal (dengan presisi ganda). |
| Kata Kunci | Hasil |
|---|---|
Decimal |
Memberikan nilai keDecimal. |
| Bool | Memberikan nilai keBoolean. |
Boolean |
Memberikan nilai keBoolean. |
Aturan casting:
| Jenis Argumen | Hasil |
|---|---|
Int |
A Decimal tanpa titik desimal. |
Decimal |
Nilai sumber. catatanDengan SQL V2 (2016-03-23), nilai numerik yang merupakan bilangan bulat, seperti |
Boolean |
benar = 1,0, salah = 0,0. |
String |
Mencoba mengurai string sebagai aDecimal. AWS IoT
mencoba mengurai string yang cocok dengan regex: ^-? \ d+ (\. \ d+)? ((? i) E-? \ d+)? $. “0", “-1.2", “5E-12" adalah semua contoh string yang dikonversi secara otomatis menjadi desimal. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
| Jenis Argumen | Hasil |
|---|---|
Int |
Nilai sumbernya. |
Decimal |
Nilai sumber, dibulatkan ke bawah ke yang terdekatInt. |
Boolean |
benar = 1,0, salah = 0,0. |
String |
Mencoba mengurai string sebagai aDecimal. AWS IoT
mencoba mengurai string yang cocok dengan regex: ^-? \ d+ (\. \ d+)? ((? i) E-? \ d+)? $. “0", “-1.2", “5E-12" adalah semua contoh string yang dikonversi secara otomatis menjadi desimal. AWS IoT
mencoba untuk mengubah string menjadi Decimal a dan membulatkan ke bawah ke yang terdekatInt. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
| Jenis Argumen | Hasil |
|---|---|
Int |
0 = Salah, any_nonzero_value = Benar. |
Decimal |
0 = Salah, any_nonzero_value = Benar. |
Boolean |
Nilai sumbernya. |
String |
“true” = Benar dan “false” = False (tidak peka huruf besar). Nilai string lainnya =Undefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
| Jenis Argumen | Hasil |
|---|---|
Int |
Representasi string dariInt, dalam notasi standar. |
Decimal |
Sebuah string yang mewakili Decimal nilai, mungkin dalam notasi ilmiah. |
Boolean |
“benar” atau “salah”, semua huruf kecil. |
String |
Nilai sumbernya. |
| Array | Array diserialkan ke JSON. String hasil adalah daftar yang dipisahkan koma tertutup dalam tanda kurung persegi. Stringdikutip. Decimal,Int, dan Boolean tidak. |
| Objek | Objek diserialisasi ke JSON. String JSON adalah daftar pasangan kunci-nilai yang dipisahkan koma dan dimulai dan diakhiri dengan kurung kurung. Stringdikutip. Decimal,Int,Boolean, dan Null tidak. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
ceil (Desimal)
Membul Decimal atkan yang diberikan ke yang terdekatInt. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
ceil(1.2)= 2
ceil(-1.2)= -1
| Jenis Argumen | Hasil |
|---|---|
Int |
Int, nilai argumen. |
Decimal |
Int, Decimal nilai dibulatkan ke yang terdekatInt. |
String |
Int. String dikonversi ke Decimal dan dibulatkan ke yang terdekatInt. Jika string tidak dapat dikonversi ke aDecimal, hasilnya adalahUndefined. |
| Nilai lainnya | Undefined. |
chr (Tali)
Mengembalikan karakter ASCII yang sesuai dengan Int argumen yang diberikan. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
chr(65)= “A”.
chr(49)= “1".
| Jenis Argumen | Hasil |
|---|---|
Int |
Karakter yang sesuai dengan nilai ASCII yang ditentukan. Jika argumen bukan nilai ASCII yang valid, hasilnya adalahUndefined. |
Decimal |
Karakter yang sesuai dengan nilai ASCII yang ditentukan. DecimalArgumen dibulatkan ke bawah ke yang terdekatInt. Jika argumen bukan nilai ASCII yang valid, hasilnya adalahUndefined. |
Boolean |
Undefined. |
String |
Jika String dapat dikonversi ke aDecimal, itu dibulatkan ke bawah ke yang terdekatInt. Jika argumen bukan nilai ASCII yang valid, hasilnya adalahUndefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Nilai lainnya | Undefined. |
client ()
Mengembalikan ID klien MQTT yang mengirim pesan, atau n/a jika pesan tidak dikirim melalui MQTT. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
clientid() = “123456789012”
konkat ()
Menggabungkan array atau string. Fungsi ini menerima sejumlah argumen dan mengembalikan a String atau anArray. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
concat() = Undefined.
concat(1) = “1".
concat([1, 2, 3], 4)= [1, 2, 3, 4].
concat([1, 2, 3], "hello")= [1, 2, 3, “halo"]
concat("con", "cat")= “konkat”
concat(1, "hello")= “1halo”
concat("he","is","man")= “Heisman”
concat([1, 2, 3], "hello", [4, 5, 6])= [1, 2, 3, “halo”, 4, 5, 6]
| Jumlah argumen | Hasil |
|---|---|
| 0 | Undefined. |
| 1 | Argumen dikembalikan tanpa modifikasi. |
| 2+ |
Jika ada argumen |
cos (Desimal)
Mengembalikan kosinus dari bilangan dalam radian. Decimalargumen dibulatkan ke presisi ganda sebelum aplikasi fungsi. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
cos(0)= 1.
| Jenis Argumen | Hasil |
|---|---|
Int |
Decimal(dengan presisi ganda), kosinus argumen. Hasil imajiner dikembalikan sebagaiUndefined. |
Decimal |
Decimal(dengan presisi ganda), kosinus argumen. Hasil imajiner dikembalikan sebagaiUndefined. |
Boolean |
Undefined. |
String |
Decimal(dengan presisi ganda), kosinus argumen. Jika string tidak dapat dikonversi ke aDecimal, hasilnya adalahUndefined. Hasil imajiner dikembalikan sebagaiUndefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
cosh (Desimal)
Mengembalikan kosinus hiperbolik dari bilangan dalam radian. Decimalargumen dibulatkan ke presisi ganda sebelum aplikasi fungsi. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: cosh(2.3) = 5.037220649268761.
| Jenis Argumen | Hasil |
|---|---|
Int |
Decimal(dengan presisi ganda), kosinus hiperbolik dari argumen. Hasil imajiner dikembalikan sebagaiUndefined. |
Decimal |
Decimal(dengan presisi ganda), kosinus hiperbolik dari argumen. Hasil imajiner dikembalikan sebagaiUndefined. |
Boolean |
Undefined. |
String |
Decimal(dengan presisi ganda), kosinus hiperbolik dari argumen. Jika string tidak dapat dikonversi ke aDecimal, hasilnya adalahUndefined. Hasil imajiner dikembalikan sebagaiUndefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
decode (nilai, decodingScheme)
Gunakan decode fungsi untuk memecahkan kode nilai yang dikodekan. Jika string yang didekodekan adalah dokumen JSON, objek yang dapat dialamatkan dikembalikan. Jika tidak, string yang didekodekan dikembalikan sebagai string. Fungsi mengembalikan NULL jika string tidak dapat diterjemahkan. Fungsi ini mendukung decoding string yang dikodekan base64 dan format pesan Protocol Buffer (protobuf).
Didukung oleh SQL versi 2016-03-23 dan yang lebih baru.
- nilai
-
Nilai string atau salah satu ekspresi valid, seperti yang didefinisikan dalamAWS IoT Referensi SQL, yang mengembalikan string.
- Skema dekoding
-
String literal yang mewakili skema yang digunakan untuk memecahkan kode nilai. Saat ini, hanya
'base64'dan'proto'didukung.
Menguraikan kode string yang dikodekan base64
Dalam contoh ini, payload pesan menyertakan nilai yang dikodekan.
{ encoded_temp: "eyAidGVtcGVyYXR1cmUiOiAzMyB9Cg==" }
decodeFungsi dalam pernyataan SQL ini memecahkan kode nilai dalam payload pesan.
SELECT decode(encoded_temp,"base64").temperature AS temp from 'topic/subtopic'
Mengur encoded_temp aikan nilai menghasilkan dokumen JSON yang valid berikut, yang memungkinkan pernyataan SELECT untuk membaca nilai suhu.
{ "temperature": 33 }
Hasil pernyataan SELECT dalam contoh ini ditampilkan di sini.
{ "temp": 33 }
Jika nilai yang didekodekan bukan dokumen JSON yang valid, nilai yang didekodekan akan dikembalikan sebagai string.
Menguraikan muatan pesan protobuf
Anda dapat menggunakan fungsi decode SQL untuk mengonfigurasi Aturan yang dapat memecahkan kode payload pesan protobuf Anda. Untuk informasi selengkapnya, lihat Mengur aikan muatan pesan protobuf.
penting
Jika Anda menghilangkan source‐arn atau source‐account saat mengatur izin untuk prinsipal, siapa AWS IoT pun Akun AWS dapat memanggil fungsi Decode Anda melalui aturan lain. AWS IoT Untuk mengamankan fungsi Anda, lihat Kebijakan Bucket di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.
Tanda tangan fungsi terlihat seperti berikut:
decode(<ENCODED DATA>, 'proto', '<S3 BUCKET NAME>', '<S3 OBJECT KEY>', '<PROTO NAME>', '<MESSAGE TYPE>')
ENCODED DATA-
Menentukan data yang dikodekan protobug untuk diterjemahkan. Jika seluruh pesan yang dikirim ke Aturan adalah data yang dikodekan protobug, Anda dapat mereferensikan payload masuk biner mentah menggunakan.
*Jika tidak, bidang ini harus berupa string JSON yang dikodekan base-64 dan referensi ke string dapat diteruskan secara langsung.1) Untuk memecahkan kode muatan masuk protobuf biner mentah:
decode(*, 'proto', ...)2) Untuk memecahkan kode pesan yang dikodekan protobug yang diwakili oleh string 'a.b' yang dikodekan base64:
decode(a.b, 'proto', ...) proto-
Menentukan data yang akan diterjemahkan dalam format pesan protobuf. Jika Anda menentukan al
base64ih-alihproto, fungsi ini akan memecahkan kode string yang dikodekan base64 sebagai JSON. S3 BUCKET NAME-
Nama bucket Amazon S3 tempat Anda mengunggah
FileDescriptorSetfile Anda. S3 OBJECT KEY-
Kunci objek yang menentukan
FileDescriptorSetfile dalam bucket Amazon S3. PROTO NAME-
Nama
.protofile (tidak termasuk ekstensi) dari manaFileDescriptorSetfile itu dihasilkan. MESSAGE TYPE-
Nama struktur pesan protobuf di dalam
FileDescriptorSetfile, yang harus sesuai dengan data yang akan diterjemahkan.
Contoh ekspresi SQL menggunakan fungsi decode SQL dapat terlihat seperti berikut:
SELECT VALUE decode(*, 'proto', 's3-bucket', 'messageformat.desc', 'myproto', 'messagetype') FROM 'some/topic'
-
*Merupakan payload masuk biner, yang sesuai dengan jenis pesan protobuf yang dipanggil.
mymessagetype -
messageformat.descFileDescriptorSetFile yang disimpan dalam bucket Amazon S3 bernamas3-bucket. -
myproto.protoFile asli yang digunakan untuk menghasilkanFileDescriptorSetfile bernamamyproto.proto. -
messagetypeJenis pesan yang dipanggil
messagetype(bersama dengan dependensi yang diimpor) seperti yang didefinisikan dalammyproto.proto.
menyandikan (nilai, EncodingScheme)
Gunakan encode fungsi untuk menyandikan payload, yang berpotensi berupa data non-JSON, ke dalam representasi string berdasarkan skema pengkodean. Didukung oleh SQL versi 2016-03-23 dan yang lebih baru.
- nilai
-
Salah satu ekspresi yang valid, seperti yang didefinisikan dalamAWS IoT Referensi SQL. Anda dapat menentukan * untuk menyandikan seluruh payload, terlepas dari apakah itu dalam format JSON. Jika Anda memberikan ekspresi, hasil evaluasi dikonversi ke string sebelum dikodekan.
- Skema pengkodean
-
String literal yang mewakili skema pengkodean yang ingin Anda gunakan. Saat ini, hanya
'base64'didukung.
endswith (String, String)
Mengem Boolean balikan sebuah menunjukkan apakah String argumen pertama berakhir dengan String argumen kedua. Jika salah satu argum Null en adalah atauUndefined, hasilnya adalahUndefined. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: endswith("cat","at") = benar.
| Jenis argumen 1 | Argumen tipe 2 | Hasil |
|---|---|---|
String |
String |
Benar jika argumen pertama berakhir dengan argumen kedua. Kalau tidak, salah. |
| Nilai lainnya | Nilai lainnya | Kedua argumen dikonversi ke string menggunakan aturan konversi standar. Benar jika argumen pertama berakhir dengan argumen kedua. Kalau tidak, salah. Jika salah satu argum Null en adalah atauUndefined, hasilnya adalahUndefined. |
exp (Desimal)
Mengembalikan e yang diangkat ke Decimal argumen. Decimalargumen dibulatkan ke presisi ganda sebelum aplikasi fungsi. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: exp(1) = e.
| Jenis Argumen | Hasil |
|---|---|
Int |
Decimal(dengan presisi ganda), argumen e ^. |
Decimal |
Decimal(dengan presisi ganda), argumen e ^. |
String |
Decimal(dengan presisi ganda), argumen e ^. Jika String tidak dapat dikonversi ke aDecimal, hasilnya adalahUndefined. |
| Nilai lainnya | Undefined. |
lantai (Desimal)
Membulatkan yang diberikan ke Decimal bawah ke yang terdekatInt. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
floor(1.2)= 1
floor(-1.2)= -2
| Jenis Argumen | Hasil |
|---|---|
Int |
Int, nilai argumen. |
Decimal |
Int, Decimal nilai dibulatkan ke bawah ke yang terdekatInt. |
String |
Int. String dikonversi ke Decimal dan dibulatkan ke bawah ke yang terdekatInt. Jika string tidak dapat dikonversi ke aDecimal, hasilnya adalahUndefined. |
| Nilai lainnya | Undefined. |
memperoleh
Mengekstrak nilai dari tipe seperti koleksi (Array, String, Object). Tidak ada konversi yang diterapkan pada argumen pertama. Konversi berlaku seperti yang didokumentasikan dalam tabel ke argumen kedua. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
get(["a", "b", "c"], 1) = “b”
get({"a":"b"}, "a")= “b”
get("abc", 0)= “a”
| Jenis argumen 1 | Argumen tipe 2 | Hasil |
|---|---|---|
| Array | Jenis apa pun (dikonversi keInt) |
Item pada indeks berbasis 0 yang Array disediakan oleh argumen kedua (dikonversi keInt). Jika konversi tidak berhasil, hasilnya adalahUndefined. Jika indeks berada di luar batas Array (negatif atau >= array.length), hasilnya adalah. Undefined |
| String | Jenis apa pun (dikonversi keInt) |
Karakter pada indeks berbasis 0 dari string yang disediakan oleh argumen kedua (dikonversi keInt). Jika konversi tidak berhasil, hasilnya adalahUndefined. Jika indeks berada di luar batas string (negatif atau >= string.length), hasilnya adalah. Undefined |
| Objek | String(tidak ada konversi yang diterapkan) |
Nilai yang disimpan dalam objek argumen pertama yang sesuai dengan kunci string yang disediakan sebagai argumen kedua. |
| Nilai lainnya | Nilai apa pun | Undefined. |
get_dynamodb (Nama tabel, partisi, partisi, mengurutkan, mengurutkanKeyName, roLearnKeyValue) KeyName KeyValue
Mengambil data dari tabel DynamoDB. get_dynamodb()memungkinkan Anda untuk menanyakan tabel DynamoDB saat aturan dievaluasi. Anda dapat memfilter atau menambah muatan pesan menggunakan data yang diambil dari DynamoDB. Didukung oleh SQL versi 2016-03-23 dan yang lebih baru.
get_dynamodb()mengambil parameter berikut:
- tableName
-
Nama tabel DynamoDB untuk kueri.
- partisi KeyName
-
Nama kunci partisi. Untuk informasi selengkapnya, lihat K unci DynamoDB.
- partisi KeyValue
-
Nilai kunci partisi yang digunakan untuk mengidentifikasi catatan. Untuk informasi selengkapnya, lihat K unci DynamoDB.
- menyortir KeyName
-
(Opsional) Nama kunci pengurutan. Parameter ini diperlukan hanya jika tabel DynamoDB yang ditanyakan menggunakan kunci komposit. Untuk informasi selengkapnya, lihat K unci DynamoDB.
- menyortir KeyValue
-
(Opsional) Nilai kunci pengurutan. Parameter ini diperlukan hanya jika tabel DynamoDB yang ditanyakan menggunakan kunci komposit. Untuk informasi selengkapnya, lihat K unci DynamoDB.
- Pelajari
-
ARN dari peran IAM yang memberikan akses ke tabel DynamoDB. Mesin aturan mengambil peran ini untuk mengakses tabel DynamoDB atas nama Anda. Hindari menggunakan peran yang terlalu permisif. Berikan peran hanya izin yang diperlukan oleh aturan. Berikut ini adalah contoh kebijakan yang memberikan akses ke satu tabel DynamoDB.
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "dynamodb:GetItem", "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/table-name" } ] }
Sebagai contoh cara menggunakanget_dynamodb(), katakanlah Anda memiliki tabel DynamoDB yang berisi ID perangkat dan informasi lokasi untuk semua perangkat yang terhubung. AWS IoT Pernyataan SELECT berikut menggunakan get_dynamodb() fungsi untuk mengambil lokasi untuk ID perangkat yang ditentukan:
SELECT *, get_dynamodb("InServiceDevices", "deviceId", id,
"arn:aws:iam::12345678910:role/getdynamo").location AS location FROM
'some/topic'
catatan
-
Anda dapat memang
get_dynamodb()gil maksimal satu kali per pernyataan SQL. Memget_dynamodb()anggil beberapa kali dalam satu pernyataan SQL menyebabkan aturan dihentikan tanpa memanggil tindakan apa pun.
get_mqtt_property (nama)
Mereferensikan salah satu header MQTT5 berikut:contentType,,payLoadFormatIndicator, responseTopic dan. correlationData Fungsi ini mengambil salah satu string literal berikut sebagai argumen:content_type,format_indicator,response_topic, dancorrelation_data. Untuk informasi selengkapnya, lihat tabel argum en Fungsi berikut.
- Jenis konten
-
String: String yang UTF-8 dikodekan yang menjelaskan isi pesan penerbitan.
- membayar LoadFormatIndicator
-
String: Nilai string Enum yang menunjukkan apakah payload diformat sebagai. UTF-8 Nilai yang valid adalah
UNSPECIFIED_BYTESdanUTF8_DATA. - ResponseOpic
-
String: String yang UTF-8 dikodekan yang digunakan sebagai nama topik untuk pesan respons. Topik respons digunakan untuk menggambarkan topik yang harus dipublikasikan penerima sebagai bagian dari alur permintaan-respons. Topik tidak boleh mengandung karakter wildcard.
- Data korelasi
-
String: Data biner yang dikodekan base64 yang digunakan oleh pengirim Pesan Permintaan untuk mengidentifikasi permintaan Pesan Respons saat diterima.
Tabel berikut menunjukkan argumen fungsi yang dapat diterima dan tipe pengembalian terkait untuk get_mqtt_property fungsi:
| SQL | Jenis data yang dikembalikan (jika ada) | Jenis data yang dikembalikan (jika tidak ada) |
|---|---|---|
get_mqtt_property("format_indicator") |
String (UNSPECIFICIED_BYTES atau UTF8_DATA) | String (UNPECIFIED_BYTES) |
get_mqtt_property("content_type") |
String | Tidak terdefinisi |
get_mqtt_property("response_topic") |
String | Tidak terdefinisi |
get_mqtt_property("correlation_data") |
base64 string yang dikodekan | Tidak terdefinisi |
get_mqtt_property("some_invalid_name") |
Tidak terdefinisi | Tidak terdefinisi |
Contoh berikut Aturan SQL mereferensikan salah satu header MQTT5 berikut:contentType,,payLoadFormatIndicator, responseTopic dan. correlationData
SELECT *, get_mqtt_property('content_type') as contentType, get_mqtt_property('format_indicator') as payloadFormatIndicator, get_mqtt_property('response_topic') as responseTopic, get_mqtt_property('correlation_data') as correlationData FROM 'some/topic'
get_or_default (ekspresi, Nilai default)
Mengembalikan nilai default di parameter kedua jika ditentukan atau mengembalikan undefined, ketika ekspresi dalam parameter pertama mengembalikan null, undefined, atau gagal. Didukung oleh SQL versi 2016-03-23 dan yang lebih baru.
penting
get_or_defaulttidak mendukung payload non-JSON secara langsung apa adanya. Jika Anda menggunakan payload non-JSON, gunakan fungsi encode ataudecode.
get_or_default()mengambil parameter berikut:
- ekspresi
-
Ekspresi valid apa pun yang berisi Jenis DataFungsi,Literal,, Vari abelKueri objek bersarang,, atauEkstensi JSON.
- defaultValue
-
(Opsional) Setiap ekspresi valid yang berisiJenis Data,Fungsi,Literal, Vari abel,Kueri objek bersarang, atauEkstensi JSON. Ini adalah nilai yang akan dikembalikan setiap kali argumen pertama mengembalikan null, undefined, atau gagal.
catatan
Fungsi yang mengambil data dari sumber daya milik pelanggan, seperti get_secret, get_dynamodb, aws_lambda, get_thing_shadow, dan decode-protobuf, tidak diizinkan untuk parameter defaultValue.
Tabel berikut menunjukkan argumen fungsi yang dapat diterima untuk setiap argumen dan output terkaitnya:
| Argumen pertama | Argumen kedua | Output |
|---|---|---|
| Evaluasi yang berhasil | Nilai apa pun atau tidak ditentukan | Nilai argumen pertama. |
| Tidak ditentukan, Null, atau gagal | Nilai apa pun termasuk Undefined atau Null | Nilai argumen kedua. |
| Tidak ditentukan, Null, atau gagal | tidak ditentukan | Undefined |
Contoh:
Contoh 1:
Contoh berikut memberikan nilai defaultValue jika tabel DynamoDB atau kueri gagal:
SELECT device_id, get_or_default( get_dynamodb("DeviceConfig", "deviceId", nonExistentId, "arn:aws:iam::123456789012:role/ROLE_NAME"), {"mode": "standard", "timeout": 30, "enabled": true } ) as config FROM 'device/telemetry'
Contoh 2:
Contoh berikut memberikan nilai default aman “TIDAK DIKETAHUI” jika status tidak ditentukan:
SELECT get_or_default( CASE status WHEN 'active' THEN 'GOOD' WHEN 'inactive' THEN 'BAD'/ ELSE 'UNKNOWN' END, 'UNKNOWN') as status_category FROM 'topic/subtopic'
Contoh 3:
Contoh berikut menunjukkan bagaimana Anda juga dapat menggunakan get_or_default dengan satu parameter. Ini berguna dalam skenario di mana Anda mungkin tidak memiliki nilai default yang jelas, tetapi Anda tidak ingin eksekusi aturan gagal.
SELECT get_dynamodb("DeviceConfig", "deviceId", nonExistentId, "arn:aws:iam::123456789012:role/ROLE_NAME") as config FROM 'device/telemetry'
Jika pencarian DynamoDB gagal, eksekusi aturan akan gagal, dan tidak ada tindakan yang akan dieksekusi. Jika SQL berikut digunakan sebagai gantinya:
SELECT get_or_default(get_dynamodb("DeviceConfig", "deviceId", nonExistentId, "arn:aws:iam::123456789012:role/ROLE_NAME")) as config FROM 'device/telemetry'
Pernyataan get_or_default akan mengevaluasi keUndefined, jadi dalam contoh ini pernyataan SELECT secara keseluruhan akan mengevaluasi ke {} dan tindakan aturan apa pun akan dicoba.
penting
Sebaiknya ikuti praktik terbaik ini untuk menjaga keamanan saat menggunakan fungsi ini:
Hindari menggunakan rahasia hardcode dalam definisi aturan termasuk nilai default
Gunakan AWS Secrets Manager untuk mengelola informasi sensitif
get_registry_data (registryAPI, ThingName, ROLearn)
Mengambil AWS IoT data registri sesuatu dalam AWS IoT aturan. Anda dapat membaca data registri (seperti atribut, tipe benda, dan grup benda milik perangkat) dan menggunakan informasi ini untuk menyaring, memperkaya, atau merutekan pesan secara dinamis. Didukung oleh SQL versi 2016-03-23 dan yang lebih baru.
get_registry_data()mengambil parameter berikut:
- PendaftaranAPI
-
API registri sedang dipanggil. Nilai yang valid adalah
DescribeThingdanListThingGroupsForThing. Nilai-nilai ini harus berupa string konstan. - Nama benda
-
String: Nama benda yang data registrinya ingin Anda ambil.
- Pelajari
-
String: Peran ARN dengan
iot:DescribeThingand/oriot:ListThingGroupsForThingizin izin berdasarkan API yang dipanggil.
Format respons get_registry_data fungsi sama dengan API registri yang dipanggil. Untuk informasi selengkapnya, lihat DescribeThing dan ListThingGroupsForThing API.
Contoh:
Anda dapat mengambil informasi jenis benda untuk memungkinkan pemfilteran pesan AWS IoT Core peristiwa siklus hidup untuk hal-hal (dengan nama benda yang cocok dengan id klien MQTT) di mana tipe benda beradatestenv.
SELECT * FROM '$aws/events/lifecycle/+' WHERE get_registry_data("DescribeThing",clientId,[roleArn]).thingTypeName='testenv'
Contoh:
Anda dapat mengambil atribut benda untuk perangkat dengan nama benda sensor1 untuk semua pesan yang dikirim oleh perangkat gateway-nyagateway1.
SELECT *, get_registry_data("DescribeThing","sensor1",[roleArn]).attributes.temperature_threhold AS device1_tempthreshold FROM home1/gateway1/sensor1/#
catatan
-
Anda dapat memang
get_registry_data()gil maksimal satu kali per pernyataan SQL dan template substitusi untuk tindakan dan tindakan kesalahan.
get_secret (SecretID, SecretType, kunci, roLearn)
Mengambil nilai terenkripsi SecretString atau SecretBinary bidang dari versi rahasia saat ini di AWS Secrets Manager. Untuk informasi lebih lanjut tentang membuat dan memelihara rahasia, lihat CreateSecret, UpdateSecret, dan PutSecretValue.
get_secret()mengambil parameter berikut:
- RahasiaID
-
String: Nama Sumber Daya Amazon (ARN) atau nama ramah rahasia yang akan diambil.
- Tipe Rahasia
-
String: Jenis rahasia. Nilai yang valid:
SecretString|SecretBinary.- SecretString
-
-
Untuk rahasia yang Anda buat sebagai objek JSON dengan menggunakan API, AWS CLI, atau AWS Secrets Manager konsol:
Jika Anda menentukan nilai untuk
keyparameter, fungsi ini mengembalikan nilai kunci yang ditentukan.Jika Anda tidak menentukan nilai untuk
keyparameter, fungsi ini mengembalikan seluruh objek JSON.
-
Untuk rahasia yang Anda buat sebagai objek non-JSON dengan menggunakan API atau: AWS CLI
Jika Anda menentukan nilai untuk
keyparameter, fungsi ini gagal dengan pengecualian.Jika Anda tidak menentukan nilai untuk
keyparameter, fungsi ini mengembalikan isi rahasia.
-
- SecretBinary
-
Jika Anda menentukan nilai untuk
keyparameter, fungsi ini gagal dengan pengecualian.Jika Anda tidak menentukan nilai untuk
keyparameter, fungsi ini mengembalikan nilai rahasia sebagai string yang dikodekan base64 UTF-8 .
- kunci
(Opsional) String: Nama kunci di dalam objek JSON yang disimpan di
SecretStringbidang rahasia. Gunakan nilai ini ketika Anda ingin mengambil hanya nilai kunci yang disimpan dalam rahasia alih-alih seluruh objek JSON.Jika Anda menentukan nilai untuk parameter ini dan rahasia tidak berisi objek JSON di dalam
SecretStringbidangnya, fungsi ini gagal dengan pengecualian.- Pelajari
String: Peran ARN dengan
secretsmanager:GetSecretValuedansecretsmanager:DescribeSecretizin.
catatan
Fungsi ini selalu mengembalikan versi rahasia saat ini (versi dengan AWSCURRENT tag). Mesin AWS IoT aturan menyimpan setiap rahasia hingga 15 menit. Akibatnya, mesin aturan dapat memakan waktu hingga 15 menit untuk memperbarui rahasia. Ini berarti bahwa jika Anda mengambil rahasia hingga 15 menit setelah pembaruan dengan AWS Secrets Manager, fungsi ini mungkin mengembalikan versi sebelumnya.
Fungsi ini tidak diukur, tetapi dikenakan AWS Secrets Manager biaya. Karena mekanisme caching rahasia, mesin aturan sesekali memang AWS Secrets Manager gil. Karena mesin aturan adalah layanan terdistribusi sepenuhnya, Anda mungkin melihat beberapa panggilan API Manajer Rahasia dari mesin aturan selama jendela caching 15 menit.
Contoh:
Anda dapat menggunakan get_secret fungsi dalam header otentikasi dalam tindakan aturan HTTPS, seperti pada contoh otentikasi kunci API berikut.
"API_KEY": "${get_secret('API_KEY', 'SecretString', 'API_KEY_VALUE', 'arn:aws:iam::12345678910:role/getsecret')}"
Untuk informasi selengkapnya tentang tindakan aturan HTTPS, lihatHTTP.
get_thing_shadow (Nama benda, ShadowName, ROLearn)
Mengembalikan bayangan yang ditentukan dari hal yang ditentukan. Didukung oleh SQL versi 2016-03-23 dan yang lebih baru.
- Nama benda
-
String: Nama benda yang bayangannya ingin Anda ambil.
- ShadowName
-
(Opsional) String: Nama bayangan. Parameter ini diperlukan hanya ketika mereferensikan bayangan bernama.
- Pelajari
-
String: Peran ARN dengan
iot:GetThingShadowizin.
Contoh:
Saat digunakan dengan bayangan bernama, berikan shadowName parameter.
SELECT * from 'topic/subtopic' WHERE get_thing_shadow("MyThing","MyThingShadow","arn:aws:iam::123456789012:role/AllowsThingShadowAccess") .state.reported.alarm = 'ON'
Saat digunakan dengan bayangan yang tidak disebutkan namanya, hilangkan parameter. shadowName
SELECT * from 'topic/subtopic' WHERE get_thing_shadow("MyThing","arn:aws:iam::123456789012:role/AllowsThingShadowAccess") .state.reported.alarm = 'ON'
get_user_properties (pengguna) PropertyKey
Referensi User Properties, yang merupakan salah satu jenis header properti yang didukung di MQTT5.
- Properti Pengguna
-
String: Properti pengguna adalah pasangan kunci-nilai. Fungsi ini mengambil kunci sebagai argumen dan mengembalikan array dari semua nilai yang cocok dengan kunci terkait.
Argumen fungsi
Untuk Properti Pengguna berikut di header pesan:
| Key | Nilai |
|---|---|
| beberapa kunci | beberapa nilai |
| kunci yang berbeda | nilai yang berbeda |
| beberapa kunci | nilai dengan kunci duplikat |
Tabel berikut menunjukkan perilaku SQL yang diharapkan:
| SQL | Jenis data yang dikembalikan | Nilai data yang dikembalikan |
|---|---|---|
| get_user_properties ('beberapa kunci') | Array String | ['some value', 'value with duplicate key'] |
| get_user_properties ('kunci lain') | Array String | ['a different value'] |
| dapatkan_properti_pengguna () | Array Objek pasangan kunci-nilai | [{'"some key": "some value"'}, {"other key": "a different
value"}, {"some key": "value with duplicate
key"}] |
| get_user_properties ('kunci tidak ada') | Tidak terdefinisi |
Contoh berikut Aturan SQL mereferensikan User Properties (jenis header properti MQTT5) ke dalam payload:
SELECT *, get_user_properties('user defined property key') as userProperty FROM 'some/topic'
Fungsi hashing
AWS IoT menyediakan fungsi hashing berikut:
-
md2
-
md5
-
sha1
-
sha224
-
sha256
-
sha384
-
sha512
Semua fungsi hash mengharapkan satu argumen string. Hasilnya adalah nilai hash dari string itu. Konversi string standar berlaku untuk argumen non-string. Semua fungsi hash didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
md2("hello")= “a9046c73e00331af68917d3804f70655"
md5("hello")= “5d41402abc4b2a76b9719d911017c592”
indexof (String, String)
Mengembalikan indeks pertama (berbasis 0) dari argumen kedua sebagai substring dalam argumen pertama. Kedua argumen diharapkan sebagai string. Argumen yang bukan string tunduk pada aturan konversi string standar. Fungsi ini tidak berlaku untuk array, hanya untuk string. Didukung oleh SQL versi 2016-03-23 dan yang lebih baru.
Contoh:
indexof("abcd", "bc") = 1
Adalah Nol ()
Mengembalikan nilai true jika argumennya adalah Null nilai. Didukung oleh SQL versi 2016-03-23 dan yang lebih baru.
Contoh:
isNull(5) = salah.
isNull(Null) = benar.
| Jenis Argumen | Hasil |
|---|---|
Int |
false |
Decimal |
false |
Boolean |
false |
String |
false |
Array |
false |
Object |
SALAH |
Null |
BETUL |
Undefined |
SALAH |
IsUndefined ()
Mengembalikan true jika argumennya adalahUndefined. Didukung oleh SQL versi 2016-03-23 dan yang lebih baru.
Contoh:
isUndefined(5) = salah.
isUndefined(floor([1,2,3]))) = benar.
| Jenis Argumen | Hasil |
|---|---|
Int |
false |
Decimal |
false |
Boolean |
false |
String |
false |
Array |
false |
Object |
false |
Null |
SALAH |
Undefined |
true |
panjang (String)
Mengembalikan jumlah karakter dalam string yang disediakan. Aturan konversi standar berlaku untuk non- String argumen. Didukung oleh SQL versi 2016-03-23 dan yang lebih baru.
Contoh:
length("hi")= 2
length(false)= 5
ln (Desimal)
Mengembalikan logaritma alami dari argumen. Decimalargumen dibulatkan ke presisi ganda sebelum aplikasi fungsi. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: ln(e) = 1.
| Jenis Argumen | Hasil |
|---|---|
Int |
Decimal(dengan presisi ganda), log alami argumen. |
Decimal |
Decimal(dengan presisi ganda), log alami argumen. |
Boolean |
Undefined. |
String |
Decimal(dengan presisi ganda), log alami argumen. Jika string tidak dapat dikonversi ke aDecimal, hasilnya adalahUndefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
log (Desimal)
Mengembalikan logaritma dasar 10 dari argumen. Decimalargumen dibulatkan ke presisi ganda sebelum aplikasi fungsi. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: log(100) = 2.0.
| Jenis Argumen | Hasil |
|---|---|
Int |
Decimal(dengan presisi ganda), log dasar 10 dari argumen. |
Decimal |
Decimal(dengan presisi ganda), log dasar 10 dari argumen. |
Boolean |
Undefined. |
String |
Decimal(dengan presisi ganda), log dasar 10 dari argumen. Jika String tidak dapat dikonversi ke aDecimal, hasilnya adalahUndefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
lebih rendah (String)
Mengembalikan versi huruf kecil dari yang diberikan. String Non-stringargumen dikonversi ke string menggunakan aturan konversi standar. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
lower("HELLO")= “halo”.
lower(["HELLO"])= “[\" halo\ "]”.
lpad (String, Int)
Mengem String balikan argumen, dilapisi di sisi kiri dengan jumlah spasi yang ditentukan oleh argumen kedua. Ar Int gumen harus antara 0 dan 1000. Jika nilai yang diberikan berada di luar rentang valid ini, argumen disetel ke nilai valid terdekat (0 atau 1000). Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
lpad("hello", 2) = " hello".
lpad(1, 3) = " 1"
| Jenis argumen 1 | Argumen tipe 2 | Hasil |
|---|---|---|
String |
Int |
String, yang disediakan String empuk di sisi kiri dengan sejumlah ruang sama dengan yang disediakanInt. |
String |
Decimal |
DecimalArgumen dibulatkan ke bawah ke Int yang terdekat dan String dilapisi di sebelah kiri dengan jumlah spasi yang ditentukan. |
String |
String |
Argumen kedua diubah menjadi aDecimal, yang dibulatkan ke bawah ke yang terdekatInt, dan String dilapisi dengan spasi angka yang ditentukan di sebelah kiri. Jika argumen kedua tidak dapat dikonversi menjadi aInt, hasilnya adalahUndefined. |
| Nilai lainnya | Int/Decimal/String |
Nilai pertama dikonversi ke String menggunakan konversi standar, dan kemudian fungsi LPAD diterapkan pada ituString. Jika tidak dapat dikonversi, hasilnya adalahUndefined. |
| Nilai apa pun | Nilai lainnya | Undefined. |
ltrim (Tali)
Menghapus semua ruang putih utama (tab dan spasi) dari yang disediakanString. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
Ltrim(" h i ")= “hai”.
| Jenis Argumen | Hasil |
|---|---|
Int |
Re String presentasi Int dengan semua ruang putih terkemuka dihapus. |
Decimal |
Re String presentasi Decimal dengan semua ruang putih terkemuka dihapus. |
Boolean |
StringRepresentasi Boolean (“benar” atau “salah”) dengan semua spasi putih utama dihapus. |
String |
Argumen dengan semua spasi putih terdepan dihapus. |
| Array | Re String presentasi Array (menggunakan aturan konversi standar) dengan semua spasi putih terdepan dihapus. |
| Objek | StringRepresentasi Objek (menggunakan aturan konversi standar) dengan semua spasi putih terdepan dihapus. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
mod (Desimal, Desimal)
Mengembalikan sisa pembagian argumen pertama dengan argumen kedua. Setara dengansisa (Desimal, Desimal). Anda juga dapat menggunakan “%” sebagai operator infix untuk fungsionalitas modulo yang sama. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: mod(8, 3) = 2.
| Operan kiri | Operan kanan | Output |
|---|---|---|
Int |
Int |
Int, argumen pertama modulo argumen kedua. |
Int/Decimal |
Int/Decimal |
Decimal, argumen pertama modulo operan kedua. |
String/Int/Decimal |
String/Int/Decimal |
Jika semua string dikonversi menjadi desimal, hasilnya adalah argumen pertama modulo argumen kedua. Atau, Undefined. |
| Nilai lainnya | Nilai lainnya | Undefined. |
nanvl (AnyValue, AnyValue)
Mengembalikan argumen pertama jika validDecimal. Jika tidak, argumen kedua dikembalikan. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: Nanvl(8, 3) = 8.
| Jenis argumen 1 | Argumen tipe 2 | Output |
|---|---|---|
| Tidak terdefinisi | Nilai apa pun | Argumen kedua. |
| Null | Nilai apa pun | Argumen kedua. |
Decimal(NaN) |
Nilai apa pun | Argumen kedua. |
Decimal(bukan NaN) |
Nilai apa pun | Argumen pertama. |
| Nilai lainnya | Nilai apa pun | Argumen pertama. |
new new ()
Mengembalikan UUID 16-byte acak. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: newuuid() = 123a4567-b89c-12d3-e456-789012345000
numbytes (String)
Mengembalikan jumlah byte dalam peng UTF-8 kodean string yang disediakan. Aturan konversi standar berlaku untuk non- String argumen. Didukung oleh SQL versi 2016-03-23 dan yang lebih baru.
Contoh:
numbytes("hi")= 2
numbytes("€") = 3
parse_time (String, Panjang [, String])
Gunakan parse_time fungsi untuk memformat stempel waktu menjadi format yang dapat dibaca manusia date/time . Didukung oleh SQL versi 2016-03-23 dan yang lebih baru. Untuk mengubah string stempel waktu menjadi milidetik, lihat. time_to_epoch (String, String)
parse_timeFungsi mengharapkan argumen berikut:
- pola
-
(String) P date/time ola yang mengikuti Joda-Time format
. - timestamp
-
(Panjang) Waktu untuk diformat dalam milidetik sejak zaman Unix. Lihat fungsistempel waktu ().
- timezone
-
(String) Zona waktu yang diformat date/time. Defaultnya adalah “UTC”. Fungsi ini mendukung zona Joda-Time waktu
. Argumen ini opsional.
Contoh:
Ketika pesan ini dipublikasikan ke topik A/B '', payload {"ts":
"1970.01.01 AD at 21:46:40 CST"} dikirim ke bucket S3:
{ "ruleArn": "arn:aws:iot:us-east-2:ACCOUNT_ID:rule/RULE_NAME", "topicRulePayload": { "sql": "SELECT parse_time(\"yyyy.MM.dd G 'at' HH:mm:ss z\", 100000000, 'America/Belize' ) as ts FROM 'A/B'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "s3": { "roleArn": "arn:aws:iam::ACCOUNT_ID:rule:role/ROLE_NAME", "bucketName": "BUCKET_NAME", "key": "KEY_NAME" } } ], "ruleName": "RULE_NAME" } }
Ketika pesan ini dipublikasikan ke topik 'A/B', payload yang mirip dengan {"ts": "2017.06.09 AD at 17:19:46 UTC"} (tetapi dengan saat ini date/time) dikirim ke bucket S3:
{ "ruleArn": "arn:aws:iot:us-east-2:ACCOUNT_ID:rule/RULE_NAME", "topicRulePayload": { "sql": "SELECT parse_time(\"yyyy.MM.dd G 'at' HH:mm:ss z\", timestamp() ) as ts FROM 'A/B'", "awsIotSqlVersion": "2016-03-23", "ruleDisabled": false, "actions": [ { "s3": { "roleArn": "arn:aws:iam::ACCOUNT_ID:rule:role/ROLE_NAME", "bucketName": "BUCKET_NAME", "key": "KEY_NAME" } } ], "ruleName": "RULE_NAME" } }
parse_time()juga dapat digunakan sebagai template substitusi. Misalnya, ketika pesan ini dipublikasikan ke topik 'A/B', payload dikirim ke bucket S3 dengan kunci = “2017":
{ "ruleArn": "arn:aws:iot:us-east-2:ACCOUNT_ID:rule/RULE_NAME", "topicRulePayload": { "sql": "SELECT * FROM 'A/B'", "awsIotSqlVersion": "2016-03-23", "ruleDisabled": false, "actions": [{ "s3": { "roleArn": "arn:aws:iam::ACCOUNT_ID:rule:role/ROLE_NAME", "bucketName": "BUCKET_NAME", "key": "${parse_time('yyyy', timestamp(), 'UTC')}" } }], "ruleName": "RULE_NAME" } }
kekuatan (Desimal, Desimal)
Mengembalikan argumen pertama yang diajukan ke argumen kedua. Decimalargumen dibulatkan ke presisi ganda sebelum aplikasi fungsi. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: power(2, 5) = 32.0.
| Jenis argumen 1 | Argumen tipe 2 | Output |
|---|---|---|
Int/Decimal |
Int/Decimal |
A Decimal (dengan presisi ganda), argumen pertama diangkat ke kekuatan argumen kedua. |
Int/Decimal/String |
Int/Decimal/String |
A Decimal (dengan presisi ganda), argumen pertama diangkat ke kekuatan argumen kedua. Setiap string dikonversi menjadi desimal. Jika ada String yang gagal dikonversi menjadiDecimal, hasilnya adalahUndefined. |
| Nilai lainnya | Nilai lainnya | Undefined. |
kepala sekolah ()
Mengembalikan prinsip yang digunakan perangkat untuk otentikasi, berdasarkan bagaimana pesan pemicu diterbitkan. Tabel berikut menjelaskan prinsip yang dikembalikan untuk setiap metode penerbitan dan protokol.
| Bagaimana pesan dipublikasikan | Protokol | Tipe kredensial | Principal |
|---|---|---|---|
| Klien MQTT | MQTT | X.509 sertifikat perangkat | X.509 sertifikat sidik jari |
| AWS IoT Konsol klien MQTT | MQTT | Pengguna atau peran IAM | iam-role-id:session-name |
| AWS CLI | HTTP | Pengguna atau peran IAM | userid |
| AWS IoT SDK Perangkat | MQTT | X.509 sertifikat perangkat | X.509 sertifikat sidik jari |
| AWS IoT SDK Perangkat | MQTT over WebSocket | Pengguna atau peran IAM | userid |
Contoh berikut menunjukkan berbagai jenis nilai yang principal() dapat dikembalikan:
-
X.509 sidik jari sertifikat:
ba67293af50bf2506f5f93469686da660c7c844e7b3950bfb16813e0d31e9373 -
ID peran IAM dan nama sesi:
ABCD1EFG3HIJK2LMNOP5:my-session-name -
Mengembalikan ID pengguna:
ABCD1EFG3HIJK2LMNOP5
rand ()
Mengembalikan pseudorandom, didistribusikan secara seragam ganda antara 0,0 dan 1,0. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
rand()= 0.8231909191640703
regexp_matches (String, String)
Mengembalikan true jika string (argumen pertama) berisi kecocokan untuk ekspresi reguler (argumen kedua). Jika Anda menggunakan | dalam ekspresi reguler, gunakan dengan().
Contoh:
regexp_matches("aaaa", "a{2,}") = benar.
regexp_matches("aaaa", "b")= salah.
regexp_matches("aaa", "(aaa|bbb)") = benar.
regexp_matches("bbb", "(aaa|bbb)") = benar.
regexp_matches("ccc", "(aaa|bbb)") = salah.
| Jenis Argumen | Hasil |
|---|---|
Int |
Re String presentasi dariInt. |
Decimal |
Re String presentasi dariDecimal. |
Boolean |
Re String presentasi dari Boolean (“benar” atau “salah”). |
String |
ItuString. |
| Array | Re String presentasi dari Array (menggunakan aturan konversi standar). |
| Objek | Re String presentasi Objek (menggunakan aturan konversi standar). |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
Argumen kedua:
Harus ekspresi regex yang valid. Non-string jenis dikonversi String menggunakan aturan konversi standar. Tergantung pada jenisnya, string yang dihasilkan mungkin bukan ekspresi reguler yang valid. Jika argumen (dikonversi) bukan regex yang valid, hasilnya adalah. Undefined
regexp_replace (String, String, String)
Mengganti semua kemunculan argumen kedua (ekspresi reguler) di argumen pertama dengan argumen ketiga. Referensi grup tangkapan dengan “$”. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
regexp_replace("abcd", "bc", "x")= “axd”.
regexp_replace("abcd", "b(.*)d", "$1")= “ac”.
| Jenis Argumen | Hasil |
|---|---|
Int |
Re String presentasi dariInt. |
Decimal |
Re String presentasi dariDecimal. |
Boolean |
Re String presentasi dari Boolean (“benar” atau “salah”). |
String |
Nilai sumber. |
| Array | Re String presentasi dari Array (menggunakan aturan konversi standar). |
| Objek | Re String presentasi Objek (menggunakan aturan konversi standar). |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
Argumen kedua:
Harus ekspresi regex yang valid. Non-string jenis dikonversi String menggunakan aturan konversi standar. Tergantung pada jenisnya, string yang dihasilkan mungkin bukan ekspresi reguler yang valid. Jika argumen (dikonversi) bukan ekspresi regex yang valid, hasilnya adalah. Undefined
Argumen ketiga:
Harus berupa string pengganti regex yang valid. (Dapat mereferensikan grup tangkapan.) Non-string jenis dikonversi String menggunakan aturan konversi standar. Jika argumen (dikonversi) bukan string pengganti regex yang valid, hasilnya adalah. Undefined
regexp_substr (String, String)
Menemukan kecocokan pertama dari parameter kedua (regex) di parameter pertama. Referensi grup tangkapan dengan “$”. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
regexp_substr("hihihello", "hi")= “hai”
regexp_substr("hihihello", "(hi)*")= “hihi”
| Jenis Argumen | Hasil |
|---|---|
Int |
Re String presentasi dariInt. |
Decimal |
Re String presentasi dariDecimal. |
Boolean |
Re String presentasi dari Boolean (“benar” atau “salah”). |
String |
StringArgumennya. |
| Array | Re String presentasi dari Array (menggunakan aturan konversi standar). |
| Objek | Re String presentasi Objek (menggunakan aturan konversi standar). |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
Argumen kedua:
Harus ekspresi regex yang valid. Non-string jenis dikonversi untuk String menggunakan aturan konversi standar. Tergantung pada jenisnya, string yang dihasilkan mungkin bukan ekspresi reguler yang valid. Jika argumen (dikonversi) bukan ekspresi regex yang valid, hasilnya adalah. Undefined
sisa (Desimal, Desimal)
Mengembalikan sisa pembagian argumen pertama dengan argumen kedua. Setara denganmod (Desimal, Desimal). Anda juga dapat menggunakan “%” sebagai operator infix untuk fungsionalitas modulo yang sama. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: remainder(8, 3) = 2.
| Operan kiri | Operan kanan | Output |
|---|---|---|
Int |
Int |
Int, argumen pertama modulo argumen kedua. |
Int/Decimal |
Int/Decimal |
Decimal, argumen pertama modulo operan kedua. |
String/Int/Decimal |
String/Int/Decimal |
Jika semua string dikonversi menjadi desimal, hasilnya adalah argumen pertama modulo argumen kedua. Atau, Undefined. |
| Nilai lainnya | Nilai lainnya | Undefined. |
ganti (String, String, String)
Mengganti semua kemunculan argumen kedua dalam argumen pertama dengan argumen ketiga. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
replace("abcd", "bc", "x") = "axd".
replace("abcdabcd", "b", "x") = "axcdaxcd".
| Jenis Argumen | Hasil |
|---|---|
Int |
Re String presentasi dariInt. |
Decimal |
Re String presentasi dariDecimal. |
Boolean |
Re String presentasi dari Boolean (“benar” atau “salah”). |
String |
Nilai sumber. |
| Array | Re String presentasi dari Array (menggunakan aturan konversi standar). |
| Objek | Re String presentasi Objek (menggunakan aturan konversi standar). |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
rpad (String, Int)
Mengembalikan argumen string, dilapisi di sisi kanan dengan jumlah spasi yang ditentukan dalam argumen kedua. Ar Int gumen harus antara 0 dan 1000. Jika nilai yang diberikan berada di luar rentang valid ini, argumen disetel ke nilai valid terdekat (0 atau 1000). Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
rpad("hello", 2) = "hello ".
rpad(1, 3) = "1 ".
| Jenis argumen 1 | Argumen tipe 2 | Hasil |
|---|---|---|
String |
Int |
StringItu empuk di sisi kanan dengan sejumlah ruang sama dengan yang disediakanInt. |
String |
Decimal |
DecimalArgumen dibulatkan ke bawah ke yang terdekat Int dan string dilapisi di sisi kanan dengan sejumlah spasi yang sama dengan yang disediakanInt. |
String |
String |
Argumen kedua diubah menjadi aDecimal, yang dibulatkan ke bawah ke yang terdekatInt. Dil String apisi di sisi kanan dengan sejumlah spasi sama dengan nil Int ainya. |
| Nilai lainnya | Int/Decimal/String |
Nilai pertama dikonversi ke String menggunakan konversi standar, dan fungsi rpad diterapkan pada ituString. Jika tidak dapat dikonversi, hasilnya adalahUndefined. |
| Nilai apa pun | Nilai lainnya | Undefined. |
bulat (Desimal)
Membulatkan yang diberikan Decimal ke yang terdekatInt. Jika jar Decimal aknya sama dari dua Int nilai (misalnya, 0,5), dibulatkan Decimal ke atas. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: Round(1.2) = 1.
Round(1.5)= 2.
Round(1.7)= 2.
Round(-1.1)= -1.
Round(-1.5)= -2.
| Jenis Argumen | Hasil |
|---|---|
Int |
Argumennya. |
Decimal |
Decimaldibulatkan ke bawah ke yang terdekatInt. |
String |
Decimaldibulatkan ke bawah ke yang terdekatInt. Jika string tidak dapat dikonversi ke aDecimal, hasilnya adalahUndefined. |
| Nilai lainnya | Undefined. |
rtrim (String)
Menghapus semua spasi putih (tab dan spasi) dari yang disediakanString. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
rtrim(" h i ")= "h i”
| Jenis Argumen | Hasil |
|---|---|
Int |
Re String presentasi dariInt. |
Decimal |
Re String presentasi dariDecimal. |
Boolean |
Re String presentasi dari Boolean (“benar” atau “salah”). |
| Array | Re String presentasi dari Array (menggunakan aturan konversi standar). |
| Objek | Re String presentasi Objek (menggunakan aturan konversi standar). |
| Null | Undefined. |
| Tidak terdefinisi | Undefined |
tanda (Desimal)
Mengembalikan tanda angka yang diberikan. Ketika tanda argumen positif, 1 dikembalikan. Ketika tanda argumen negatif, -1 dikembalikan. Jika argumennya adalah 0, 0 dikembalikan. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
sign(-7)= -1.
sign(0)= 0.
sign(13)= 1.
| Jenis Argumen | Hasil |
|---|---|
Int |
Int, tanda Int nilai. |
Decimal |
Int, tanda Decimal nilai. |
String |
Int, tanda Decimal nilai. String dikonversi ke Decimal nilai, dan tanda Decimal nilai dikembalikan. Jika String tidak dapat dikonversi ke aDecimal, hasilnya adalahUndefined. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru. |
| Nilai lainnya | Undefined. |
sin (Desimal)
Mengembalikan sinus dari bilangan dalam radian. Decimalargumen dibulatkan ke presisi ganda sebelum aplikasi fungsi. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: sin(0) = 0.0
| Jenis Argumen | Hasil |
|---|---|
Int |
Decimal(dengan presisi ganda), sinus argumen. |
Decimal |
Decimal(dengan presisi ganda), sinus argumen. |
Boolean |
Undefined. |
String |
Decimal(dengan presisi ganda), sinus argumen. Jika string tidak dapat dikonversi ke aDecimal, hasilnya adalahUndefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
Undefined |
Undefined. |
sinh (Desimal)
Mengembalikan sinus hiperbolik dari suatu angka. Decimalnilai dibulatkan menjadi presisi ganda sebelum aplikasi fungsi. Hasilnya adalah Decimal nilai presisi ganda. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: sinh(2.3) = 4.936961805545957
| Jenis Argumen | Hasil |
|---|---|
Int |
Decimal(dengan presisi ganda), sinus hiperbolik argumen. |
Decimal |
Decimal(dengan presisi ganda), sinus hiperbolik argumen. |
Boolean |
Undefined. |
String |
Decimal(dengan presisi ganda), sinus hiperbolik argumen. Jika string tidak dapat dikonversi ke aDecimal, hasilnya adalahUndefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
sumber ()
Mengambil alamat IP perangkat atau router yang terhubung dengannya. Jika perangkat Anda terhubung ke internet secara langsung, fungsi akan mengembalikan alamat IP sumber perangkat. Jika perangkat Anda terhubung ke router yang terhubung ke internet, fungsi tersebut akan mengembalikan alamat IP sumber router. Didukung oleh SQL versi 2016-03-23. sourceip()tidak mengambil parameter apa pun.
penting
Alamat IP sumber publik perangkat sering kali merupakan alamat IP dari Gateway Network Address Translation (NAT) terakhir seperti router penyedia layanan internet atau modem kabel Anda.
Contoh:
sourceip()="192.158.1.38"
sourceip()="1.102.103.104"
sourceip()="2001:db8:ff00::12ab:34cd"
Contoh SQL:
SELECT *, sourceip() as deviceIp FROM 'some/topic'
Contoh cara menggunakan fungsi sourceip () dalam tindakan AWS IoT Core aturan:
Contoh 1
Contoh berikut menunjukkan cara memanggil fungsi () sebagai template substitusi dalam tindakan DynamoDB.
{ "topicRulePayload": { "sql": "SELECT * AS message FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "dynamoDB": { "tableName": "my_ddb_table", "hashKeyField": "key", "hashKeyValue": "${sourceip()}", "rangeKeyField": "timestamp", "rangeKeyValue": "${timestamp()}", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_dynamoDB" } } ] } }
Contoh 2
Contoh berikut menunjukkan cara menambahkan fungsi sourceip () sebagai properti pengguna MQTT menggunakan template substitusi.
{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "republish": { "topic": "${topic()}/republish", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_republish", "headers": { "payloadFormatIndicator": "UTF8_DATA", "contentType": "rule/contentType", "correlationData": "cnVsZSBjb3JyZWxhdGlvbiBkYXRh", "userProperties": [ { "key": "ruleKey1", "value": "ruleValue1" }, { "key": "sourceip", "value": "${sourceip()}" } ] } } } ] } }
Anda dapat mengambil alamat IP sumber dari pesan yang diteruskan ke AWS IoT Core aturan dari jalur Message Broker dan Basic Ingest. Anda juga dapat mengambil IP sumber untuk pesan IPv4 dan IPv6. IP sumber akan ditampilkan seperti berikut:
IPv6: yyyy:yyyy:yyyy::yyyy:yyyy
IPv4: xxx.xxx.xxx.xxx
catatan
IP sumber asli tidak akan diteruskan melalui tindakan Publikasikan ulang Publish Ulang.
substring (String, Int [, Int])
Mengharapkan a String diikuti oleh satu atau dua Int nilai. Untuk Int argumen String a dan satu, fungsi ini mengembalikan substring yang disediakan String dari Int indeks yang disediakan (berbasis 0, inklusif) ke akhir. String Untuk Int argumen String a dan dua, fungsi ini mengembalikan substring yang disediakan String dari argumen Int indeks pertama (berbasis 0, inklusif) ke argumen Int indeks kedua (berbasis 0, eksklusif). Indeks yang kurang dari nol diatur ke nol. Indeks yang lebih besar dari String panjang diatur ke String panjang. Untuk versi tiga argumen, jika indeks pertama lebih besar dari (atau sama dengan) indeks kedua, hasilnya adalah kosongString.
Jika argumen yang diberikan bukan (String,Int), atau (StringInt,,Int), konversi standar diterapkan pada argumen untuk mencoba mengubahnya menjadi tipe yang benar. Jika tipe tidak dapat dikonversi, hasil fungsinya adalahUndefined. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
substring("012345", 0)= “012345".
substring("012345", 2)= “2345".
substring("012345", 2.745)= “2345".
substring(123, 2)= “3".
substring("012345", -1)= “012345".
substring(true, 1.2)= “jalan”.
substring(false, -2.411E247)= “salah”.
substring("012345", 1, 3)= “12".
substring("012345", -50, 50)= “012345".
substring("012345", 3, 1) = "".
sql_versi ()
Mengembalikan versi SQL yang ditentukan dalam aturan ini. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
sql_version()= “2016-03-23”
sqrt (Desimal)
Mengembalikan akar kuadrat dari angka. Decimalargumen dibulatkan ke presisi ganda sebelum aplikasi fungsi. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: sqrt(9) = 3.0.
| Jenis Argumen | Hasil |
|---|---|
Int |
Akar kuadrat dari argumen. |
Decimal |
Akar kuadrat dari argumen. |
Boolean |
Undefined. |
String |
Akar kuadrat dari argumen. Jika string tidak dapat dikonversi ke aDecimal, hasilnya adalahUndefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
startswith (String, String)
Meng Boolean embalikan, apakah argumen string pertama dimulai dengan argumen string kedua. Jika salah satu argum Null en adalah atauUndefined, hasilnya adalahUndefined. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
startswith("ranger","ran")= benar
| Jenis argumen 1 | Argumen tipe 2 | Hasil |
|---|---|---|
String |
String |
Apakah string pertama dimulai dengan string kedua. |
| Nilai lainnya | Nilai lainnya | Kedua argumen dikonversi ke string menggunakan aturan konversi standar. Mengembalikan true jika string pertama dimulai dengan string kedua. Jika salah satu argum Null en adalah atauUndefined, hasilnya adalahUndefined. |
tan (Desimal)
Mengembalikan garis singgung dari bilangan dalam radian. Decimalnilai dibulatkan menjadi presisi ganda sebelum aplikasi fungsi. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: tan(3) = -0.1425465430742778
| Jenis Argumen | Hasil |
|---|---|
Int |
Decimal(dengan presisi ganda), garis singgung argumen. |
Decimal |
Decimal(dengan presisi ganda), garis singgung argumen. |
Boolean |
Undefined. |
String |
Decimal(dengan presisi ganda), garis singgung argumen. Jika string tidak dapat dikonversi ke aDecimal, hasilnya adalahUndefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
tanh (Desimal)
Mengembalikan tangen hiperbolik dari bilangan dalam radian. Decimalnilai dibulatkan menjadi presisi ganda sebelum aplikasi fungsi. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: tanh(2.3) = 0.9800963962661914
| Jenis Argumen | Hasil |
|---|---|
Int |
Decimal(dengan presisi ganda), garis singgung hiperbolik dari argumen. |
Decimal |
Decimal(dengan presisi ganda), garis singgung hiperbolik dari argumen. |
Boolean |
Undefined. |
String |
Decimal(dengan presisi ganda), garis singgung hiperbolik dari argumen. Jika string tidak dapat dikonversi ke aDecimal, hasilnya adalahUndefined. |
| Susunan | Undefined. |
| Objek | Undefined. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
time_to_epoch (String, String)
Gunakan time_to_epoch fungsi untuk mengubah string stempel waktu menjadi sejumlah milidetik dalam waktu zaman Unix. Didukung oleh SQL versi 2016-03-23 dan yang lebih baru. Untuk mengonversi milidetik ke string stempel waktu yang diformat, lihat. parse_time (String, Panjang [, String])
time_to_epochFungsi mengharapkan argumen berikut:
- timestamp
-
(String) String stempel waktu yang akan dikonversi menjadi milidetik sejak zaman Unix. Jika string stempel waktu tidak menentukan zona waktu, fungsi menggunakan zona waktu UTC.
- pola
-
(String) P date/time ola yang mengikuti Format Waktu JDK11.
Contoh:
time_to_epoch("2020-04-03 09:45:18 UTC+01:00", "yyyy-MM-dd HH:mm:ss
VV")= 1585903518000
time_to_epoch("18 December 2015", "dd MMMM yyyy")= 1450396800000
time_to_epoch("2007-12-03 10:15:30.592 America/Los_Angeles", "yyyy-MM-dd
HH:mm:ss.SSS z")= 1196705730592
stempel waktu ()
Mengembalikan stempel waktu saat ini dalam milidetik dari 00:00:00 Waktu Universal Terkoordinasi (UTC), Kamis, 1 Januari 1970, seperti yang diamati oleh mesin aturan. AWS IoT Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh: timestamp() = 1481825251155
topik (Desimal)
Mengembalikan topik yang mengirim pesan yang memicu aturan. Jika tidak ada parameter yang ditentukan, seluruh topik dikembalikan. DecimalParameter digunakan untuk menentukan segmen topik tertentu, dengan 1 menunjuk segmen pertama. Untuk topikfoo/bar/baz, topik (1) kembalifoo, topik (2) kembalibar, dan seterusnya. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
topic()= "things/myThings/ThingOne”
topic(1)= “hal-hal”
Ketika Basic Ingest digunakan, awalan awal topik ($aws/rules/) tidak tersedia untuk fungsi topic (). Misalnya, mengingat topik:rule-name
$aws/rules/BuildingManager/Buildings/Building5/Floor2/Room201/Lights
topic() = "Buildings/Building5/Floor2/Room201/Lights"
topic(3)= “Lantai2"
Traceid ()
Mengembalikan ID jejak (UUID) dari pesan MQTT, atau Undefined jika pesan tidak dikirim melalui MQTT. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
traceid() = “12345678-1234-1234-1234-1234-123456789012"
transformasi (String, Objek, Array)
Mengembalikan array objek yang berisi hasil transformasi Object parameter yang ditentukan pada Array parameter.
Didukung oleh SQL versi 2016-03-23 dan yang lebih baru.
- String
Mode transformasi untuk digunakan. Lihat tabel berikut untuk mode transformasi yang didukung dan bagaimana mereka membuat
ArrayparameterResultdariObjectdan.- Objek
Sebuah objek yang berisi atribut untuk diterapkan pada setiap elemen dari
Array.- Array
-
Array objek di mana atribut
Objectditerapkan.Setiap objek dalam Array ini sesuai dengan objek dalam respons fungsi. Setiap objek dalam respons fungsi berisi atribut yang ada dalam objek asli dan atribut yang disediakan oleh
Objectsebagaimana ditentukan oleh mode transformasi yang ditentukan dalamString.
|
|
|
Hasil |
|---|---|---|---|
|
Objek |
Array objek |
Array objek di mana setiap objek berisi atribut elemen dari |
Nilai lainnya |
Nilai apa pun |
Nilai apapun |
Tidak terdefinisi |
catatan
Array yang dikembalikan oleh fungsi ini dibatasi hingga 128 KiB.
Transformasi fungsi contoh 1
Contoh ini menunjukkan bagaimana transform() fungsi menghasilkan satu array objek dari objek data dan array.
Dalam contoh ini, pesan berikut dipublikasikan ke topik A/B MQTT.
{ "attributes": { "data1": 1, "data2": 2 }, "values": [ { "a": 3 }, { "b": 4 }, { "c": 5 } ] }
Pernyataan SQL ini untuk tindakan aturan topik menggunakan transform() fungsi dengan String nilaienrichArray. Dalam contoh ini, Object adalah attributes properti dari payload pesan dan Array merupakan values array, yang berisi tiga objek.
select value transform("enrichArray", attributes, values) from 'A/B'
Setelah menerima payload pesan, pernyataan SQL mengevaluasi respons berikut.
[ { "a": 3, "data1": 1, "data2": 2 }, { "b": 4, "data1": 1, "data2": 2 }, { "c": 5, "data1": 1, "data2": 2 } ]
Transformasi fungsi contoh 2
Contoh ini menunjukkan bagaimana transform() fungsi dapat menggunakan nilai literal untuk memasukkan dan mengganti nama atribut individual dari payload pesan.
Dalam contoh ini, pesan berikut dipublikasikan ke topik A/B MQTT. Ini adalah pesan yang sama yang digunakan diTransformasi fungsi contoh 1.
{ "attributes": { "data1": 1, "data2": 2 }, "values": [ { "a": 3 }, { "b": 4 }, { "c": 5 } ] }
Pernyataan SQL ini untuk tindakan aturan topik menggunakan transform() fungsi dengan String nilaienrichArray. transform()Fungsi Object in memiliki atribut tunggal bernama key dengan nilai attributes.data1 dalam payload pesan dan Array merupakan values array, yang berisi tiga objek yang sama yang digunakan dalam contoh sebelumnya.
select value transform("enrichArray", {"key": attributes.data1}, values) from 'A/B'
Setelah menerima payload pesan, pernyataan SQL ini mengevaluasi respons berikut. Perhatikan bagaimana data1 properti diberi nama key dalam tanggapan.
[ { "a": 3, "key": 1 }, { "b": 4, "key": 1 }, { "c": 5, "key": 1 } ]
Transformasi fungsi contoh 3
Contoh ini menunjukkan bagaimana transform() fungsi dapat digunakan dalam klausa SELECT bersarang untuk memilih beberapa atribut dan membuat objek baru untuk pemrosesan selanjutnya.
Dalam contoh ini, pesan berikut dipublikasikan ke topik A/B MQTT.
{ "data1": "example", "data2": { "a": "first attribute", "b": "second attribute", "c": [ { "x": { "someInt": 5, "someString": "hello" }, "y": true }, { "x": { "someInt": 10, "someString": "world" }, "y": false } ] } }
Fungsi transformasi Object untuk ini adalah objek yang dikembalikan oleh pernyataan SELECT, yang berisi b elemen a dan dari data2 objek pesan. ArrayParameter terdiri dari dua objek dari data2.c array dalam pesan asli.
select value transform('enrichArray', (select a, b from data2), (select value c from data2)) from 'A/B'
Dengan pesan sebelumnya, pernyataan SQL mengevaluasi respons berikut.
[ { "x": { "someInt": 5, "someString": "hello" }, "y": true, "a": "first attribute", "b": "second attribute" }, { "x": { "someInt": 10, "someString": "world" }, "y": false, "a": "first attribute", "b": "second attribute" } ]
Array yang dikembalikan dalam respons ini dapat digunakan dengan tindakan aturan topik yang mendukungbatchMode.
trim (String)
Menghapus semua spasi putih di depan dan di belakang dari yang disediakanString. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
Trim(" hi ") = “hai”
| Jenis Argumen | Hasil |
|---|---|
Int |
Re String presentasi Int dengan semua spasi putih depan dan belakang dihapus. |
Decimal |
Re String presentasi Decimal dengan semua spasi putih depan dan belakang dihapus. |
Boolean |
StringRepresentasi Boolean (“benar” atau “salah”) dengan semua spasi putih depan dan belakang dihapus. |
String |
StringDengan semua spasi putih depan dan tertinggal dihapus. |
| Array | Re String presentasi dari Array menggunakan aturan konversi standar. |
| Objek | Re String presentasi Objek menggunakan aturan konversi standar. |
| Null | Undefined. |
| Tidak terdefinisi | Undefined. |
trunc (Desimal, Int)
Memotong argumen pertama ke jumlah Decimal tempat yang ditentukan oleh argumen kedua. Jika argumen kedua kurang dari nol, itu diatur ke nol. Jika argumen kedua lebih besar dari 34, maka ditetapkan ke 34. Nol terbelakang dilucuti dari hasilnya. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
trunc(2.3, 0)= 2.
trunc(2.3123, 2)= 2,31.
trunc(2.888, 2)= 2,88.
trunc(2.00, 5)= 2.
| Jenis argumen 1 | Argumen tipe 2 | Hasil |
|---|---|---|
Int |
Int |
Nilai sumbernya. |
Int/Decimal |
Int/Decimal |
Argumen pertama dipotong menjadi panjang yang dijelaskan oleh argumen kedua. Argumen kedua, jika bukan aInt, dibulatkan ke bawah ke yang terdekatInt. |
Int/Decimal/String |
Int/Decimal |
Argumen pertama dipotong menjadi panjang yang dijelaskan oleh argumen kedua. Argumen kedua, jika bukan aInt, dibulatkan ke bawah ke yang terdekatInt. A String dikonversi menjadi Decimal nilai. Jika konversi string gagal, hasilnya adalahUndefined. |
| Nilai lainnya | Undefined. |
atas (String)
Mengembalikan versi huruf besar dari yang diberikanString. Non- String argumen dikonversi untuk String menggunakan aturan konversi standar. Didukung oleh SQL versi 2015-10-08 dan yang lebih baru.
Contoh:
upper("hello")= “HALO”
upper(["hello"])= “[\" HALO\ "]”