Konektor IoT Analytics - AWS IoT Greengrass

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.

Konektor IoT Analytics

Awas

Konektor ini telah pindah ke fase umur yang diperpanjang, dan AWS IoT Greengrass tidak akan merilis pembaruan yang menyediakan fitur, penyempurnaan pada fitur yang ada, patch keamanan, atau perbaikan bug. Untuk informasi selengkapnya, lihat AWS IoT Greengrass Version 1 kebijakan pemeliharaan.

Konektor IoT Analytics mengirimkan data AWS IoT Analytics perangkat lokal ke. Anda dapat menggunakan konektor ini sebagai hub pusat untuk mengumpulkan data dari sensor pada perangkat inti Greengrass dan dari perangkat klien yang terhubung. Konektor mengirimkan data ke AWS IoT Analytics saluran di saat ini Akun AWS dan Wilayah. Hal ini dapat mengirim data ke saluran tujuan default dan saluran yang secara dinamis ditentukan.

catatan

AWS IoT Analytics adalah layanan yang dikelola sepenuhnya yang memungkinkan Anda mengumpulkan, menyimpan, memproses, dan menanyakan data IoT. Pada tahun AWS IoT Analytics, data dapat dianalisis dan diproses lebih lanjut. Sebagai contoh, ini dapat digunakan untuk melatih model ML untuk memantau kondisi mesin atau untuk menguji strategi pemodelan baru. Untuk informasi lebih lanjut, lihat Apa itu AWS IoT Analytics? dalam AWS IoT Analytics User Guide.

Konektor menerima data yang diformat dan tidak diformat pada input topik MQTT. Mendukung dua topik yang telah ditetapkan dalam mana saluran tujuan ditentukan inline. Hal ini juga dapat menerima pesan pada topik yang ditetapkan pelanggan yang dikonfigurasi dalam langganan. Ini dapat digunakan untuk merutekan pesan dari perangkat klien yang mempublikasikan ke topik tetap atau menangani data yang tidak terstruktur atau bergantung pada tumpukan dari perangkat yang dibatasi sumber daya.

Konektor ini menggunakan BatchPutMessageAPI untuk mengirim data (sebagai string yang disandikan JSON atau base64) ke saluran tujuan. Konektor dapat memproses data mentah ke dalam format yang sesuai dengan persyaratan API. Konektor buffer pesan input dalam per-channel antrian dan asynchronously memproses batch. Ini menyediakan parameter yang mengizinkan Anda untuk mengontrol antrian dan perilaku batching dan membatasi konsumsi memori. Sebagai contoh, Anda dapat mengonfigurasi ukuran antrian maksimum, interval batch, ukuran memori, dan jumlah saluran aktif.

Konektor ini memiliki versi berikut.

Versi

ARN

4

arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/4

3

arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/3

2

arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/2

1

arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/1

Untuk informasi tentang perubahan versi, lihat Changelog.

Persyaratan

Konektor ini memiliki persyaratan sebagai berikut:

Version 3 - 4
  • AWS IoT Greengrass Perangkat lunak inti v1.9.3 atau yang lebih baru.

  • Python versi 3.7 atau 3.8 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.

    catatan

    Untuk menggunakan Python 3.8, jalankan perintah berikut untuk membuat link simbolik dari folder instalasi default Python 3.7 ke binari Python 3.8 yang diinstal.

    sudo ln -s path-to-python-3.8/python3.8 /usr/bin/python3.7

    Ini mengonfigurasi perangkat Anda untuk memenuhi persyaratan Python untuk AWS IoT Greengrass.

  • Konektor ini hanya dapat digunakan dalam Wilayah Amazon Web Services di mana kedua AWS IoT Greengrass dan AWS IoT Analytics didukung.

  • Semua AWS IoT Analytics entitas dan alur kerja terkait dibuat dan dikonfigurasi. Entitas termasuk saluran, alur, penyimpanan data, dan set data. Untuk informasi lebih lanjut, lihat AWS CLI atau prosedur konsol dalam AWS IoT Analytics Panduan Pengguna.

    catatan

    AWS IoT Analytics Saluran tujuan harus menggunakan akun yang sama dan Wilayah AWS sama dengan konektor ini.

  • Pada Peran grup Greengrass dikonfigurasi untuk mengizinkan iotanalytics:BatchPutMessage tindakan dalam saluran tujuan, seperti yang ditunjukkan dalam kebijakan IAM berikut. Saluran harus dalam arus Akun AWS dan Wilayah.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1528133056761", "Action": [ "iotanalytics:BatchPutMessage" ], "Effect": "Allow", "Resource": [ "arn:aws:iotanalytics:region:account-id:channel/channel_1_name", "arn:aws:iotanalytics:region:account-id:channel/channel_2_name" ] } ] }

    Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat Mengelola peran grup Greengrass (konsol) atau Mengelola peran grup Greengrass (CLI).

