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 masa pakai yang diperpanjang, danAWS IoT Greengrass tidak akan merilis pembaruan yang menyediakan fitur, penyempurnaan pada fitur yang ada, tambalan keamanan, atau perbaikan bug. Untuk informasi selengkapnya, lihat AWS IoT Greengrass Version 1kebijakan pemeliharaan.

Konektor IoT Analytics mengirimkan data perangkat lokal ke AWS IoT Analytics. Anda dapat menggunakan konektor ini sebagai hub pusat untuk mengumpulkan data dari sensor pada perangkat core Greengrass dan dari perangkat klien yang terhubung. Konektor mengirimkan data ke AWS IoT Analytics saluran dalam arus 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 mengizinkan Anda untuk mengumpulkan, menyimpan, memproses, dan menanyakan data IoT. Dalam 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 AWS IoT Analytics? dalam AWS IoT Analytics Panduan Pengguna.

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. Hal ini dapat digunakan untuk merutekan pesan dari perangkat klien yang menerbitkan ke topik tetap atau menangani data yang tidak terstruktur atau tergantung tumpukan dari perangkat yang dibatasi sumber daya.

Konektor ini menggunakan BatchPutMessageAPI untuk mengirim data (sebagai JSON atau base64 encoded string) 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 Core 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 terkait entitas AWS IoT Analytics dan alur kerja 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

    Tujuan AWS IoT Analytics saluran harus menggunakan akun yang sama dan ada dalam Wilayah AWS sebagai 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 Core 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 terkait entitas AWS IoT Analytics dan alur kerja 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

    Tujuan AWS IoT Analytics saluran harus menggunakan akun yang sama dan ada dalam Wilayah AWS sebagai 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 pada konsol AWS IoT tersebut: Ukuran memori

Wajib: true

Jenis: string

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

PublishRegion

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

catatan

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

Nama tampilan pada konsol AWS IoT tersebut: Publikasikan wilayah

Wajib: false

Jenis: string

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

PublishInterval

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

Nama tampilan pada konsol AWS IoT tersebut: Publikasikan Interval

Wajib: false

Jenis: string

Nilai default: 1

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

IotAnalyticsMaxActiveChannels

Jumlah maksimum AWS IoT Analytics saluran yang konektor secara aktif menonton untuk. 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 pada konsol AWS IoT tersebut: 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 pada konsol AWS IoT tersebut: Perilaku batal antrean

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 pada konsol AWS IoT tersebut: Ukuran antrean maksimum per saluran

Wajib: false

Jenis: string

Nilai default: 2048

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

IotAnalyticsBatchSizePerChannel

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

Nama tampilan pada konsol AWS IoT tersebut: Jumlah maksimum pesan untuk batch per saluran

Wajib: false

Jenis: string

Nilai default: 5

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

IotAnalyticsDefaultChannelName

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

Nama tampilan pada konsol AWS IoT tersebut: Nama saluran default

Wajib: false

Jenis: string

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

IsolationMode

Mode kontainerisasi untuk konektor ini. Default-nya adalah GreengrassContainer, yang berarti bahwa konektor berjalan dalam lingkungan waktu aktif terisolasi dalam kontainer AWS IoT Greengrass ini.

catatan

Pengaturan kontainerisasi default untuk grup tidak berlaku untuk konektor.

Nama tampilan pada konsol AWS IoT tersebut: 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 konsol AWS IoT Greengrass tersebut, Anda dapat menambahkan konektor dari halaman grup Konektor ini. Untuk informasi lebih lanjut, 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 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. Misalnya:

    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 ke dalam 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 bahwa ID unik untuk setiap pesan dalam outbound BatchPutMessage meminta agar mengirimkannya ke 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 mengodekan dan memformatnya agar sesuai dengan BatchPutMessage persyaratan 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. Hal ini sangat berguna bila perangkat klien Anda menerbitkan ke topik tetap atau ketika Anda ingin mengirim data ke saluran default dari perangkat klien yang tidak dapat memproses data ke konektor format pesan yang didukung.

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 mengodekan dan memformatnya agar sesuai dengan BatchPutMessage persyaratan 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 respon dikembalikan oleh AWS IoT Analytics untuk setiap pesan input yang diterima dan dikirim ke AWS IoT Analytics.

Filter topik dalam langganan

iotanalytics/messages/put/status

Contoh output: Berhasil
{ "response" : { "status" : "success" }, "id" : "req123" }
Contoh output: Gagal
{ "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 AWS SDK. 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 dalam konsol AWS IoT tersebut.

  4. Men-deploy grup.

  5. Di konsol AWS IoT tersebut, pada halaman Tes ini, berlangganan ke topik data output 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 batas yang diberlakukan olehAWS SDK for Python (Boto3) untukAWS IoT Analytics batch_put_messagetindakan.

  • Semua kuota yang dikenakan olehAWS IoT Analytics BatchPutMessageAPI. Untuk informasi selengkapnya, lihat Service Quotas untukAWS IoT Analytics di 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 ARN), sehingga mengirim data ke saluran lintas wilayah atau lintas akun tidak didukung.

  • Semua kuota yang dikenakan oleh AWS IoT Greengrass Core. Untuk informasi selengkapnya, lihat Service Quotas untukAWS IoT Greengrass inti di 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 .

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