View a markdown version of this page

Contoh kebijakan pesan langsung - AWS IoT Core

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Contoh kebijakan pesan langsung

Menggunakan pesan langsung memerlukan kebijakan khusus. Direct messaging menggunakan SendDirectMessage HTTP API untuk mengirimkan pesan dari pengirim ke penerima tunggal yang diidentifikasi oleh ID klien MQTT. Bagian ini menyajikan contoh kebijakan yang memungkinkan penggunaan pesan langsung secara umum.

Kebijakan untuk mengirim pesan langsung ke klien tertentu pada topik tertentu

Agar pengirim dapat mengirim pesan langsung, pengirim harus memiliki iot:SendDirectMessage izin dengan ID klien target sebagai sumber daya. Kunci iot:Topic 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 kebijakan. AWS IoT Core

  • Untuk klien yang diautentikasi otorisasi kustom, fungsi Lambda harus mengembalikan pemberian dokumen kebijakan iot:SendDirectMessage pada sumber daya klien target dengan kunci kondisi iot:Topic

Kebijakan berikut memungkinkan klien device1 untuk 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 mengabulkan iot:Receive topik tersebut. Penerima tidak memerlukan iot:Subscribe izin — AWS IoT Core mengirimkan pesan langsung tanpa memerlukan langganan topik. Penerima dapat mengautentikasi 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 untuk 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 memungkinkan penerima menerima pesan langsung tentang 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 diantrian untuk perangkat offline.

Kebijakan untuk mengirim pesan langsung ke klien mana pun tentang topik tertentu

Kebijakan berikut memungkinkan pengirim untuk 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

Kunci iot:Topic kondisi mendukung pencocokan wildcard dengan operator StringLike kondisi.

Kebijakan untuk mengirim pesan langsung ke klien mana pun tentang topik apa pun

Kebijakan berikut memungkinkan pengirim untuk mengirim pesan langsung ke klien mana 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": "*" } } } ] }