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 BatchPutMessage
API 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 |
|
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 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
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 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
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 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
-
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 dalam konsol AWS IoT tersebut.
-
-
Men-deploy grup.
-
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_message
tindakan. 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:
-
AWS SDK for 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 . |
Sebuah grup Greengrass dapat berisi hanya satu versi konektor pada suatu waktu. Untuk informasi lebih lanjut tentang pembaruan versi konektor, lihat Versi upgrade konektor.