Tutorial: Menyimpan data perangkat dalam tabel DynamoDB - AWS IoT Core

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 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 aturan AWS IoT

  • Cara menggunakan SQL kueri dan fungsi sederhana dalam pernyataan kueri aturan

  • Cara menggunakan MQTT klien untuk menguji AWS IoT aturan

Tutorial ini membutuhkan waktu sekitar 30 menit untuk menyelesaikannya.

Sebelum Anda memulai tutorial ini, pastikan Anda memiliki:

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 menjelaskan waktu sampel direkam.

  • device_idadalah kunci sortir 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
  1. Buka konsol DynamoDB, lalu pilih Buat tabel.

  2. Di Buat tabel:

    1. Dalam nama Tabel, masukkan nama tabel:wx_data.

    2. Di kunci Partisisample_time, masukkan, dan dalam daftar opsi di sebelah bidang, pilihNumber.

    3. Di Sortir kuncidevice_id, masukkan, dan dalam daftar opsi di sebelah bidang, pilihNumber.

    4. 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 payload 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. Templat 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
  1. Buka hub Aturan AWS IoT konsol. Atau, Anda dapat membuka AWS IoT beranda di dalam AWS Management Console dan menavigasi ke Perutean Pesan> Aturan.

  2. Untuk mulai membuat aturan baru Anda di Aturan, pilih Buat aturan.

  3. Dalam properti Aturan:

    1. Dalam nama Aturan, masukkanwx_data_ddb.

      Ingat bahwa nama aturan harus unik di dalam Anda Akun AWS dan Wilayah, dan tidak dapat memiliki spasi apa pun. Kami telah menggunakan karakter garis bawah dalam nama ini untuk memisahkan dua kata dalam nama aturan.

    2. Dalam Deskripsi aturan, jelaskan aturannya.

      Deskripsi yang bermakna membuatnya lebih mudah untuk mengingat apa yang dilakukan aturan ini dan mengapa Anda membuatnya. Deskripsi bisa selama dibutuhkan, jadi sedetail mungkin.

  4. Pilih Next untuk melanjutkan.

  5. Dalam SQLpernyataan:

    1. Dalam SQLversi, pilih2016-03-23.

    2. Di kotak edit SQLpernyataan, masukkan pernyataan:

      SELECT temperature, humidity, barometer, wind.velocity as wind_velocity, wind.bearing as wind_bearing, FROM 'device/+/data'

      Pernyataan ini:

      • Mendengarkan MQTT pesan dengan topik yang cocok dengan filter device/+/data topik.

      • Memformat elemen wind atribut sebagai atribut individual.

      • Melewatitemperature,humidity, dan barometer atribut tidak berubah.

  6. Pilih Next untuk melanjutkan.

  7. Dalam tindakan Aturan:

    1. Untuk membuka daftar tindakan aturan untuk aturan ini, di Tindakan 1, pilihDynamoDB.

      catatan

      Pastikan Anda memilih DynamoDB dan bukan ynamoDBv D 2 sebagai tindakan aturan.

    2. Dalam nama Tabel, pilih nama tabel DynamoDB yang Anda buat pada langkah sebelumnya:. wx_data

      Tipe kunci Partition dan kolom tipe kunci Sort diisi dengan nilai-nilai dari tabel DynamoDB Anda.

    3. Di kunci Partisi, masukkansample_time.

    4. Dalam nilai kunci partisi, masukkan${timestamp()}.

      Ini adalah yang pertama dari 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 AWS IoT Core Pengembang.

    5. Di tombol Sortir, masukkandevice_id.

    6. Di Sortir 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 melemparkan ke DECIMAL nilai untuk mencocokkan 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.

    7. Di Tulis data pesan ke kolom ini, masukkandevice_data.

      Ini akan membuat device_data kolom dalam tabel DynamoDB.

    8. Biarkan Operasi kosong.

    9. Dalam IAMperan, pilih Buat peran baru.

    10. Dalam 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 wx_data_ddb aturan untuk mengirim data ke tabel wx_data DynamoDB yang Anda buat.

    11. Dalam IAMperan, pilihwx_ddb_role.

    12. Di bagian bawah halaman, pilih Selanjutnya.

  8. Di bagian bawah halaman Tinjau dan buat, pilih Buat untuk membuat aturan.

Langkah 3: Uji AWS IoT aturan dan tabel DynamoDB

Untuk menguji aturan baru, Anda akan menggunakan MQTT klien untuk mempublikasikan dan berlangganan MQTT pesan yang digunakan dalam pengujian ini.

Buka MQTTklien di AWS IoT konsol di jendela baru. Ini akan memungkinkan Anda mengedit aturan tanpa kehilangan konfigurasi MQTT klien Anda. MQTTKlien tidak menyimpan langganan atau log pesan apa pun jika Anda membiarkannya pergi ke halaman lain di konsol. Anda juga ingin jendela konsol terpisah terbuka ke hub DynamoDB Tables di AWS IoT konsol untuk melihat entri baru yang dikirim aturan Anda.