Versions 1 - 2
  • AWS IoT Greengrass Perangkat lunak inti v1.7 atau yang lebih baru.

  • Python versi 2.7 diinstal pada perangkat core dan ditambahkan ke variabel lingkungan PATH.

  • Konektor ini hanya dapat digunakan dalam Wilayah Amazon Web Services di mana kedua AWS IoT Greengrass dan AWS IoT Analytics didukung.

  • Semua AWS IoT Analytics entitas dan alur kerja terkait dibuat dan dikonfigurasi. Entitas termasuk saluran, alur, penyimpanan data, dan set data. Untuk informasi lebih lanjut, lihat AWS CLI atau prosedur konsol dalam AWS IoT Analytics Panduan Pengguna.

    catatan

    AWS IoT Analytics Saluran tujuan harus menggunakan akun yang sama dan Wilayah AWS sama dengan konektor ini.

  • Pada Peran grup Greengrass dikonfigurasi untuk mengizinkan iotanalytics:BatchPutMessage tindakan dalam saluran tujuan, seperti yang ditunjukkan dalam kebijakan IAM berikut. Saluran harus dalam arus Akun AWS dan Wilayah.

    { "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1528133056761", "Action": [ "iotanalytics:BatchPutMessage" ], "Effect": "Allow", "Resource": [ "arn:aws:iotanalytics:region:account-id:channel/channel_1_name", "arn:aws:iotanalytics:region:account-id:channel/channel_2_name" ] } ] }

    Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat Mengelola peran grup Greengrass (konsol) atau Mengelola peran grup Greengrass (CLI).

Parameter

MemorySize

Jumlah memori (dalam KB) untuk mengalokasikan ke konektor ini.

Nama tampilan di AWS IoT konsol: Ukuran memori

Wajib: true

Jenis: string

Pola yang valid: ^[0-9]+$

PublishRegion

Di Wilayah AWS mana AWS IoT Analytics saluran Anda dibuat. Gunakan Wilayah yang sama dengan konektornya.

catatan

Ini juga harus sesuai dengan Wilayah untuk saluran yang ditentukan dalam peran grup.

Nama tampilan di AWS IoT konsol: Publikasikan wilayah

Wajib: false

Jenis: string

Pola yang valid: ^$|([a-z]{2}-[a-z]+-\\d{1})

PublishInterval

Interval (dalam detik) untuk menerbitkan sekumpulan data yang diterima ke AWS IoT Analytics.

Nama tampilan di AWS IoT konsol: Publikasikan interval

Wajib: false

Jenis: string

Nilai default: 1

Pola yang valid: $|^[0-9]+$

IotAnalyticsMaxActiveChannels

Jumlah maksimum AWS IoT Analytics saluran yang secara aktif diperhatikan oleh konektor. Ini harus lebih besar dari 0, dan setidaknya sama dengan jumlah saluran yang Anda harapkan konektor untuk menerbitkankan ke pada waktu tertentu.

Anda dapat menggunakan parameter ini untuk membatasi konsumsi memori dengan membatasi jumlah antrian yang konektor dapat mengelola pada waktu tertentu. Antrian dihapus ketika semua pesan antrian dikirim.

Nama tampilan di AWS IoT konsol: Jumlah maksimum saluran aktif

Wajib: false

Jenis: string

Nilai default: 50

Pola yang valid: ^$|^[1-9][0-9]*$

IotAnalyticsQueueDropBehavior

Perilaku untuk batal pesan dari antrian saluran ketika antrian penuh.

Nama tampilan di AWS IoT konsol: Perilaku penurunan antrian

Wajib: false

Jenis: string

Nilai yang valid: DROP_NEWEST or DROP_OLDEST

Nilai default: DROP_NEWEST

Pola yang valid: ^DROP_NEWEST$|^DROP_OLDEST$

IotAnalyticsQueueSizePerChannel

Jumlah maksimum pesan untuk mempertahankan dalam memori (per saluran) sebelum pesan dikirim atau dibatalkan. Ini harus lebih besar dari 0.

Nama tampilan di AWS IoT konsol: Ukuran antrian maksimum per saluran

Wajib: false

Jenis: string

Nilai default: 2048

Pola yang valid: ^$|^[1-9][0-9]*$

IotAnalyticsBatchSizePerChannel

