Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Menyimpan data perangkat dalam tabel DynamoDB
Tutorial ini menunjukkan cara membuat AWS IoT aturan yang mengirimkan data pesan ke tabel DynamoDB.
Dalam tutorial ini, Anda membuat aturan yang mengirimkan data pesan dari perangkat sensor cuaca imajiner ke tabel DynamoDB. Aturan memformat data dari banyak sensor cuaca sehingga mereka dapat ditambahkan ke tabel database tunggal.
Apa yang akan Anda pelajari dalam tutorial ini
-
Cara membuat tabel DynamoDB
-
Cara mengirim data pesan ke tabel DynamoDB dari aturan AWS IoT
-
Cara menggunakan templat substitusi dalam AWS IoT aturan
-
Cara menggunakan kueri dan fungsi SQL sederhana dalam pernyataan kueri aturan
-
Cara menggunakan klien MQTT untuk menguji aturan AWS IoT
Tutorial ini membutuhkan waktu sekitar 30 menit untuk menyelesaikannya.
Dalam tutorial ini, Anda akan:
Sebelum memulai tutorial ini, pastikan Anda memiliki:
-
Penyiapan Akun AWS
Anda akan membutuhkan AWS IoT konsol Anda Akun AWS untuk menyelesaikan tutorial ini.
-
Diulas Lihat pesan MQTT dengan AWS IoT Klien MQTT
Pastikan Anda dapat menggunakan klien MQTT untuk berlangganan dan mempublikasikan topik. Anda akan menggunakan klien MQTT untuk menguji aturan baru Anda dalam prosedur ini.
-
Meninjau Amazon DynamoDB selayang pandang
Jika Anda belum pernah menggunakan DynamoDB sebelumnya, tinjau Mem ulai dengan DynamoDB untuk membiasakan diri dengan konsep dasar dan operasi DynamoDB.
Langkah 1: Buat tabel DynamoDB untuk tutorial ini
Dalam tutorial ini, Anda akan membuat tabel DynamoDB dengan atribut ini untuk merekam data dari perangkat sensor cuaca imajiner:
-
sample_timeadalah kunci utama dan menggambarkan waktu sampel direkam. -
device_idadalah kunci pengurutan dan menjelaskan perangkat yang menyediakan sampel -
device_dataadalah data yang diterima dari perangkat dan diformat oleh pernyataan kueri aturan
Untuk membuat tabel DynamoDB untuk tutorial ini
-
Buka konsol DynamoDB
, lalu pilih Buat tabel. -
Dalam Buat tabel:
-
Di Nama tabel, masukkan nama tabel:
wx_data. -
Di tombol Partisi
sample_time, masukkan, dan dalam daftar opsi di sebelah bidang, pilihNumber. -
Di tombol Ur utkan
device_id, masukkan, dan dalam daftar opsi di sebelah bidang, pilihNumber. -
Di bagian bawah halaman, pilih Buat.
-
Anda akan menentukan device_data nanti, ketika Anda mengkonfigurasi tindakan aturan DynamoDB.
Langkah 2: Buat AWS IoT aturan untuk mengirim data ke tabel DynamoDB
Pada langkah ini, Anda akan menggunakan pernyataan kueri aturan untuk memformat data dari perangkat sensor cuaca imajiner untuk menulis ke tabel database.
Contoh muatan pesan yang diterima dari perangkat sensor cuaca terlihat seperti ini:
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
Untuk entri database, Anda akan menggunakan pernyataan kueri aturan untuk meratakan struktur payload pesan agar terlihat seperti ini:
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind_velocity": 22, "wind_bearing": 255 }
Dalam aturan ini, Anda juga akan menggunakan beberapaTemplat substitusi. Template substitusi adalah ekspresi yang memungkinkan Anda menyisipkan nilai dinamis dari fungsi dan data pesan.
Untuk membuat AWS IoT aturan untuk mengirim data ke tabel DynamoDB
-
Buka hub Aturan AWS IoT konsol
. Atau, Anda dapat membuka ber AWS IoT anda di dalam Konsol Manajemen AWS dan menavigasi ke Perutean Pesan > Aturan. -
Untuk mulai membuat aturan baru di A turan, pilih Buat aturan.
-
Dalam properti Aturan:
-
Di Nama aturan, masukkan
wx_data_ddb.Ingatlah bahwa nama aturan harus unik di dalam Akun AWS dan Wilayah Anda, dan tidak dapat memiliki spasi. Kami telah menggunakan karakter garis bawah dalam nama ini untuk memisahkan dua kata dalam nama aturan.
-
Dalam deskripsi aturan, jelaskan aturan.
Deskripsi yang berarti memudahkan untuk mengingat apa yang dilakukan aturan ini dan mengapa Anda membuatnya. Deskripsinya bisa selama dibutuhkan, jadi sedetail mungkin.
-
-
Pilih Next untuk melanjutkan.
-
Dalam pernyataan SQL:
-
Dalam versi SQL, pilih
2016-03-23. -
Di kotak edit pernyataan SQL, masukkan pernyataan:
SELECT temperature, humidity, barometer, wind.velocity as wind_velocity, wind.bearing as wind_bearing, FROM 'device/+/data'Pernyataan ini:
-
Mendengarkan pesan MQTT dengan topik yang cocok dengan filter
device/+/datatopik. -
Memformat elemen
windatribut sebagai atribut individual. -
Meneruskan
barometeratributtemperaturehumidity,, dan tidak berubah.
-
-
-
Pilih Next untuk melanjutkan.
-
Dalam tindakan Aturan:
-
Untuk membuka daftar tindakan aturan untuk aturan ini, di T indakan 1, pilih
DynamoDB.catatan
Pastikan Anda memilih DynamoDB dan bukan DynamoDBv2 sebagai tindakan aturan.
-
Di Nama tabel, pilih nama tabel DynamoDB yang Anda buat pada langkah sebelumnya:.
wx_dataBidang jenis kunci partisi dan tipe kunci Sort diisi dengan nilai dari tabel DynamoDB Anda.
-
Di tombol Partisi, masukkan
sample_time. -
Dalam nilai kunci partisi, masukkan
${timestamp()}.Ini adalah yang pertama yang akan Templat substitusi Anda gunakan dalam aturan ini. Alih-alih menggunakan nilai dari payload pesan, itu akan menggunakan nilai yang dikembalikan dari fungsi stempel waktu. Untuk mempelajari selengkapnya, lihat stempel waktu di Panduan Peng AWS IoT Core embang.
-
Di tombol Urutkan, masukkan
device_id. -
Dalam Urutkan nilai kunci, masukkan
${cast(topic(2) AS DECIMAL)}.Ini adalah yang kedua dari yang akan Templat substitusi Anda gunakan dalam aturan ini. Ini menyisipkan nilai elemen kedua dalam nama topik, yang merupakan ID perangkat, setelah itu melemparkannya ke nilai DECIMAL agar sesuai dengan format numerik kunci. Untuk mempelajari lebih lanjut tentang topik, lihat topik di Panduan AWS IoT Core Pengembang. Atau untuk mempelajari lebih lanjut tentang casting, lihat pemeran di Panduan AWS IoT Core Pengembang.
-
Di Tulis data pesan ke kolom ini, masukkan
device_data.Ini akan membuat
device_datakolom di tabel DynamoDB. -
Biarkan Operasi kosong.
-
Di peran IAM, pilih Buat peran baru.
-
Di kotak dialog Buat peran, untuk Nama peran, masukkan wx_ddb_ role. Peran baru ini secara otomatis akan berisi kebijakan dengan awalan “aws-iot-rule” yang akan memungkinkan aturan mengirim data ke
wx_data_ddbtabelwx_dataDynamoDB yang Anda buat. -
Dalam peran IAM, pilih
wx_ddb_role. -
Di bagian bawah halaman, pilih Selanjutnya.
-
-
Di bagian bawah halaman T injauan dan buat, pilih Buat untuk membuat aturan.
Langkah 3: Uji AWS IoT aturan dan tabel DynamoDB
Untuk menguji aturan baru, Anda akan menggunakan klien MQTT untuk mempublikasikan dan berlangganan pesan MQTT yang digunakan dalam pengujian ini.
Buka klien MQTT di AWS IoT
konsol
Untuk menggunakan klien MQTT untuk menguji aturan Anda
-
Di klien MQTT di AWS IoT konsol
, berlangganan topik input, device/+/data.-
Di klien MQTT, pilih Berlangganan topik.
-
Untuk Filter Top ik, masukkan topik filter topik masukan,
device/+/data. -
Pilih Langganan.
-
-
Sekarang, publikasikan pesan ke topik input dengan ID perangkat tertentu,
device/22/data. Anda tidak dapat mempublikasikan ke topik MQTT yang berisi karakter wildcard.-
Di klien MQTT, pilih Publikasikan ke topik.
-
Untuk Nama Top ik, masukkan nama topik masukan,
device/22/data. -
Untuk payload pesan, masukkan data sampel berikut.
{ "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } } -
Untuk menerbitkan pesan MQTT, pilih Publi kasikan.
-
Sekarang, di klien MQTT, pilih Berlangganan topik. Di kolom Subscribe, pilih
device/+/datalangganan. Konfirmasikan bahwa data sampel dari langkah sebelumnya muncul di sana.
-
-
Periksa untuk melihat baris dalam tabel DynamoDB yang dibuat aturan Anda.
-
Di hub DynamoDB Tables di AWS IoT konsol
, pilih wx_data, lalu pilih tab Item. Jika Anda sudah berada di tab Item, Anda mungkin perlu menyegarkan tampilan dengan memilih ikon refresh di sudut kanan atas header tabel.
-
Perhatikan bahwa nilai sample_time dalam tabel adalah tautan dan buka satu. Jika Anda baru saja mengirim pesan pertama Anda, itu akan menjadi satu-satunya dalam daftar.
Tautan ini menampilkan semua data di baris tabel itu.
-
Perluas entri device_data untuk melihat data yang dihasilkan dari pernyataan kueri aturan.
-
Jelajahi berbagai representasi data yang tersedia di tampilan ini. Anda juga dapat mengedit data dalam tampilan ini.
-
Setelah selesai meninjau baris data ini, untuk menyimpan perubahan yang Anda buat, pilih S impan, atau untuk keluar tanpa menyimpan perubahan apa pun, pilih Bat al.
-
Jika Anda tidak melihat perilaku yang benar, periksa tips pemecahan masalah.
Memecahkan masalah aturan DynamoDB
Berikut adalah beberapa hal yang perlu diperiksa jika Anda tidak melihat hasil yang Anda harapkan.
-
Anda mendapat spanduk kesalahan
Jika kesalahan muncul saat Anda menerbitkan pesan input, perbaiki kesalahan itu terlebih dahulu. Langkah-langkah berikut dapat membantu Anda memperbaiki kesalahan itu.
-
Anda tidak melihat pesan input di klien MQTT
Setiap kali Anda mempublikasikan pesan input Anda ke
device/22/datatopik, pesan itu akan muncul di klien MQTT jika Anda berlangganan filterdevice/+/datatopik seperti yang dijelaskan dalam prosedur.Hal-hal yang harus diperiksa
-
Periksa filter topik yang Anda berlangganan
Jika Anda berlangganan topik pesan masukan seperti yang dijelaskan dalam prosedur, Anda akan melihat salinan pesan input setiap kali Anda mempublikasikannya.
Jika Anda tidak melihat pesan, periksa nama topik yang Anda berlangganan dan bandingkan dengan topik yang Anda publikasikan. Nama topik peka huruf besar/kecil dan topik yang Anda berlangganan harus identik dengan topik tempat Anda menerbitkan payload pesan.
-
Periksa fungsi penerbitan pesan
Di klien MQTT, di bawah Lang ganan, pilih per angkat/+/data, periksa topik pesan publikasi, lalu pilih Publikasikan ke topik. Anda akan melihat payload pesan dari kotak edit di bawah topik muncul di daftar pesan.
-
-
Anda tidak melihat data Anda di tabel DynamoDB
Hal pertama yang harus dilakukan adalah menyegarkan tampilan dengan memilih ikon refresh di sudut kanan atas header tabel. Jika itu tidak menampilkan data yang Anda cari, periksa yang berikut ini.
Hal-hal yang harus diperiksa
-
Periksa Wilayah AWS dari klien MQTT Anda dan aturan yang Anda buat
Konsol tempat Anda menjalankan klien MQTT harus berada di Wilayah yang sama AWS dengan aturan yang Anda buat.
-
Periksa topik pesan masukan dalam pernyataan kueri aturan
Agar aturan berfungsi, aturan harus menerima pesan dengan nama topik yang cocok dengan filter topik dalam klausa FROM dari pernyataan kueri aturan.
Periksa ejaan filter topik dalam pernyataan kueri aturan dengan ejaan topik di klien MQTT. Nama topik peka huruf besar/kecil dan topik pesan harus cocok dengan filter topik dalam pernyataan kueri aturan.
-
Periksa isi muatan pesan input
Agar aturan berfungsi, ia harus menemukan bidang data dalam payload pesan yang dideklarasikan dalam pernyataan SELECT.
Periksa ejaan
temperaturebidang dalam pernyataan kueri aturan dengan payload pesan di klien MQTT. Nama bidang peka huruf besar/kecil dantemperaturebidang dalam pernyataan kueri aturan harus identik dengantemperaturebidang dalam payload pesan.Pastikan dokumen JSON dalam payload pesan diformat dengan benar. Jika JSON memiliki kesalahan, seperti koma yang hilang, aturan tidak akan dapat membacanya.
-
Periksa nama kunci dan bidang yang digunakan dalam tindakan aturan
Nama bidang yang digunakan dalam aturan topik harus cocok dengan yang ditemukan di payload pesan JSON dari pesan yang diterbitkan.
Buka aturan yang Anda buat di konsol dan periksa nama bidang dalam konfigurasi tindakan aturan dengan yang digunakan di klien MQTT.
-
Periksa peran yang digunakan oleh aturan
Tindakan aturan harus memiliki izin untuk menerima topik asli dan menerbitkan topik baru.
Kebijakan yang mengotorisasi aturan untuk menerima data pesan dan memperbarui tabel DynamoDB khusus untuk topik yang digunakan. Jika Anda mengubah topik atau nama tabel DynamoDB yang digunakan oleh aturan, Anda harus memperbarui peran tindakan aturan untuk memperbarui kebijakannya agar sesuai.
Jika Anda menduga ini masalahnya, edit tindakan aturan dan buat peran baru. Peran baru yang dibuat oleh tindakan aturan menerima otorisasi yang diperlukan untuk melakukan tindakan ini.
-
Langkah 4: Tinjau hasil dan langkah selanjutnya
Setelah Anda mengirim beberapa pesan ke tabel DynamoDB dengan aturan ini, coba bereksperimen dengannya untuk melihat bagaimana mengubah beberapa aspek dari tutorial mempengaruhi data yang ditulis ke tabel. Berikut adalah beberapa ide untuk membantu Anda memulai.
-
Ubah
device_idtopik pesan input dan amati efeknya pada data. Anda dapat menggunakan ini untuk mensimulasikan penerimaan data dari beberapa sensor cuaca. -
Ubah bidang yang dipilih dalam pernyataan kueri aturan dan amati efeknya pada data. Anda dapat menggunakan ini untuk memfilter data yang disimpan dalam tabel.
-
Tambahkan tindakan aturan penerbitan ulang untuk mengirim pesan MQTT untuk setiap baris yang ditambahkan ke tabel. Anda dapat menggunakan ini untuk debugging.
Setelah Anda menyelesaikan tutorial ini, periksaTutorial: Memformat notifikasi dengan menggunakan AWS Lambda Fungsi.