Untuk menggunakan MQTT klien untuk menguji aturan Anda
  1. Di MQTTklien di AWS IoT konsol, berlangganan topik input,device/+/data.

    1. Di MQTT klien, pilih Berlangganan topik.

    2. Untuk filter Topik, masukkan topik filter topik masukan,device/+/data.

    3. Pilih Langganan.

  2. Sekarang, publikasikan pesan ke topik input dengan ID perangkat tertentu,device/22/data. Anda tidak dapat mempublikasikan ke MQTT topik yang berisi karakter wildcard.

    1. Di MQTT klien, pilih Publikasikan ke topik.

    2. Untuk nama Topik, masukkan nama topik masukan,device/22/data.

    3. Untuk payload Pesan, masukkan contoh data berikut.

      { "temperature": 28, "humidity": 80, "barometer": 1013, "wind": { "velocity": 22, "bearing": 255 } }
    4. Untuk mempublikasikan MQTT pesan, pilih Publikasikan.

    5. Sekarang, di MQTT klien, pilih Berlangganan topik. Di kolom Berlangganan, pilih device/+/data langganan. Konfirmasikan bahwa data sampel dari langkah sebelumnya muncul di sana.

  3. Periksa untuk melihat baris dalam tabel DynamoDB yang aturan Anda buat.

    1. Di hub DynamoDB Tables di AWS IoT konsol, pilih wx_data, lalu pilih tab Items.

      Jika Anda sudah berada di tab Item, Anda mungkin perlu menyegarkan tampilan dengan memilih ikon penyegaran di sudut kanan atas header tabel.

    2. Perhatikan bahwa nilai sample_time dalam tabel adalah link 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 tersebut.

    3. Perluas entri device_data untuk melihat data yang dihasilkan dari pernyataan kueri aturan.

    4. Jelajahi berbagai representasi data yang tersedia di tampilan ini. Anda juga dapat mengedit data di tampilan ini.

    5. Setelah Anda selesai meninjau baris data ini, untuk menyimpan perubahan apa pun yang Anda buat, pilih Simpan, atau keluar tanpa menyimpan perubahan apa pun, pilih Batal.

Jika Anda tidak melihat perilaku yang benar, periksa tips pemecahan masalah.

Memecahkan masalah aturan DynamoDB

Berikut adalah beberapa hal untuk diperiksa jika Anda tidak melihat hasil yang Anda harapkan.

  • Anda mendapat spanduk kesalahan

    Jika kesalahan muncul saat Anda mempublikasikan pesan input, perbaiki kesalahan itu terlebih dahulu. Langkah-langkah berikut dapat membantu Anda memperbaiki kesalahan itu.

  • Anda tidak melihat pesan input di MQTT klien

    Setiap kali Anda mempublikasikan pesan masukan Anda ke device/22/data topik, pesan itu akan muncul di MQTT klien jika Anda berlangganan filter device/+/data topik seperti yang dijelaskan dalam prosedur.

    Hal-hal yang harus diperiksa
    • Periksa filter topik yang Anda langgani

      Jika Anda berlangganan topik pesan input 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 langgani dan bandingkan dengan topik yang Anda terbitkan. Nama topik peka huruf besar/kecil dan topik yang Anda langgani harus identik dengan topik yang Anda publikasikan payload pesan.

    • Periksa fungsi publikasi pesan

      Di MQTT klien, di bawah Langganan, pilih perangkat/+/data, periksa topik pesan terbitkan, lalu pilih Publikasikan ke topik. Anda akan melihat payload pesan dari kotak edit di bawah topik yang muncul di daftar pesan.

  • Anda tidak melihat data Anda di tabel DynamoDB

    Hal pertama yang harus dilakukan adalah menyegarkan tampilan dengan memilih ikon penyegaran di sudut kanan atas header tabel. Jika itu tidak menampilkan data yang Anda cari, periksa yang berikut ini.

    Hal-hal yang harus diperiksa
    • Periksa MQTT klien Anda dan aturan yang Anda buat Wilayah AWS

      Konsol tempat Anda menjalankan MQTT klien harus berada di AWS Wilayah yang sama 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 FROM klausa pernyataan kueri aturan.

      Periksa ejaan filter topik dalam pernyataan kueri aturan dengan topik di MQTT klien. Nama topik peka huruf besar/kecil dan topik pesan harus cocok dengan filter topik dalam pernyataan kueri aturan.

    • Periksa isi muatan pesan masukan

      Agar aturan berfungsi, ia harus menemukan bidang data di payload pesan yang dideklarasikan dalam SELECT pernyataan.

      Periksa ejaan temperature bidang dalam pernyataan kueri aturan dengan payload pesan di MQTT klien. Nama bidang peka huruf besar/kecil dan temperature bidang dalam pernyataan kueri aturan harus identik dengan temperature bidang di payload pesan.

      Pastikan bahwa JSON dokumen 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 nama yang ditemukan di payload JSON pesan pesan yang dipublikasikan.

      Buka aturan yang Anda buat di konsol dan periksa nama bidang dalam konfigurasi tindakan aturan dengan yang digunakan di MQTT klien.

    • Periksa peran yang digunakan oleh aturan

      Tindakan aturan harus memiliki izin untuk menerima topik asli dan mempublikasikan topik baru.

      Kebijakan yang mengotorisasi aturan untuk menerima data pesan dan memperbarui tabel DynamoDB khusus untuk topik yang digunakan. Jika mengubah topik atau nama tabel DynamoDB yang digunakan oleh aturan, Anda harus memperbarui peran tindakan aturan untuk memperbarui kebijakannya agar sesuai.

      Jika Anda mencurigai 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 memengaruhi data yang ditulis ke tabel. Berikut adalah beberapa ide untuk Anda mulai.

  • Ubah device_id dalam topik 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 MQTT pesan untuk setiap baris yang ditambahkan ke tabel. Anda dapat menggunakan ini untuk debugging.

Setelah Anda menyelesaikan tutorial ini, periksaTutorial: Memformat notifikasi dengan menggunakan fungsi AWS Lambda.