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 BatchPutMessage
API 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 |
|
3 |
|
2 |
|
1 |
|
Untuk informasi tentang perubahan versi, lihat Changelog.
Persyaratan
Konektor ini memiliki persyaratan sebagai berikut:
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
orDROP_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 adalah
GreengrassContainer
, 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
orNoContainer
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
-
Jika Anda menggunakan waktu aktif Python lainnya, Anda dapat membuat symlink dari Python3.x ke Python 3.7.
-
Topik Memulai dengan konektor (konsol) dan Memulai dengan konektor (CLI) berisi langkah-langkah terperinci yang menunjukkan cara mengonfigurasi dan men-deploy contoh konektor Notifikasi Twilio.
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).
-
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.
-
Konfigurasikan grup Greengrass Anda.
-
Tambahkan fungsi Lambda dengan aliasnya (direkomendasikan). Konfigurasikan siklus hidup Lambda sebagai berumur panjang (atau
"Pinned": true
dalam CLI). -
Tambahkan konektor dan konfigurasikan parameter.
-
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.
-
-
Men-deploy grup.
-
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_message
tindakan. 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:
-
AWS SDK untuk Python (Boto3)
/Lisensi 2.0 Apache -
botocore
/Apache License 2.0 -
dateutil
/PSF License -
docutils
/BSD License, Lisensi Publik Umum (GPL) GNU, Lisensi Dasar Perangkat Lunak Python, Domain Publik -
jmespath
/MIT License -
s3transfer
/Apache License 2.0 -
urllib3
/Lisensi MIT
Konektor ini dirilis di bawah Perjanjian Lisensi Perangkat lunak core Greengrass
Changelog
Tabel berikut menjelaskan perubahan dalam setiap versi konektor.
Versi |
Perubahan |
---|---|
4 |
Tambahkan |
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.