

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

# Topik MQTT Bayangan Perangkat
<a name="device-shadow-mqtt"></a>

Layanan Device Shadow menggunakan topik MQTT yang dicadangkan untuk mengaktifkan perangkat dan aplikasi untuk mendapatkan, memperbarui, atau menghapus informasi status untuk perangkat (bayangan). 

Menerbitkan dan berlangganan topik bayangan memerlukan otorisasi berbasis topik. AWS IoT berhak untuk menambahkan topik baru ke struktur topik yang ada. Untuk alasan ini, kami menyarankan Anda menghindari langganan kartu liar ke topik bayangan. Misalnya, hindari berlangganan filter topik seperti `$aws/things/thingName/shadow/#` karena jumlah topik yang cocok dengan filter topik ini mungkin meningkat saat AWS IoT memperkenalkan topik bayangan baru. Untuk contoh pesan yang dipublikasikan pada topik ini lihat[Berinteraksi dengan bayangan](device-shadow-data-flow.md).

Bayangan dapat diberi nama atau tidak disebutkan namanya (klasik). Topik yang digunakan oleh masing-masing hanya berbeda dalam awalan topik. Tabel ini menunjukkan awalan topik yang digunakan oleh setiap jenis bayangan.


| Nilai {{ShadowTopicPrefix}} | Jenis bayangan | 
| --- | --- | 
| $aws/things/{{thingName}}/shadow | Bayangan tanpa nama (klasik) | 
| $aws/things/{{thingName}}/shadow/name/{{shadowName}} | Dinamakan bayangan | 

Untuk membuat topik lengkap, pilih `{{ShadowTopicPrefix}}` untuk jenis bayangan yang ingin Anda rujuk, ganti, dan `{{shadowName}}` jika berlaku`{{thingName}}`, dengan nilai-nilai yang sesuai, lalu tambahkan itu dengan stub topik seperti yang ditunjukkan pada bagian berikut.

Berikut ini adalah topik MQTT yang digunakan untuk berinteraksi dengan bayangan.

