

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

# Contoh kebijakan pesan langsung
<a name="direct-messaging-policy-examples"></a>

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.

**Topics**
+ [Kebijakan untuk mengirim pesan langsung ke klien tertentu pada topik tertentu](#dm-policy-send-specific)
+ [Kebijakan untuk menerima pesan langsung](#dm-policy-receive)
+ [Kebijakan untuk mengirim pesan langsung ke klien mana pun tentang topik tertentu](#dm-policy-send-any-client)
+ [Kebijakan untuk mengirim pesan langsung ke klien mana pun tentang topik apa pun](#dm-policy-send-any-client-any-topic)

## Kebijakan untuk mengirim pesan langsung ke klien tertentu pada topik tertentu
<a name="dm-policy-send-specific"></a>

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` dan`commands/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
<a name="dm-policy-receive"></a>

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` dan`commands/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
<a name="dm-policy-send-any-client"></a>

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
<a name="dm-policy-send-any-client-any-topic"></a>

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": "*"
                }
            }
        }
    ]
}
```