Konektor SNS - 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 SNS

Sebuah konektor SNS menerbitkan pesan ke topik Amazon SNS. Hal ini memungkinkan server web, alamat email, dan pelanggan pesan lainnya untuk menanggapi peristiwa dalam grup Greengrass.

Konektor ini menerima informasi pesan SNS pada topik MQTT, dan kemudian mengirim pesan ke topik SNS tertentu. Anda dapat menggunakan fungsi Lambda kustom untuk implementasi penyaringan atau format logika pada pesan sebelum mereka diterbitkan untuk konektor ini.

Konektor ini memiliki versi berikut.

Versi

ARN

4

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

3

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

2

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

1

arn:aws:greengrass:region::/connectors/SNS/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.

  • Sebuah topik SNS yang dikonfigurasi. Untuk informasi lebih lanjut, lihat Membuat topik Amazon SNS dalam Panduan Developer Amazon Simple Notification Service.

  • Pada Peran grup Greengrass dikonfigurasi untuk mengizinkan sns:Publish tindakan pada target Amazon SNSstopic, seperti yang ditunjukkan contoh kebijakan IAM berikut.

    { "Version":"2012-10-17", "Statement":[ { "Sid":"Stmt1528133056761", "Action":[ "sns:Publish" ], "Effect":"Allow", "Resource":[ "arn:aws:sns:region:account-id:topic-name" ] } ] }

    Konektor ini mengizinkan Anda untuk secara dinamis menimpa topik default dalam muatan pesan input. Jika implementasi Anda menggunakan fitur ini, kebijakan IAM harus mengizinkan sns:Publish izin pada semua topik target. Anda dapat memberikan akses terperinci atau bersyarat ke sumber daya (sebagai contoh, dengan menggunakan skema penamaan wildcard *).

    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.

  • Sebuah topik SNS yang dikonfigurasi. Untuk informasi lebih lanjut, lihat Membuat topik Amazon SNS dalam Panduan Developer Amazon Simple Notification Service.

  • Pada Peran grup Greengrass dikonfigurasi untuk mengizinkan sns:Publish tindakan pada target Amazon SNSstopic, seperti yang ditunjukkan contoh kebijakan IAM berikut.

    { "Version":"2012-10-17", "Statement":[ { "Sid":"Stmt1528133056761", "Action":[ "sns:Publish" ], "Effect":"Allow", "Resource":[ "arn:aws:sns:region:account-id:topic-name" ] } ] }

    Konektor ini mengizinkan Anda untuk secara dinamis menimpa topik default dalam muatan pesan input. Jika implementasi Anda menggunakan fitur ini, kebijakan IAM harus mengizinkan sns:Publish izin pada semua topik target. Anda dapat memberikan akses terperinci atau bersyarat ke sumber daya (sebagai contoh, dengan menggunakan skema penamaan wildcard *).

    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 Konektor

Konektor ini menyediakan parameter berikut:

Version 4
DefaultSNSArn

ARN topik SNS default untuk menerbitkan pesan ke. Topik tujuan dapat ditimpa oleh properti sns_topic_arn dalam muatan pesan input.

catatan

Peran grup harus memberikan izin sns:Publish untuk semua topik target. Untuk informasi selengkapnya, lihat Persyaratan.

Nama tampilan pada konsol AWS IoT tersebut: SNS Default ARN topik

Wajib: true

Jenis: string

Pola yang valid: arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([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$

Versions 1 - 3
DefaultSNSArn

ARN topik SNS default untuk menerbitkan pesan ke. Topik tujuan dapat ditimpa oleh properti sns_topic_arn dalam muatan pesan input.

catatan

Peran grup harus memberikan izin sns:Publish untuk semua topik target. Untuk informasi selengkapnya, lihat Persyaratan.

Nama tampilan pada konsol AWS IoT tersebut: SNS Default ARN topik

Wajib: true

Jenis: string

Pola yang valid: arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$

Buat Contoh Konektor (AWS CLI)

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

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MySNSConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/SNS/versions/4", "Parameters": { "DefaultSNSArn": "arn:aws:sns:region:account-id:topic-name", "IsolationMode" : "GreengrassContainer" } } ] }'

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 informasi pesan SNS pada topik MQTT, dan kemudian menerbitkan pesan ke topik target SNS. Pesan input harus dalam format JSON.

Filter topik dalam langganan

sns/message

Properti pesan
request

Informasi tentang pesan yang akan dikirim ke topik SNS.

Wajib: true

Jenis: object yang mencakup properti berikut:

message

Isi pesan sebagai string atau dalam format JSON. Sebagai contoh, lihat Contoh input.

Untuk mengirim JSON, message_structure properti harus diatur ke json dan pesan harus berupa objek JSON string-encoded yang berisi default kunci.

Wajib: true

Jenis: string

Pola yang valid: .*

subject

Subjek pesan.

Wajib: false

Jenis: teks ASCII, hingga 100 karakter. Ini harus dimulai dengan tanda huruf, angka, atau tanda baca. Ini tidak harus mencakup jeda baris atau karakter kontrol.

Pola yang valid: .*

sns_topic_arn

ARN topik SNS untuk menerbitkan pesan ke. Jika ditentukan, konektor menerbitkan topik ini menggantikan topik default.

catatan

Peran grup harus memberikan izin sns:Publish untuk setiap topik target. Untuk informasi selengkapnya, lihat Persyaratan.

Wajib: false

Jenis: string

Pola yang valid: arn:aws:sns:([a-z]{2}-[a-z]+-\d{1}):(\d{12}):([a-zA-Z0-9-_]+)$

message_structure

Struktur pesan.

Diperlukan:false. Ini harus ditentukan untuk mengirim pesan JSON.

Tipe: string

Nilai yang valid: json

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 tidak menggunakan fitur ini, Anda dapat menghilangkan properti ini atau menentukan string kosong.

Wajib: false

Jenis: string

Pola yang valid: .*

Batas

Ukuran pesan dibatasi oleh ukuran maksimum pesan SNS 256 KB.

Contoh masukan: Pesan string

Contoh ini mengirimkan pesan string. Ini menentukan properti sns_topic_arn opsional, yang menimpa topik tujuan default.

{ "request": { "subject": "Message subject", "message": "Message data", "sns_topic_arn": "arn:aws:sns:region:account-id:topic2-name" }, "id": "request123" }
Contoh masukan: pesan JSON

Contoh ini mengirimkan pesan sebagai string dikodekan objek JSON yang mencakup default kunci.

{ "request": { "subject": "Message subject", "message": "{ \"default\": \"Message data\" }", "message_structure": "json" }, "id": "request123" }

Data output

Konektor ini menerbitkan informasi status sebagai data output pada topik MQTT.

Filter topik dalam langganan

sns/message/status

Contoh keluaran: Sukses
{ "response": { "sns_message_id": "f80a81bc-f44c-56f2-a0f0-d5af6a727c8a", "status": "success" }, "id": "request123" }
Contoh keluaran: Kegagalan
{ "response" : { "error": "InvalidInputException", "error_message": "SNS Topic Arn is invalid", "status": "fail" }, "id": "request123" }

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 = 'sns/message' def create_request_with_all_fields(): return { "request": { "message": "Message from SNS Connector Test" }, "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

Lisensi

Konektor SNS termasuk perangkat lunak/lisensi pihak ketiga berikut:

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

Changelog

Tabel berikut menjelaskan perubahan dalam setiap versi konektor.

Versi

Perubahan

4

Ditambahkan parameter IsolationMode 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