**Topics**
+ [/dapatkan](#get-pub-sub-topic)
+ [/get/accepted](#get-accepted-pub-sub-topic)
+ [/get/rejected](#get-rejected-pub-sub-topic)
+ [/perbarui](#update-pub-sub-topic)
+ [/update/delta](#update-delta-pub-sub-topic)
+ [/update/accepted](#update-accepted-pub-sub-topic)
+ [/update/documents](#update-documents-pub-sub-topic)
+ [/update/rejected](#update-rejected-pub-sub-topic)
+ [/hapus](#delete-pub-sub-topic)
+ [/delete/accepted](#delete-accepted-pub-sub-topic)
+ [/delete/rejected](#delete-rejected-pub-sub-topic)

## /dapatkan
<a name="get-pub-sub-topic"></a>

Publikasikan pesan kosong ke topik ini untuk mendapatkan bayangan perangkat:

```
{{ShadowTopicPrefix}}/get
```

AWS IoT merespons dengan menerbitkan salah [/get/accepted](#get-accepted-pub-sub-topic) satu atau[/get/rejected](#get-rejected-pub-sub-topic).

### Contoh kebijakan
<a name="get-policy"></a>

Berikut ini adalah contoh kebijakan yang diperlukan:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topic/$aws/things/{{thingName}}/shadow/get"
            ]
        }
    ]
}
```

## /get/accepted
<a name="get-accepted-pub-sub-topic"></a>

AWS IoT menerbitkan dokumen bayangan respons ke topik ini saat mengembalikan bayangan perangkat:

```
{{ShadowTopicPrefix}}/get/accepted
```

Untuk informasi selengkapnya, lihat [Dokumen status tanggapan](device-shadow-document.md#device-shadow-example-response-json).

### Contoh kebijakan
<a name="get-accepted-policy"></a>

Berikut ini adalah contoh kebijakan yang diperlukan:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topicfilter/$aws/things/{{thingName}}/shadow/get/accepted"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topic/$aws/things/{{thingName}}/shadow/get/accepted"
            ]
        }
    ]
}
```

## /get/rejected
<a name="get-rejected-pub-sub-topic"></a>

AWS IoT menerbitkan dokumen respons kesalahan ke topik ini ketika tidak dapat mengembalikan bayangan perangkat:

```
{{ShadowTopicPrefix}}/get/rejected
```

Untuk informasi selengkapnya, lihat [Dokumen respons kesalahan](device-shadow-document.md#device-shadow-example-error-json).

### Contoh kebijakan
<a name="get-rejected-policy"></a>

Berikut ini adalah contoh kebijakan yang diperlukan:

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iot:Subscribe"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topicfilter/$aws/things/{{thingName}}/shadow/get/rejected"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iot:Receive"
      ],
      "Resource": [
        "arn:aws:iot:us-east-1:123456789012:topic/$aws/things/{{thingName}}/shadow/get/rejected"
      ]
    }
  ]
}
```

## /perbarui
<a name="update-pub-sub-topic"></a>

Publikasikan dokumen status permintaan ke topik ini untuk memperbarui bayangan perangkat:

```
{{ShadowTopicPrefix}}/update
```

Badan pesan berisi dokumen status permintaan [ sebagian](device-shadow-document.md#device-shadow-example-request-json).

Klien yang mencoba memperbarui status perangkat akan mengirim dokumen status permintaan JSON dengan `desired` properti seperti ini:

```
{
  "state": {
    "desired": {
      "color": "red",
      "power": "on"
    }
  }
}
```

Perangkat yang memperbarui bayangannya akan mengirim dokumen status permintaan JSON dengan `reported` properti, seperti ini:

```
{
  "state": {
    "reported": {
      "color": "red",
      "power": "on"
    }
  }
}
```

AWS IoT merespons dengan menerbitkan salah [/update/accepted](#update-accepted-pub-sub-topic) satu atau[/update/rejected](#update-rejected-pub-sub-topic).

### Contoh kebijakan
<a name="update-policy"></a>

Berikut ini adalah contoh kebijakan yang diperlukan:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topic/$aws/things/{{thingName}}/shadow/update"
            ]
        }
    ]
}
```

## /update/delta
<a name="update-delta-pub-sub-topic"></a>

AWS IoT menerbitkan dokumen status respons untuk topik ini ketika menerima perubahan untuk bayangan perangkat, dan dokumen status respons berisi nilai yang berbeda untuk `desired` dan `reported` menyatakan:

```
{{ShadowTopicPrefix}}/update/delta
```

Buffer pesan berisi a[/dokumen status respons delta](device-shadow-document.md#device-shadow-example-response-json-delta).

### Rincian isi pesan
<a name="update-delta-rules"></a>
+ Pesan yang diterbitkan hanya `update/delta` menyertakan atribut yang diinginkan yang berbeda antara `reported` bagian `desired` dan. Ini berisi semua atribut ini, terlepas dari apakah atribut ini terkandung dalam pesan pembaruan saat ini atau sudah disimpan di AWS IoT. Atribut yang tidak berbeda antara `reported` bagian `desired` dan tidak disertakan.
+ Jika atribut ada di `reported` bagian tetapi tidak memiliki setara di `desired` bagian, itu tidak disertakan.
+ Jika atribut ada di `desired` bagian tetapi tidak memiliki setara di `reported` bagian, itu disertakan.
+ Jika atribut dihapus dari `reported` bagian tetapi masih ada di `desired` bagian, itu disertakan.

### Contoh kebijakan
<a name="update-delta-policy"></a>

Berikut ini adalah contoh kebijakan yang diperlukan:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topicfilter/$aws/things/{{thingName}}/shadow/update/delta"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topic/$aws/things/{{thingName}}/shadow/update/delta"
            ]
        }
    ]
}
```

## /update/accepted
<a name="update-accepted-pub-sub-topic"></a>

AWS IoT menerbitkan dokumen status respons untuk topik ini ketika menerima perubahan untuk bayangan perangkat:

```
{{ShadowTopicPrefix}}/update/accepted
```

Buffer pesan berisi a[/dokumen status respons yang diterima](device-shadow-document.md#device-shadow-example-response-json-accepted).

### Contoh kebijakan
<a name="update-accepted-policy"></a>

Berikut ini adalah contoh kebijakan yang diperlukan:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topicfilter/$aws/things/{{thingName}}/shadow/update/accepted"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topic/$aws/things/{{thingName}}/shadow/update/accepted"
            ]
        }
    ]
}
```

## /update/documents
<a name="update-documents-pub-sub-topic"></a>

AWS IoT menerbitkan dokumen status untuk topik ini setiap kali pembaruan bayangan berhasil dilakukan:

```
{{ShadowTopicPrefix}}/update/documents
```

Badan pesan berisi a[/dokumen status respons dokumen](device-shadow-document.md#device-shadow-example-response-json-documents).

### Contoh kebijakan
<a name="update-documents-policy"></a>

Berikut ini adalah contoh kebijakan yang diperlukan:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topicfilter/$aws/things/{{thingName}}/shadow/update/documents"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topic/$aws/things/{{thingName}}/shadow/update/documents"
            ]
        }
    ]
}
```

## /update/rejected
<a name="update-rejected-pub-sub-topic"></a>

AWS IoT menerbitkan dokumen respons kesalahan untuk topik ini ketika menolak perubahan untuk bayangan perangkat:

```
{{ShadowTopicPrefix}}/update/rejected
```

Badan pesan berisi[Dokumen respons kesalahan](device-shadow-document.md#device-shadow-example-error-json).

### Contoh kebijakan
<a name="update-rejected-policy"></a>

Berikut ini adalah contoh kebijakan yang diperlukan:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topicfilter/$aws/things/{{thingName}}/shadow/update/rejected"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topic/$aws/things/{{thingName}}/shadow/update/rejected"
            ]
        }
    ]
}
```