Jumlah maksimum pesan untuk dikirim ke AWS IoT Analytics saluran dalam satu permintaan batch. Ini harus lebih besar dari 0.

Nama tampilan di AWS IoT konsol: Jumlah maksimum pesan ke batch per saluran

Wajib: false

Jenis: string

Nilai default: 5

Pola yang valid: ^$|^[1-9][0-9]*$

IotAnalyticsDefaultChannelName

Nama AWS IoT Analytics saluran yang digunakan konektor ini untuk pesan yang dikirim ke topik input yang ditentukan pelanggan.

Nama tampilan di AWS IoT konsol: Nama saluran default

Wajib: false

Jenis: string

Pola yang valid: ^[a-zA-Z0-9_]$

IsolationMode

Mode kontainerisasi untuk konektor ini. Defaultnya adalahGreengrassContainer, yang berarti konektor berjalan di lingkungan runtime yang terisolasi di dalam AWS IoT Greengrass container.

catatan

Pengaturan kontainerisasi default untuk grup tidak berlaku untuk konektor.

Nama tampilan di AWS IoT konsol: Mode isolasi kontainer

Wajib: false

Jenis: string

Nilai yang valid: GreengrassContainer or NoContainer

Pola yang valid: ^NoContainer$|^GreengrassContainer$

Buat Contoh Konektor (AWS CLI)

Perintah CLI berikut membuat ConnectorDefinition dengan versi awal yang berisi konektor IoT Analytics.

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyIoTAnalyticsApplication", "ConnectorArn": "arn:aws:greengrass:region::/connectors/IoTAnalytics/versions/3", "Parameters": { "MemorySize": "65535", "PublishRegion": "us-west-1", "PublishInterval": "2", "IotAnalyticsMaxActiveChannels": "25", "IotAnalyticsQueueDropBehavior": "DROP_OLDEST", "IotAnalyticsQueueSizePerChannel": "1028", "IotAnalyticsBatchSizePerChannel": "5", "IotAnalyticsDefaultChannelName": "my_channel" } } ] }'
catatan

Fungsi Lambda dalam konektor mempunyai siklus hidup yang berumur panjang ini.

Di AWS IoT Greengrass konsol, Anda dapat menambahkan konektor dari halaman Konektor grup. Untuk informasi selengkapnya, lihat Memulai dengan konektor Greengrass (konsol).

Data input

Konektor ini menerima data pada topik MQTT yang telah ditetapkan dan ditetapkan pelanggan. Penerbit dapat berupa perangkat klien, fungsi Lambda, atau konektor lainnya.

Topik yang telah ditetapkan

Konektor mendukung berikut dua terstruktur MQTT topik yang mengizinkan penerbit untuk menentukan nama saluran inline.

  • Sebuah pesan yang telah diformat pada iotanalytics/channels/+/messages/put topik. Data IoT dalam pesan input ini harus diformat sebagai JSON atau base64-encoded string.

  • Pesan yang belum diformat pada iotanalytics/channels/+/messages/binary/put topik. Pesan input yang diterima pada topik ini diperlakukan sebagai data biner dan dapat berisi jenis data.

    Untuk menerbitkankan ke topik yang telah ditetapkan, ganti + wildcard dengan nama saluran. Sebagai contoh:

    iotanalytics/channels/my_channel/messages/put
Topik yang ditetapkan pelanggan

Konektor mendukung # topik sintaks, yang mengizinkan untuk menerima pesan input pada setiap topik MQTT yang Anda konfigurasi dalam langganan. Kami menyarankan Anda menentukan jalur topik alih-alih hanya menggunakan # wildcard dalam langganan Anda. Pesan ini dikirim ke saluran default yang Anda tentukan untuk konektor.

Pesan input pada topik yang ditetapkan pelanggan diperlakukan sebagai data biner. Mereka dapat menggunakan format pesan dan dapat berisi jenis data. Anda dapat menggunakan topik yang ditetapkan pelanggan untuk merutekan pesan dari perangkat yang diterbitkankan ke topik tetap. Anda juga dapat menggunakannya untuk menerima data input dari perangkat klien yang tidak dapat memproses data menjadi pesan yang diformat untuk dikirim ke konektor.

Untuk informasi lebih lanjut tentang langganan dan topik MQTT, lihat Input dan output.

Peran grup harus mengizinkan tindakan iotanalytics:BatchPutMessage pada semua bucket tujuan. Untuk informasi selengkapnya, lihat Persyaratan.

Filter topik: iotanalytics/channels/+/messages/put

