

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

# Berinteraksilah dengan bayangan perangkat
<a name="interact-with-shadows"></a>

[Perangkat inti Greengrass dapat berinteraksi AWS IoT dengan bayangan perangkat menggunakan komponen.](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html) *Bayangan* adalah dokumen JSON yang menyimpan informasi status saat ini atau yang diinginkan untuk suatu AWS IoT hal. Bayangan dapat membuat status perangkat tersedia untuk AWS IoT Greengrass komponen lain apakah perangkat terhubung AWS IoT atau tidak. Setiap perangkat AWS IoT memiliki bayangan klasik, yang tidak bernama miliknya sendiri. Anda juga dapat membuat beberapa bayangan bernama untuk setiap perangkat. 

[Perangkat dan layanan dapat membuat, memperbarui, dan menghapus bayangan awan dengan menggunakan MQTT dan [topik bayangan MQTT yang dicadangkan, HTTP menggunakan Device Shadow](https://docs.aws.amazon.com/iot/latest/developerguide/reserved-topics.html#reserved-topics-shadow)[REST](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-rest-api.html) API, dan for.AWS CLIAWS IoT](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot-data/index.html)

Komponen [shadow manager](shadow-manager-component.md) memungkinkan komponen Greengrass Anda untuk membuat, memperbarui, dan menghapus bayangan lokal dengan menggunakan [layanan bayangan lokal](ipc-local-shadows.md)dan topik bayangan publikasi/berlangganan lokal. Komponen shadow manager mengelola penyimpanan dokumen bayangan ini pada perangkat inti Anda, dan menangani sinkronisasi informasi keadaan bayangan dengan bayangan cloud.

Anda juga dapat menggunakan komponen shadow manager untuk mengelola bayangan lokal untuk [perangkat klien](interact-with-local-iot-devices.md) yang terhubung ke perangkat inti. Untuk mengaktifkan shadow manager mengelola bayangan perangkat klien, Anda mengonfigurasi [komponen jembatan MQTT](mqtt-bridge-component.md) untuk menyampaikan pesan antara broker MQTT lokal dan layanan penerbitan/langganan lokal. Untuk informasi selengkapnya, lihat [Berinteraksi dengan dan menyinkronkan bayangan perangkat klien](work-with-client-device-shadows.md).

Untuk informasi selengkapnya tentang konsep bayangan AWS IoT perangkat, lihat [Layanan AWS IoT Device Shadow](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html) di *Panduan AWS IoT Pengembang*.

**Topics**
+ [Berinteraksilah dengan bayangan dalam komponen](interact-with-shadows-in-components.md)
+ [Sinkronkan bayangan perangkat lokal dengan AWS IoT Core](sync-shadows-with-iot-core.md)

# Berinteraksilah dengan bayangan dalam komponen
<a name="interact-with-shadows-in-components"></a>

Anda dapat mengembangkan komponen kustom, termasuk komponen fungsi Lambda, yang menggunakan layanan bayangan lokal untuk membaca dan memodifikasi dokumen bayangan lokal dan dokumen bayangan perangkat klien.

Komponen khusus berinteraksi dengan layanan bayangan lokal menggunakan pustaka AWS IoT Greengrass Core IPC di file. AWS IoT Device SDK Komponen [shadow manager](shadow-manager-component.md) memungkinkan layanan bayangan lokal pada perangkat inti Anda.

Untuk men-deploy komponen shadow manager pada perangkat inti Greengrass, [buat deployment](create-deployments.md) yang meliputi komponen `aws.greengrass.ShadowManager`.

**catatan**  
Secara default, deployment komponen shadow manager akan memungkinkan operasi bayangan lokal saja. AWS IoT Greengrass Untuk mengaktifkan sinkronisasi informasi status bayangan untuk bayangan perangkat inti atau bayangan apa pun untuk perangkat klien ke dokumen bayangan awan yang sesuai AWS IoT Core, Anda harus membuat pembaruan konfigurasi untuk komponen pengelola bayangan yang menyertakan `synchronize` parameter. Untuk informasi selengkapnya, lihat [Sinkronkan bayangan perangkat lokal dengan AWS IoT Core](sync-shadows-with-iot-core.md).

**Topics**
+ [Ambil dan memodifikasi keadaan bayangan](#interact-shadow-states)
+ [Bereaksilah terhadap perubahan keadaan bayangan](#react-shadow-events)

## Ambil dan memodifikasi keadaan bayangan
<a name="interact-shadow-states"></a>

Operasi bayangan IPC mengambil dan memperbarui informasi keadaan dalam dokumen bayangan lokal. Komponen shadow manager menangani penyimpanan dokumen bayangan ini pada perangkat inti Anda.

**Untuk mengubah keadaan bayangan lokal**

1. Tambahkan kebijakan otorisasi ke resep komponen kustom Anda agar komponen dapat menerima pesan tentang topik bayangan lokal.

   Misalnya kebijakan otorisasi, lihat Contoh kebijakan [otorisasi IPC bayangan lokal](ipc-local-shadows.md#ipc-local-shadow-authorization-policy-examples).

1. Gunakan operasi bayangan IPC untuk mengambil dan memodifikasi informasi keadaan bayangan. Untuk informasi selengkapnya tentang penggunaan operasi IPC bayangan dalam kode komponen, lihat [Berinteraksi dengan bayangan lokal](ipc-local-shadows.md).

**catatan**  <a name="note-requirement-enable-shadow-manager-client-devices"></a>
Untuk mengaktifkan perangkat inti berinteraksi dengan bayangan perangkat klien, Anda juga harus mengonfigurasi dan menerapkan komponen jembatan MQTT. Untuk informasi selengkapnya, lihat [Mengaktifkan pengelola bayangan untuk berkomunikasi dengan perangkat klien](work-with-client-device-shadows.md).

## Bereaksilah terhadap perubahan keadaan bayangan
<a name="react-shadow-events"></a>

Komponen Greengrass menggunakan antarmuka publish/subscribe lokal untuk berkomunikasi pada perangkat inti. Untuk mengaktifkan komponen kustom bereaksi terhadap perubahan status bayangan, Anda dapat berlangganan publish/subscribe topik lokal. Hal ini memungkinkan komponen untuk menerima pesan pada topik bayangan lokal, dan kemudian bertindak pada pesan tersebut. 

Topik bayangan lokal menggunakan format yang sama dengan topik MQTT bayangan AWS IoT perangkat. Untuk informasi selengkapnya tentang topik bayangan, lihat [topik MQTT Bayangan Perangkat](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html) di *Panduan Developer AWS IoT *.

**Untuk bereaksi terhadap perubahan keadaan bayangan**

1. Tambahkan kebijakan kontrol akses ke resep untuk komponen kustom Anda untuk memungkinkan komponen untuk menerima pesan pada topik bayangan lokal.

   Misalnya kebijakan otorisasi, lihat Contoh kebijakan [otorisasi IPC bayangan lokal](ipc-local-shadows.md#ipc-local-shadow-authorization-policy-examples).

1. Untuk memulai tindakan kustom dalam sebuah komponen, gunakan operasi IPC `SubscribeToTopic` untuk berlangganan topik bayangan tempat Anda ingin menerima pesan. Untuk informasi selengkapnya tentang penggunaan operasi publish/subscribe IPC lokal dalam kode komponen, lihat[Pesan lokal publikasi/berlangganan](ipc-publish-subscribe.md).

1. Untuk menjalankan fungsi Lambda, gunakan konfigurasi sumber peristiwa untuk memberikan nama topik bayangan dan tentukan bahwa itu adalah publish/subscribe topik lokal. Untuk informasi selengkapnya tentang cara membuat komponen fungsi Lambda, lihat [Jalankan AWS Lambda fungsi](run-lambda-functions.md).

**catatan**  <a name="note-requirement-enable-shadow-manager-client-devices"></a>
Untuk mengaktifkan perangkat inti berinteraksi dengan bayangan perangkat klien, Anda juga harus mengonfigurasi dan menerapkan komponen jembatan MQTT. Untuk informasi selengkapnya, lihat [Mengaktifkan pengelola bayangan untuk berkomunikasi dengan perangkat klien](work-with-client-device-shadows.md).

# Sinkronkan bayangan perangkat lokal dengan AWS IoT Core
<a name="sync-shadows-with-iot-core"></a>

Komponen shadow manager memungkinkan AWS IoT Greengrass untuk menyinkronkan status bayangan perangkat lokal dengan AWS IoT Core. Anda harus memodifikasi konfigurasi komponen shadow manager untuk menyertakan parameter `synchronization` konfigurasi, dan menentukan nama AWS IoT benda untuk perangkat Anda, dan bayangan yang ingin Anda sinkronkan. 

Ketika Anda mengonfigurasi bayangan manajer untuk menyinkronkan bayangan, ia menyinkronkan semua perubahan keadaan untuk bayangan tertentu, terlepas dari apakah perubahan tersebut terjadi dalam dokumen bayangan lokal atau di dokumen bayangan cloud.

Anda juga dapat menentukan apakah komponen pengelola bayangan menyinkronkan bayangan secara real time atau pada interval periodik. Secara default, komponen pengelola bayangan menyinkronkan bayangan secara real time, sehingga perangkat inti mengirim dan menerima pembaruan bayangan ke dan dari AWS IoT Core saat setiap pembaruan terjadi. Anda dapat mengonfigurasi interval berkala untuk mengurangi penggunaan dan biaya bandwidth.

**Topics**
+ [Prasyarat](#shadow-sync-prereqs)
+ [Konfigurasikan komponen manajer bayangan](#configure-shadow-manager-for-sync)
+ [Sinkronkan bayangan lokal](#sync-local-shadows)
+ [Bayangan menggabungkan perilaku konflik](#shadow-merge-behavior)

## Prasyarat
<a name="shadow-sync-prereqs"></a>

Untuk menyinkronkan bayangan lokal dengan AWS IoT Core, Anda harus mengonfigurasi kebijakan perangkat inti Greengrass untuk mengizinkan AWS IoT tindakan kebijakan bayangan berikut. AWS IoT Core 
+ `iot:GetThingShadow`
+ `iot:UpdateThingShadow`
+ `iot:DeleteThingShadow`

Untuk informasi selengkapnya, lihat berikut ini:
+ [AWS IoT Core tindakan kebijakan](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html) dalam *Panduan AWS IoT Pengembang*
+ [AWS IoT Kebijakan minimal untuk perangkat AWS IoT Greengrass V2 inti](device-auth.md#greengrass-core-minimal-iot-policy)
+ [Memperbarui AWS IoT kebijakan perangkat inti](device-auth.md#update-core-device-iot-policy)

## Konfigurasikan komponen manajer bayangan
<a name="configure-shadow-manager-for-sync"></a>

Manajer bayangan memerlukan daftar bayangan nama pemetaan untuk menyinkronkan informasi keadaan bayangan dalam dokumen bayangan lokal ke dokumen bayangan cloud di AWS IoT Core.

Untuk menyinkronkan bayangan keadaan, [buat deployment](create-deployments.md) yang mencakup komponen `aws.greengrass.ShadowManager`, dan tentukan bayangan yang ingin Anda sinkronkan di parameter konfigurasi `synchronize` dalam konfigurasi shadow manager dalam deployment tersebut.

**catatan**  <a name="note-requirement-enable-shadow-manager-client-devices"></a>
Untuk mengaktifkan perangkat inti berinteraksi dengan bayangan perangkat klien, Anda juga harus mengonfigurasi dan menerapkan komponen jembatan MQTT. Untuk informasi selengkapnya, lihat [Mengaktifkan pengelola bayangan untuk berkomunikasi dengan perangkat klien](work-with-client-device-shadows.md).

Contoh pembaruan konfigurasi berikut menginstruksikan komponen shadow manager untuk menyinkronkan bayangan berikut dengan AWS IoT Core:
+ Bayangan klasik untuk perangkat inti 
+ `MyCoreShadow` yang bernama untuk perangkat inti 
+ Bayangan klasik untuk objek IoT bernama `MyDevice2` 
+ Bayangan yang bernama `MyShadowA` dan `MyShadowB` untuk objek IoT bernama `MyDevice1`

Pembaruan konfigurasi ini menentukan untuk menyinkronkan bayangan dengan AWS IoT Core secara real time. Jika Anda menggunakan shadow manager v2.1.0 atau yang lebih baru, Anda dapat mengonfigurasi komponen shadow manager untuk menyinkronkan bayangan pada interval periodik. Untuk mengonfigurasi fitur ini, ubah strategi sinkronisasi ke`periodic`, dan tentukan a `delay` dalam detik untuk interval tersebut. Untuk informasi selengkapnya, lihat [parameter konfigurasi strategi](shadow-manager-component.md#shadow-manager-component-configuration) komponen shadow manager.

Pembaruan konfigurasi ini menentukan untuk menyinkronkan bayangan di kedua arah antara AWS IoT Core dan perangkat inti. Jika Anda menggunakan shadow manager v2.2.0 atau yang lebih baru, Anda dapat mengonfigurasi komponen shadow manager untuk menyinkronkan bayangan hanya dalam satu arah. Untuk mengonfigurasi fitur ini, ubah sinkronisasi `direction` ke `deviceToCloud` atau`cloudToDevice`. Untuk informasi selengkapnya, lihat [parameter konfigurasi arah](shadow-manager-component.md#shadow-manager-component-configuration) komponen shadow manager.

```
{
  "strategy": {
    "type": "realTime"
  },
  "synchronize": {
    "coreThing": {
      "classic": true,
      "namedShadows": [
        "MyCoreShadow"
      ]
    },
    "shadowDocuments": [
      {
        "thingName": "MyDevice1",
        "classic": false,
        "namedShadows": [
          "MyShadowA",
          "MyShadowB"
        ]
      },
      {
        "thingName": "MyDevice2",
        "classic": true,
        "namedShadows": [ ]
      }
    ],
    "direction": "betweenDeviceAndCloud"
  }
}
```

## Sinkronkan bayangan lokal
<a name="sync-local-shadows"></a>

Saat perangkat inti Greengrass terhubung ke AWS IoT cloud, pengelola bayangan melakukan tugas berikut untuk bayangan yang Anda tentukan dalam konfigurasi komponen. Perilaku tergantung pada opsi konfigurasi arah sinkronisasi bayangan yang Anda tentukan. Secara default, shadow manager menggunakan `betweenDeviceAndCloud` opsi untuk menyinkronkan bayangan di kedua arah. Jika Anda menggunakan shadow manager v2.2.0 atau yang lebih baru, Anda dapat mengonfigurasi perangkat inti untuk menyinkronkan bayangan hanya dalam satu arah, yang bisa `cloudToDevice` atau. `deviceToCloud`
+ Jika konfigurasi arah sinkronisasi bayangan adalah `betweenDeviceAndCloud` atau`cloudToDevice`, manajer bayangan mengambil informasi status yang dilaporkan dari dokumen bayangan awan di AWS IoT Core. Kemudian, ia memperbarui dokumen bayangan yang disimpan secara lokal untuk menyinkronkan status perangkat.
+ Jika konfigurasi arah sinkronisasi bayangan adalah `betweenDeviceAndCloud` atau`deviceToCloud`, manajer bayangan menerbitkan status perangkat saat ini ke dokumen bayangan awan.

## Bayangan menggabungkan perilaku konflik
<a name="shadow-merge-behavior"></a>

Dalam beberapa kasus, seperti ketika perangkat inti terputus dari internet, bayangan mungkin berubah di layanan bayangan lokal dan di AWS IoT cloud sebelum manajer bayangan menyinkronkan perubahan. Akibatnya, status yang diinginkan dan dilaporkan berbeda antara layanan bayangan lokal dan AWS IoT cloud

Ketika manajer bayangan menyinkronkan bayangan, itu menggabungkan perubahan sesuai dengan perilaku berikut:
+ Jika Anda menggunakan versi pengelola bayangan lebih awal dari v2.2.0, atau saat Anda menentukan arah sinkronisasi `betweenDeviceAndCloud` bayangan, perilaku berikut akan berlaku:
  + Ketika ada konflik gabungan dalam keadaan bayangan yang diinginkan, pengelola bayangan menimpa bagian yang bertentangan dari dokumen bayangan lokal dengan nilai dari cloud. AWS IoT 
  + Ketika ada konflik gabungan dalam status bayangan yang dilaporkan, pengelola bayangan menimpa bagian bayangan yang bertentangan di AWS IoT cloud dengan nilai dari dokumen bayangan lokal.
+ Saat Anda menentukan arah sinkronisasi `deviceToCloud` bayangan, pengelola bayangan akan menimpa bagian bayangan yang bertentangan di AWS IoT cloud dengan nilai dari dokumen bayangan lokal.
+ Saat Anda menentukan arah sinkronisasi `cloudToDevice` bayangan, pengelola bayangan akan menimpa bagian yang bertentangan dari dokumen bayangan lokal dengan nilai dari cloud. AWS IoT 