AWS IoT Greengrass Version 1 memasuki fase umur panjang pada 30 Juni 2023. Untuk informasi selengkapnya, lihat kebijakan AWS IoT Greengrass V1 pemeliharaan. Setelah tanggal ini, tidak AWS IoT Greengrass V1 akan merilis pembaruan yang menyediakan fitur, penyempurnaan, perbaikan bug, atau patch keamanan. Perangkat yang berjalan AWS IoT Greengrass V1 tidak akan terganggu dan akan terus beroperasi dan terhubung ke cloud. Kami sangat menyarankan Anda bermigrasi ke AWS IoT Greengrass Version 2, yang menambahkan fitur baru yang signifikan dan dukungan untuk platform tambahan.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan konteks IDT
Ketika IDT menjalankan rangkaian tes, rangkaian tes tersebut dapat mengakses serangkaian data yang dapat digunakan untuk menentukan bagaimana setiap tes akan berjalan. Data ini disebut konteks IDT. Sebagai contoh, konfigurasi data pengguna yang disediakan oleh test runner di file userdata.json
tersedia pada rangkaian tes dalam konteks IDT.
Konteks IDT dapat dianggap sebagai dokumen JSON hanya-baca. Rangkaian uji dapat mengambil data dari dan menuliskan data ke konteks tersebut dengan menggunakan jenis data JSON standar seperti objek, rangkaian, angka, dan sebagainya.
Skema konteks
Konteks state machine menggunakan format berikut:
{ "config": { <config-json-content> "timeoutMultiplier": timeout-multiplier }, "device": { <device-json-device-element> }, "devicePool": { <device-json-pool-element> }, "resource": { "devices": [ { <resource-json-device-element> "name": "<resource-name>" } ] }, "testData": { "awsCredentials": { "awsAccessKeyId": "<access-key-id>", "awsSecretAccessKey": "<secret-access-key>", "awsSessionToken": "<session-token>" }, "logFilePath": "/path/to/log/file" }, "userData": { <userdata-json-content> } }
config
-
Informasi dari config.json file. Kolom
config
juga berisi kolom tambahan berikut:config.timeoutMultiplier
-
Pengganda untuk setiap nilai batas waktu yang digunakan oleh rangkaian tes. Nilai ini ditentukan oleh test runner dari IDT CLI. Nilai default-nya adalah
1
.
device
-
Informasi tentang kolam perangkat yang dipilih untuk uji coba. Informasi ini setara dengan elemen rangkaian
devices
dalam file device.json untuk perangkat yang dipilih. devicePool
-
Informasi tentang kolam perangkat yang dipilih untuk uji coba. Informasi ini setara dengan elemen rangkaian kolam perangkat tingkat ata yang ditentukan di file
device.json
untuk kolam perangkat yang dipilih. resource
-
Informasi tentang perangkat sumber daya dari file
resource.json
.resource.devices
-
Informasi ini setara dengan rangkaian
devices
yang ditentukan dalam fileresource.json
. Setiap elemendevices
mencakup kolom tambahan berikut:resource.device.name
-
Nama sumber daya. Nilai ini diatur ke nilai
requiredResource.name
pada filetest.json
.
testData.awsCredentials
-
Kredensial AWS yang digunakan oleh uji tersebut untuk terhubung ke cloud AWS. Informasi ini diperoleh dari file
config.json
. testData.logFilePath
-
Path ke file log di mana uji kasus menuliskan pesan log. Rangkaian tes membuat file ini jika tidak ada.
userData
-
Informasi yang diberikan oleh test runner di file userdata.json.
Akses data dalam konteks
Anda dapat melakukan kueri atas konteks tersebut dengan menggunakan notasi JSONPath dari file JSON Anda dan dari executable teks Anda dengan API GetContextValue
dan GetContextString
. Sintaks untuk string JSONPath untuk mengakses konteks IDT bervariasi sebagai berikut:
-
Pada
suite.json
dantest.json
, Anda menggunakan{{
. Artinya, jangan gunakan elemen rootquery
}}$.
untuk memulai ekspresi Anda. -
Pada
statemachine.json
, Anda menggunakan{{$.
.query
}} -
Dalam perintah API, Anda menggunakan
atauquery
{{$.
, tergantung pada perintahnya. Untuk informasi lebih lanjut, lihat dokumentasi sebaris in SDK.query
}}
Tabel berikut menjelaskan operator dalam ekspresi JSONPath yang khas:
Operator | Description |
---|---|
$ |
The root element. Because the top-level context
value for IDT is an object, you will typically use $. to
start your queries. |
.childName |
Accesses the child element with name
childName from an object. If applied to an array,
yields a new array with this operator applied to each element. The
element name is case sensitive. For example, the query to access the
awsRegion value in the config object is
$ .config.awsRegion . |
[start:end] |
Filters elements from an array, retrieving items
beginning from the start index and going up to the
end index, both inclusive. |
[index1, index2,..., indexN] |
Filters elements from an array, retrieving items from only the specified indices. |
[?(expr)] |
Filters elements from an array using the
expr expression. This expression must evaluate to a
boolean value. |
Untuk membuat ekspresi filter, gunakan sintaks berikut:
<jsonpath>
|<value>
operator
<jsonpath>
|<value>
Dalam sintaks ini:
-
jsonpath
adalah JSONPath yang menggunakan sintaks JSON standar. -
value
adalah setiap nilai kustom yang menggunakan sintaks JSON standar. -
operator
adalah salah satu dari operator berikut ini:-
<
(Kurang dari) -
<=
(Kurang dari atau sama dengan) -
==
(Sama dengan)Jika JSONPath atau nilai dalam ekspresi Anda adalah rangkaian, boolean, atau nilai objek, maka ini adalah satu-satunya operator biner yang didukung yang dapat Anda gunakan.
-
>=
(Lebih besar dari atau sama dengan) -
>
(Lebih besar dari) -
=~
(Kecocokan ekspresi reguler). Untuk menggunakan operator ini dalam ekspresi filter, JSONPath atau nilai di sisi kiri ekspresi Anda harus dievaluasi pada string dan sisi kanannya harus berupa nilai pola yang mengikuti sintaks RE2.
-
Anda dapat menggunakan kueri JSONPath dalam bentuk {{query
}} sebagai string placeholder di kolom args
dan environmentVariables
pada file test.json
dan pada kolom environmentVariables
di file suite.json
. IDT melakukan pencarian konteks dan mengisi kolom dengan nilai kueri yang dievaluasi. Misalnya, di file suite.json
, Anda dapat menggunakan string placeholder untuk menentukan nilai variabel lingkungan yang berubah dengan setiap uji kasus dan IDT akan mengisi variabel lingkungan dengan nilai yang benar untuk setiap uji kasus. Namun, ketika Anda menggunakan string placeholder di file test.json
dan suite.json
, pertimbangan berikut berlaku untuk kueri Anda:
-
Anda harus menuliskan setiap kejadian kunci
devicePool
dalam kueri Anda semua dengan huruf kecil. Artinya, gunakandevicepool
sebagai gantinya -
Untuk rangkaian, Anda hanya dapat menggunakan rangkaian string. Selain itu, rangkaian menggunakan format
item1, item2,...,itemN
non-standar. Jika rangkaian tersebut hanya berisi satu elemen, maka rangkaian itu akan diserialkan sebagaiitem
, sehingga menjadikannya tidak dapat dibedakan dari kolom string. -
Anda tidak dapat menggunakan placeholder untuk mengambil objek dari konteks.
Karena pertimbangan ini, kami merekomendasikan bahwa bila memungkinkan, Anda menggunakan API untuk mengakses konteks dalam logika pengujian Anda dan bukan string placeholder di file test.json
dan suite.json
. Namun, dalam beberapa kasus mungkin lebih nyaman untuk menggunakan placeholder JSONPath untuk mengambil string tunggal untuk ditetapkan sebagai variabel lingkungan.