Gunakan topik ini untuk mengirim pesan yang diformat ke konektor dan secara dinamis menentukan saluran tujuan. Topik ini juga mengizinkan Anda untuk menentukan ID yang dikembalikan dalam output respon. Konektor memverifikasi IDs yang unik untuk setiap pesan dalam BatchPutMessage permintaan keluar yang dikirimkannya. AWS IoT Analytics Pesan yang memiliki ID duplikat dibatalkan.

Data input yang dikirim ke topik ini harus menggunakan format pesan berikut.

Properti pesan
request

Data untuk mengirim ke saluran tertentu.

Wajib: true

Jenis: object yang mencakup properti berikut:

message

Perangkat atau sensor data sebagai JSON atau base64-encoded string.

Wajib: true

Jenis: string

id

ID arbitrer untuk permintaan. Properti ini digunakan untuk memetakan permintaan input untuk respons output. Ketika ditentukan, id properti dalam objek respon diatur ke nilai ini. Jika Anda menghilangkan properti ini, konektor menghasilkan ID.

Wajib: false

Jenis: string

Pola yang valid: .*

Contoh masukan
{ "request": { "message" : "{\"temp\":23.33}" }, "id" : "req123" }
Filter topik: iotanalytics/channels/+/messages/binary/put

Gunakan topik ini untuk mengirim pesan yang tidak diformat ke konektor dan secara dinamis menentukan saluran tujuan.

Data konektor tidak mengurai pesan input yang diterima pada topik ini. Ini memperlakukan mereka sebagai data biner. Sebelum mengirim pesan ke AWS IoT Analytics, konektor mengkodekan dan memformatnya agar sesuai dengan persyaratan BatchPutMessage API:

  • Konektor base64-encodes data mentah dan termasuk muatan dikodekan dalam permintaan BatchPutMessage outbound.

  • Konektor menghasilkan dan menetapkan ID untuk setiap pesan input.

    catatan

    Output respons konektor tidak menyertakan korelasi ID untuk pesan input ini.

Properti pesan

Tidak ada.

Filter topik: #

Gunakan topik ini untuk mengirim format pesan apa pun ke saluran default. Ini sangat berguna ketika perangkat klien Anda mempublikasikan ke topik tetap atau ketika Anda ingin mengirim data ke saluran default dari perangkat klien yang tidak dapat memproses data ke dalam format pesan yang didukung konektor.

Anda menentukan sintaks topik dalam langganan yang Anda buat untuk menyambung konektor ini ke sumber data. Kami menyarankan Anda menentukan jalur topik alih-alih hanya menggunakan # wildcard dalam langganan Anda.

Data konektor tidak mengurai pesan yang diterbitkan untuk topik input ini. Semua pesan input diperlakukan sebagai data biner. Sebelum mengirim pesan ke AWS IoT Analytics, konektor mengkodekan dan memformatnya agar sesuai dengan persyaratan BatchPutMessage API:

  • Konektor base64-encodes data mentah dan termasuk muatan dikodekan dalam permintaan BatchPutMessage outbound.

  • Konektor menghasilkan dan menetapkan ID untuk setiap pesan input.

    catatan

    Output respons konektor tidak menyertakan korelasi ID untuk pesan input ini.

Properti pesan

Tidak ada.

Data output

Konektor ini menerbitkan informasi status sebagai data output pada topik MQTT. Informasi ini berisi respons yang dikembalikan oleh AWS IoT Analytics untuk setiap pesan masukan yang diterima dan dikirim AWS IoT Analytics.

Filter topik dalam langganan

iotanalytics/messages/put/status

Contoh keluaran: Sukses
{ "response" : { "status" : "success" }, "id" : "req123" }
Contoh keluaran: Kegagalan
{ "response" : { "status" : "fail", "error" : "ResourceNotFoundException", "error_message" : "A resource with the specified name could not be found." }, "id" : "req123" }
catatan

Jika konektor mendeteksi kesalahan yang dapat diulang (sebagai contoh, kesalahan koneksi), konektor mengulang lagi publikasinya dalam batch berikutnya. Backoff eksponensial ditangani oleh SDK. AWS Permintaan dengan kesalahan retryable ditambahkan kembali ke antrean saluran untuk penerbitan lebih lanjut sesuai dengan IotAnalyticsQueueDropBehavior parameter.

Contoh Penggunaan

Gunakan langkah-langkah tingkat tinggi berikut untuk mengatur contoh fungsi Lambda Python 3.7 yang dapat Anda gunakan untuk mencoba konektor.

