

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

# Mengatur dan memecahkan masalah AWS IoT Greengrass dengan perangkat klien
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices"></a>

*Marouane Sefiani dan Akalanka De Silva, Amazon Web Services*

## Ringkasan
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-summary"></a>

AWS IoT Greengrass adalah runtime edge open-source dan layanan cloud untuk membangun, menerapkan, dan mengelola perangkat lunak Internet of Things (IoT) pada perangkat edge. Kasus penggunaan untuk AWS IoT Greengrass meliputi:
+ Rumah pintar tempat gateway AWS IoT Greengrass digunakan sebagai hub untuk otomatisasi rumah
+ Pabrik pintar tempat AWS IoT Greengrass dapat memfasilitasi konsumsi dan pemrosesan data lokal dari lantai toko

AWS IoT Greengrass dapat bertindak sebagai titik akhir koneksi MQTT yang aman dan terautentikasi untuk perangkat edge lainnya (*juga dikenal* sebagai perangkat klien), yang biasanya akan terhubung langsung ke AWS IoT Core. Kemampuan ini berguna ketika perangkat klien tidak memiliki akses jaringan langsung ke titik akhir AWS IoT Core.

Anda dapat mengatur AWS IoT Greengrass untuk digunakan dengan perangkat klien untuk kasus penggunaan berikut:
+ Untuk perangkat klien untuk mengirim data ke AWS IoT Greengrass
+ Untuk AWS IoT Greengrass untuk meneruskan data ke AWS IoT Core
+ Untuk memanfaatkan fitur engine aturan AWS IoT Core yang canggih

Kemampuan ini memerlukan penginstalan dan konfigurasi komponen berikut pada perangkat AWS IoT Greengrass:
+ Pialang MQTT
+ Jembatan MQTT
+ Otentikasi perangkat klien
+ Detektor IP