## /hapus
<a name="delete-pub-sub-topic"></a>

Untuk menghapus bayangan perangkat, publikasikan pesan kosong ke topik hapus:

```
{{ShadowTopicPrefix}}/delete
```

Isi pesan diabaikan.

Perhatikan bahwa menghapus bayangan tidak mengatur ulang nomor versinya ke 0.

AWS IoT merespons dengan menerbitkan salah [/delete/accepted](#delete-accepted-pub-sub-topic) satu atau[/delete/rejected](#delete-rejected-pub-sub-topic).

### Contoh kebijakan
<a name="delete-policy"></a>

Berikut ini adalah contoh kebijakan yang diperlukan:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Publish"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topic/$aws/things/{{thingName}}/shadow/delete"
            ]
        }
    ]
}
```

## /delete/accepted
<a name="delete-accepted-pub-sub-topic"></a>

AWS IoT menerbitkan pesan ke topik ini saat bayangan perangkat dihapus:

```
{{ShadowTopicPrefix}}/delete/accepted
```

### Contoh kebijakan
<a name="delete-accepted-policy"></a>

Berikut ini adalah contoh kebijakan yang diperlukan:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topicfilter/$aws/things/{{thingName}}/shadow/delete/accepted"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topic/$aws/things/{{thingName}}/shadow/delete/accepted"
            ]
        }
    ]
}
```

## /delete/rejected
<a name="delete-rejected-pub-sub-topic"></a>

AWS IoT menerbitkan dokumen respons kesalahan ke topik ini ketika tidak dapat menghapus bayangan perangkat:

```
{{ShadowTopicPrefix}}/delete/rejected
```

Badan pesan berisi[Dokumen respons kesalahan](device-shadow-document.md#device-shadow-example-error-json).

### Contoh kebijakan
<a name="delete-rejected-policy"></a>

Berikut ini adalah contoh kebijakan yang diperlukan:

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "iot:Subscribe"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topicfilter/$aws/things/{{thingName}}/shadow/delete/rejected"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "iot:Receive"
            ],
            "Resource": [
                "arn:aws:iot:{{us-east-1}}:123456789012:topic/$aws/things/{{thingName}}/shadow/delete/rejected"
            ]
        }
    ]
}
```