Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh kebijakan pengiriman pesan langsung
Menggunakan pesan langsung memerlukan kebijakan khusus. Pesan langsung menggunakan API SendDirectMessage HTTP untuk mengirimkan pesan dari pengirim ke penerima tunggal yang diidentifikasi oleh ID klien MQTT-nya. Bagian ini menyajikan contoh kebijakan yang memungkinkan penggunaan umum pesan langsung.
Di bagian ini:
Kebijakan untuk mengirim pesan langsung ke klien tertentu tentang topik tertentu
Agar pengirim dapat mengirim pesan langsung, pengirim harus memiliki iot:SendDirectMessage izin dengan ID klien target sebagai sumber daya. K iot:Topic unci kondisi (opsional) membatasi topik mana pengirim dapat mengirim pesan.
-
Untuk server SigV4-authenticated backend, tambahkan ini ke kebijakan IAM.
-
Untuk perangkat X.509-authenticated IoT, tambahkan ini ke AWS IoT Core kebijakan.
-
Untuk klien yang diautentikasi otorisasi kustom, fungsi Lambda harus mengembalikan dokumen kebijakan yang diberikan
iot:SendDirectMessagepada sumber daya klien target dengan kunci kondisiiot:Topic
Kebijakan berikut memungkinkan klien device1 mengirim pesan langsung ke klien myDevice tentang topik commands/reboot dancommands/update.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:SendDirectMessage", "Resource": "arn:aws:iot:us-west-2:123456789012:client/myDevice", "Condition": { "StringEquals": { "iot:Topic": ["commands/reboot", "commands/update"] } } } ] }
Kebijakan untuk menerima pesan langsung
Kebijakan penerima harus memberikan iot:Receive pada topik tersebut. Penerima tidak memerlukan iot:Subscribe izin — AWS IoT Core mengirimkan pesan langsung tanpa memerlukan langganan topik. Penerima dapat mengotentikasi menggunakan sertifikat X.509 klien (AWS IoT Core kebijakan) atau SIGv4 (kebijakan IAM). Dalam kedua kasus, iot:Receive izin diperlukan pada topik penerima.
Kebijakan berikut memungkinkan klien penerima myDevice menerima pesan langsung tentang topik commands/reboot dancommands/update.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-west-2:123456789012:topic/commands/reboot" }, { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-west-2:123456789012:topic/commands/update" } ] }
Kebijakan berikut menggunakan wildcard untuk mengizinkan penerima menerima pesan langsung pada topik apa pun di bawah commands/ awalan.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Receive", "Resource": "arn:aws:iot:us-west-2:123456789012:topic/commands/*" } ] }
catatan
Penerima harus membuat koneksi MQTT AWS IoT Core sebelum menerima pesan langsung. Pesan langsung tidak diantri untuk perangkat offline.
Kebijakan untuk mengirim pesan langsung ke klien mana pun tentang topik tertentu
Kebijakan berikut memungkinkan pengirim mengirim pesan langsung ke klien mana pun, tetapi hanya pada topik yang cocok dengan commands/* awalan. Ini berguna untuk layanan manajemen armada yang perlu menjangkau perangkat apa pun tetapi hanya untuk topik perintah tertentu.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:SendDirectMessage", "Resource": "arn:aws:iot:us-west-2:123456789012:client/*", "Condition": { "StringLike": { "iot:Topic": "commands/*" } } } ] }
catatan
K iot:Topic unci kondisi mendukung pencocokan wildcard dengan operator StringLike kondisi.
Kebijakan untuk mengirim pesan langsung ke klien apa pun tentang topik apa pun
Kebijakan berikut memungkinkan pengirim mengirim pesan langsung ke klien apa pun tentang topik apa pun. Ini cocok untuk kasus penggunaan administrasi atau manajemen armada di mana layanan backend membutuhkan akses tidak terbatas.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:SendDirectMessage", "Resource": "arn:aws:iot:us-west-2:123456789012:client/*", "Condition": { "StringLike": { "iot:Topic": "*" } } } ] }