catatan
  1. Pastikan Anda memenuhi persyaratan untuk konektor.

    Untuk persyaratan peran grup, Anda harus mengonfigurasi peran untuk memberikan izin yang diperlukan dan memastikan peran telah ditambahkan ke grup. Untuk informasi lebih lanjut, lihat Mengelola peran grup Greengrass (konsol) atau Mengelola peran grup Greengrass (CLI).

  2. Buat dan terbitkan fungsi Lambda yang mengirimkan data input ke konektor.

    Simpan kode contoh sebagai file PY. Unduh dan unzip AWS IoT Greengrass Core SDK for Python. Kemudian, buat paket zip yang berisi file PY dan folder greengrasssdk dalam tingkat root. Paket zip ini adalah paket deployment yang Anda unggah ke AWS Lambda.

    Setelah Anda membuat fungsi Lambda Python 3.7, terbitkankan versi fungsi dan buat alias.

  3. Konfigurasikan grup Greengrass Anda.

    1. Tambahkan fungsi Lambda dengan aliasnya (direkomendasikan). Konfigurasikan siklus hidup Lambda sebagai berumur panjang (atau "Pinned": true dalam CLI).

    2. Tambahkan konektor dan konfigurasikan parameter.

    3. Tambahkan langganan yang mengizinkan konektor untuk menerima data input dan mengirim data output pada filter topik yang didukung.

      • Atur fungsi Lambda sebagai sumber, konektor sebagai target, dan gunakan filter topik input yang mendukung.

      • Atur konektor sebagai sumber, AWS IoT Core sebagai target, dan gunakan filter topik input yang mendukung. Anda menggunakan langganan ini untuk melihat pesan status di AWS IoT konsol.

  4. Men-deploy grup.

  5. Di AWS IoT konsol, pada halaman Uji, berlangganan topik data keluaran untuk melihat pesan status dari konektor. Contoh fungsi Lambda yang berumur panjang dan mulai mengirim pesan segera setelah grup dalam-deploy.

    Setelah selesai pengujian, Anda dapat mengatur siklus hidup Lambda ke sesuai permintaan (atau "Pinned": false dalam CLI) dan men-deploy grup. Ini menghentikan fungsi dari mengirim pesan.

Contoh

Contoh fungsi Lambda berikut mengirimkan pesan input ke konektor.

import greengrasssdk import time import json iot_client = greengrasssdk.client('iot-data') send_topic = 'iotanalytics/channels/my_channel/messages/put' def create_request_with_all_fields(): return { "request": { "message" : "{\"temp\":23.33}" }, "id" : "req_123" } def publish_basic_message(): messageToPublish = create_request_with_all_fields() print("Message To Publish: ", messageToPublish) iot_client.publish(topic=send_topic, payload=json.dumps(messageToPublish)) publish_basic_message() def lambda_handler(event, context): return

Batas

Konektor ini tunduk pada batas berikut.

  • Semua batasan yang diberlakukan oleh AWS SDK untuk Python (Boto3) untuk AWS IoT Analytics batch_put_messagetindakan.

  • Semua kuota yang diberlakukan oleh AWS IoT Analytics BatchPutMessageAPI. Untuk informasi selengkapnya, lihat Service Quotas AWS IoT Analytics di bagian. Referensi Umum AWS

    • 100.000 pesan per detik per saluran.

    • 100 pesan per batch.

    • 128 KB per pesan.

    API ini menggunakan nama saluran (bukan saluran ARNs), jadi pengiriman data ke saluran lintas wilayah atau lintas akun tidak didukung.

  • Semua kuota yang diberlakukan oleh AWS IoT Greengrass Core. Untuk informasi selengkapnya, lihat Service Quotas untuk AWS IoT Greengrass inti dalam. Referensi Umum AWS

    Kuota berikut mungkin berlaku secara khusus:

    • Ukuran maksimum pesan yang dikirim oleh perangkat adalah 128 KB.

    • Ukuran antrian pesan maksimum dalam router core Greengrass adalah 2,5 MB.

    • Panjang maksimum string topik adalah 256 byte karakter yang dikodekan UTF-8.

Lisensi

Konektor IoT Analytics mencakup perangkat lunak/lisensi pihak ketiga berikut ini:

Konektor ini dirilis di bawah Perjanjian Lisensi Perangkat lunak core Greengrass.

Changelog

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.

Versi

Perubahan

4

Tambahkan IsolationMode parameter untuk mengonfigurasi mode kontainerisasi untuk konektor.

3

Memperbarui waktu aktif Lambda untuk Python 3.7, yang mengubah persyaratan waktu aktif.

2

Perbaiki untuk mengurangi pencatatan berlebihan.

1

Pelepasan awal.

Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat Versi upgrade konektor.

Lihat juga