Selain itu, pesan yang dipublikasikan dari perangkat klien harus dalam format JSON atau format [Protocol Buffers (protobuf)](https://protobuf.dev/).

Pola ini menjelaskan cara menginstal dan mengkonfigurasi komponen yang diperlukan ini, dan memberikan tips pemecahan masalah dan praktik terbaik.

## Prasyarat dan batasan
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-prereqs"></a>

**Prasyarat**
+ Akun AWS yang aktif
+ [AWS Command Line Interface (AWS CLI) versi 2](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)
+ Dua perangkat klien yang menjalankan Python 3.7 atau yang lebih baru
+ [Satu perangkat inti yang menjalankan Java Runtime Environment (JRE) versi 8 atau yang lebih baru, dan Amazon [Corretto](https://aws.amazon.com/corretto/) 11 atau OpenJDK 11](https://openjdk.java.net/)

**Batasan**
+ Anda harus memilih Wilayah AWS tempat AWS IoT Core tersedia. Untuk daftar Wilayah AWS IoT Core saat ini, lihat [AWS Services by](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/) Region.
+ Perangkat inti harus memiliki setidaknya 172 MB RAM dan 512 MB ruang disk.

## Arsitektur
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-architecture"></a>

Diagram berikut menunjukkan arsitektur solusi untuk pola ini.

![\[Arsitektur solusi untuk menyiapkan AWS IoT Greengrass dengan perangkat klien\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/a340e6ea-dcfa-42a4-a370-c16ee08a6842/images/0656c5ae-d979-4cf7-be92-a46fa81cab0d.png)


Arsitekturnya meliputi:
+ Dua perangkat klien. Setiap perangkat berisi kunci pribadi, sertifikat perangkat, dan sertifikat otoritas sertifikat root (CA). AWS IoT Device SDK, yang berisi klien MQTT, juga diinstal pada setiap perangkat klien.
+ Perangkat inti yang memiliki AWS IoT Greengrass yang digunakan dengan komponen berikut:
  + Pialang MQTT
  + Jembatan MQTT
  + Otentikasi perangkat klien
  + Detektor IP

Arsitektur ini mendukung skenario berikut:
+ Perangkat klien dapat menggunakan klien MQTT mereka untuk berkomunikasi satu sama lain melalui broker MQTT perangkat inti.
+ Perangkat klien juga dapat berkomunikasi dengan AWS IoT Core di cloud melalui broker MQTT perangkat inti dan jembatan MQTT.
+ AWS IoT Core di cloud dapat mengirim pesan ke perangkat klien melalui klien pengujian MQTT dan jembatan MQTT perangkat inti dan broker MQTT.

Untuk informasi selengkapnya tentang komunikasi antara perangkat klien dan perangkat inti, lihat bagian [Informasi tambahan](#set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-additional).

## Alat
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-tools"></a>

**Layanan AWS**
+ [AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html) adalah layanan runtime dan cloud edge Internet of Things (IoT) open source yang membantu Anda membangun, menerapkan, dan mengelola aplikasi IoT di perangkat Anda.
+ [AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html) Core menyediakan komunikasi dua arah yang aman untuk perangkat yang terhubung ke internet agar tersambung ke AWS Cloud.
+ [AWS IoT Device SDK](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html) adalah kit pengembangan perangkat lunak yang mencakup pustaka sumber terbuka, panduan pengembang dengan sampel, dan panduan porting sehingga Anda dapat membuat produk atau solusi IoT inovatif pada platform perangkat keras pilihan Anda.
+ [AWS Identity and Access Management (IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html) membantu Anda mengelola akses ke sumber daya AWS dengan aman dengan mengontrol siapa yang diautentikasi dan diberi wewenang untuk menggunakannya.

## Praktik terbaik
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-best-practices"></a>
+ Muatan pesan dari perangkat klien harus dalam format JSON atau Protobuf untuk memanfaatkan fitur-fitur canggih dari mesin aturan AWS IoT Core, seperti transformasi dan tindakan bersyarat.
+ Konfigurasikan jembatan MQTT untuk memungkinkan komunikasi dua arah.
+ Konfigurasikan dan terapkan komponen detektor IP di AWS IoT Greengrass untuk memastikan bahwa alamat IP perangkat inti disertakan dalam bidang nama alternatif subjek (SAN) sertifikat broker MQTT.

## Epik
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-epics"></a>

### Siapkan perangkat inti
<a name="set-up-the-core-device"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Siapkan AWS IoT Greengrass di perangkat inti Anda. | [Instal perangkat lunak AWS IoT Greengrass Core dengan mengikuti petunjuk di panduan pengembang.](https://docs.aws.amazon.com/greengrass/v2/developerguide/install-greengrass-core-v2.html) | AWS IoT Greengrass | 
| Periksa status instalasi Anda. | Gunakan perintah berikut untuk memeriksa status layanan AWS IoT Greengrass di perangkat inti Anda:<pre>sudo systemctl status greengrass.service</pre>Output yang diharapkan dari perintah ini adalah:<pre>Launched Nucleus successfully</pre> | AWS Umum | 
| Siapkan kebijakan IAM dan lampirkan ke peran layanan Greengrass. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | AWS Umum | 
| Konfigurasikan dan terapkan komponen yang diperlukan di perangkat inti AWS IoT Greengrass. | Konfigurasikan dan terapkan komponen-komponen berikut:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | AWS IoT Greengrass | 
| Konfirmasikan bahwa jembatan MQTT memungkinkan komunikasi dua arah. | Untuk menyampaikan pesan MQTT antara perangkat klien dan AWS IoT Core, konfigurasikan dan terapkan komponen jembatan MQTT dan tentukan topik yang akan disampaikan. Berikut ini contohnya:<pre>{<br />  "mqttTopicMapping": {<br />    "ClientDevicesToCloud": {<br />      "topic": "dt/#",<br />      "source": "LocalMqtt",<br />      "target": "IotCore"<br />    },<br />    "CloudToClientDevices": {<br />      "topic": "cmd/#",<br />      "source": "IotCore",<br />      "target": "LocalMqtt"<br />    }<br />  }<br />}</pre> | AWS IoT Greengrass | 
| Konfirmasikan bahwa komponen autentikasi memungkinkan perangkat klien untuk terhubung dan menerbitkan atau berlangganan topik.  | `aws.greengrass.clientdevices.Auth`Konfigurasi berikut memungkinkan semua perangkat klien untuk terhubung, mempublikasikan pesan, dan berlangganan semua topik.<pre>{<br />  "deviceGroups": {<br />    "formatVersion": "2021-03-05",<br />    "definitions": {<br />      "MyPermissiveDeviceGroup": {<br />        "selectionRule": "thingName: *",<br />        "policyName": "MyPermissivePolicy"<br />      }<br />    },<br />    "policies": {<br />      "MyPermissivePolicy": {<br />        "AllowAll": {<br />          "statementDescription": "Allow client devices to perform all actions.",<br />          "operations": [<br />            "*"<br />          ],<br />          "resources": [<br />            "*"<br />          ]<br />        }<br />      }<br />    }<br />  }<br />}</pre> | AWS IoT Greengrass | 

### Siapkan perangkat klien
<a name="set-up-client-devices"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Instal AWS IoT Device SDK. | Instal AWS IoT Device SDK pada perangkat klien. Untuk daftar lengkap bahasa yang didukung dan yang terkait SDKs, lihat dokumentasi [AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html).[Misalnya, AWS IoT Device SDK untuk Python SDK terletak di. GitHub](https://github.com/aws/aws-iot-device-sdk-python-v2) Untuk menginstal SDK ini:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html)Atau, Anda dapat menginstal SDK dari repositori sumber:<pre># Create a workspace directory to hold all the SDK files<br />mkdir sdk-workspace<br />cd sdk-workspace<br /># Clone the repository<br />git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git<br /># Install using Pip (use 'python' instead of 'python3' on Windows)<br />python3 -m pip install ./aws-iot-device-sdk-python-v2</pre> | AWS IoT Umum | 
| Ciptakan sesuatu. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | AWS IoT Core | 
| Unduh sertifikat CA dari perangkat inti Greengrass. | Jika Anda mengharapkan perangkat inti Greengrass berfungsi di lingkungan offline, Anda harus membuat sertifikat CA inti Greengrass tersedia untuk perangkat klien sehingga dapat memverifikasi sertifikat broker MQTT (yang dikeluarkan oleh CA inti Greengrass). Karena itu, penting untuk mendapatkan salinan sertifikat ini. Gunakan salah satu pendekatan berikut untuk mengunduh sertifikat CA:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | AWS Umum | 
| Salin kredensi di perangkat klien. | Salin sertifikat CA inti Greengrass, sertifikat perangkat, dan kunci pribadi di perangkat klien. | AWS Umum | 
| Kaitkan perangkat klien dengan perangkat inti. | Mengaitkan perangkat klien dengan perangkat inti sehingga mereka dapat menemukan perangkat inti. Perangkat klien kemudian dapat menggunakan [Greengrass discovery](https://docs.aws.amazon.com/greengrass/v2/developerguide/greengrass-discover-api.html) API untuk mengambil informasi konektivitas dan sertifikat untuk perangkat inti terkait mereka. Untuk informasi selengkapnya, lihat [Mengaitkan perangkat klien](https://docs.aws.amazon.com/greengrass/v2/developerguide/associate-client-devices.html) dalam dokumentasi AWS IoT Greengrass.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html)Perangkat klien yang telah Anda kaitkan sekarang dapat menggunakan Greengrass penemuan API untuk menemukan perangkat inti ini. | AWS IoT Greengrass | 

### Mengirim dan menerima data
<a name="send-and-receive-data"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Kirim data dari satu perangkat klien ke perangkat klien lain. | Gunakan klien MQTT di perangkat Anda untuk mempublikasikan pesan tentang topik tersebut. `dt/client1/sensor` | AWS Umum | 
| Kirim data dari perangkat klien ke AWS IoT Core. | Gunakan klien MQTT di perangkat Anda untuk mempublikasikan pesan tentang topik tersebut. `dt/client1/sensor`[Di klien pengujian MQTT, berlangganan topik tempat perangkat mengirim pesan, atau berlangganan **\$1** untuk semua topik (lihat detail).](https://docs.aws.amazon.com/iot/latest/developerguide/view-mqtt-messages.html) | AWS Umum | 
| Kirim pesan dari AWS IoT Core ke perangkat klien. | Pada halaman klien pengujian MQTT, di tab **Publikasikan ke topik**, di bidang **Nama topik**, masukkan nama topik pesan Anda. Dalam contoh ini, gunakan `cmd/client1` untuk topik. | AWS Umum | 

## Pemecahan masalah
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-troubleshooting"></a>


| Isu | Solusi | 
| --- | --- | 
| **Tidak dapat memverifikasi kesalahan sertifikat server** | Kesalahan ini terjadi ketika klien MQTT tidak dapat memverifikasi sertifikat yang disajikan oleh broker MQTT selama jabat tangan TLS. Alasan paling umum adalah bahwa klien MQTT tidak memiliki sertifikat CA. Ikuti langkah-langkah ini untuk memastikan bahwa sertifikat CA diberikan kepada klien MQTT.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices.html) | 
| **Tidak dapat memverifikasi kesalahan nama server** | Kesalahan ini terjadi ketika klien MQTT tidak dapat memverifikasi bahwa itu terhubung ke server yang benar. Alasan paling umum adalah bahwa alamat IP perangkat Greengrass tidak terdaftar di bidang SAN sertifikat.[Ikuti petunjuk di solusi sebelumnya untuk mendapatkan sertifikat broker MQTT dan verifikasi bahwa bidang SAN berisi alamat IP perangkat AWS IoT Greengrass, seperti yang dijelaskan di bagian Informasi tambahan.](#set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-additional) Jika tidak, konfirmasikan bahwa komponen detektor IP diinstal dengan benar dan restart perangkat inti. | 
| **Tidak dapat memverifikasi nama server hanya saat menghubungkan dari perangkat klien yang disematkan** | Mbed TLS, yang merupakan pustaka TLS populer yang digunakan dalam perangkat tertanam, saat ini mendukung verifikasi nama DNS hanya di bidang SAN sertifikat, seperti yang ditunjukkan dalam kode perpustakaan Mbed TLS. Karena perangkat inti tidak memiliki nama domain sendiri dan bergantung pada alamat IP, klien TLS yang menggunakan Mbed TLS akan gagal verifikasi nama server selama jabat tangan TLS, menyebabkan kegagalan koneksi. Kami menyarankan Anda menambahkan verifikasi alamat IP SAN ke pustaka Mbed TLS Anda di fungsi [x509\$1crt\$1check\$1san](https://github.com/Mbed-TLS/mbedtls/blob/6a327a5fdc2786cb50b4dbe5e3a75884a1f8435a/library/x509_crt.c#L2548). | 

## Sumber daya terkait
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-resources"></a>
+ [Dokumentasi AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/v2/developerguide/what-is-iot-greengrass.html)
+ [Dokumentasi AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html)
+ [Komponen broker MQTT](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-broker-moquette-component.html)
+ [Komponen jembatan MQTT](https://docs.aws.amazon.com/greengrass/v2/developerguide/mqtt-bridge-component.html)
+ [Komponen autentikasi perangkat klien](https://docs.aws.amazon.com/greengrass/v2/developerguide/client-device-auth-component.html)
+ [Komponen detektor IP](https://docs.aws.amazon.com/greengrass/v2/developerguide/ip-detector-component.html)
+ SDK [Perangkat AWS IoT s](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html)
+ [Menerapkan Perangkat Klien Lokal dengan AWS IoT Greengrass](https://aws.amazon.com/blogs/iot/implementing-local-client-devices-with-aws-iot-greengrass/) (postingan blog AWS)
+ [RFC 5280 - Profil Sertifikat Infrastruktur Kunci Publik Internet X.509 dan Daftar Pencabutan Sertifikat (CRL)](https://www.rfc-editor.org/rfc/rfc5280)

## Informasi tambahan
<a name="set-up-and-troubleshoot-aws-iot-greengrass-with-client-devices-additional"></a>

Bagian ini memberikan informasi tambahan tentang komunikasi antara perangkat klien dan perangkat inti.

Broker MQTT mendengarkan port 8883 di perangkat inti untuk upaya koneksi klien TLS. Ilustrasi berikut menunjukkan contoh sertifikat server broker MQTT.

![\[Contoh sertifikat server broker MQTT\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/a340e6ea-dcfa-42a4-a370-c16ee08a6842/images/b2c324a1-60cd-4194-80e7-e5184662146a.png)


Sertifikat contoh menampilkan rincian berikut:
+ Sertifikat ini dikeluarkan oleh AWS IoT Greengrass Core CA, yang bersifat lokal dan khusus untuk perangkat inti; artinya, ia bertindak sebagai CA lokal.
+ Sertifikat ini secara otomatis diputar setiap minggu oleh komponen autentikasi klien seperti yang ditunjukkan pada ilustrasi berikut. Anda dapat mengatur interval ini dalam konfigurasi komponen autentikasi klien.

![\[Memutar sertifikat server broker MQTT\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/a340e6ea-dcfa-42a4-a370-c16ee08a6842/images/65bcdc5c-a71c-4f52-adcd-21910fabfc2a.png)

+ Nama alternatif subjek (SAN) memainkan peran penting dalam verifikasi nama server di ujung klien TLS. Ini membantu klien TLS memastikan bahwa itu terhubung ke server yang benar dan membantu menghindari man-in-the-middle serangan selama pengaturan sesi TLS. Dalam contoh sertifikat, bidang SAN menunjukkan bahwa server ini mendengarkan di localhost (soket domain Unix lokal), dan antarmuka jaringan memiliki alamat IP 192.168.1.12.

Klien TLS menggunakan bidang SAN dalam sertifikat untuk memverifikasi bahwa itu terhubung ke server yang sah selama verifikasi server. Sebaliknya, selama jabat tangan TLS khas antara server HTTP dan browser, nama domain di bidang common name (CN) atau bidang SAN digunakan untuk memeriksa silang domain yang sebenarnya terhubung ke browser selama proses verifikasi server. Jika perangkat inti tidak memiliki nama domain, alamat IP yang disertakan dalam bidang SAN memiliki tujuan yang sama. Untuk informasi selengkapnya, lihat [bagian Nama Alternatif Subjek](https://www.rfc-editor.org/rfc/rfc5280#section-4.2.1.6) dari Profil *RFC 5280 - Internet X.509 Sertifikat Infrastruktur Kunci Publik dan Daftar Pencabutan Sertifikat (CRL*).

Komponen detektor IP di AWS IoT Greengrass memastikan bahwa alamat IP yang benar disertakan dalam bidang SAN sertifikat.

Sertifikat dalam contoh ditandatangani oleh perangkat AWS IoT Greengrass yang bertindak sebagai CA lokal. Klien TLS (klien MQTT) tidak mengetahui CA ini, jadi kami harus memberikan sertifikat CA yang terlihat seperti berikut ini.

![\[Contoh sertifikat CA\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/a340e6ea-dcfa-42a4-a370-c16ee08a6842/images/b08b3bcb-9e12-4f5a-9204-cf65ea32902f.png)
