

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

# Connect perangkat klien ke perangkat inti
<a name="connect-client-devices"></a>

Anda dapat mengonfigurasi *Penemuan cloud* untuk menghubungkan perangkat klien ke perangkat inti. Saat Anda mengonfigurasi penemuan cloud, perangkat klien dapat terhubung ke layanan AWS IoT Greengrass cloud untuk mengambil informasi tentang perangkat inti yang dapat mereka sambungkan. Kemudian, perangkat klien dapat mencoba untuk menyambung ke setiap perangkat inti sampai berhasil terhubung.

Untuk menggunakan penemuan cloud, Anda harus melakukan hal berikut:
+ Kaitkan perangkat klien ke perangkat inti tempat mereka dapat terhubung.
+ Tentukan titik akhir broker MQTT di mana perangkat klien dapat terhubung ke setiap perangkat inti.
+ Deploy komponen ke perangkat inti yang memungkinkan dukungan untuk perangkat klien.

  Anda juga dapat menggunakan komponen opsional untuk melakukan hal berikut:
  + Relay pesan antara perangkat klien, komponen Greengrass, dan layanan cloud. AWS IoT Core 
  + Secara otomatis kelola titik akhir broker MQTT perangkat inti untuk Anda.
  + Kelola bayangan perangkat klien lokal dan sinkronkan bayangan dengan layanan AWS IoT Core cloud.

Anda juga harus meninjau dan memperbarui AWS IoT kebijakan perangkat inti untuk memverifikasi bahwa ia memiliki izin yang diperlukan untuk menghubungkan perangkat klien. Untuk informasi selengkapnya, lihat [Persyaratan](#connect-client-devices-requirements).

Setelah Anda mengonfigurasi penemuan cloud, Anda dapat menguji komunikasi antara perangkat klien dan perangkat inti. Untuk informasi selengkapnya, lihat [Uji komunikasi perangkat klien](test-client-device-communications.md).

**Topics**
+ [Persyaratan](#connect-client-devices-requirements)
+ [Komponen Greengrass untuk dukungan perangkat klien](#cloud-discovery-components)
+ [Konfigurasikan penemuan cloud (konsol)](#configure-cloud-discovery-console)
+ [Konfigurasikan penemuan cloud (AWS CLI)](#configure-cloud-discovery-cli)
+ [Mengaitkan perangkat klien](associate-client-devices.md)
+ [Mengautentikasi klien saat offline](offline-authentication.md)
+ [Kelola titik akhir perangkat inti](manage-core-device-endpoints.md)
+ [Pilih broker MQTT](choose-local-mqtt-broker.md)
+ [Menghubungkan perangkat klien ke perangkat AWS IoT Greengrass Core dengan broker MQTT](connecting-to-mqtt.md)
+ [Uji komunikasi perangkat klien](test-client-device-communications.md)
+ [API penemuan Greengrass RESTful](greengrass-discover-api.md)

## Persyaratan
<a name="connect-client-devices-requirements"></a>

Untuk menghubungkan perangkat klien ke perangkat inti, Anda harus memiliki yang berikut:
+ Perangkat inti harus menjalankan [Greengrass](greengrass-nucleus-component.md) nucleus v2.2.0 atau yang lebih baru.
+ Peran layanan Greengrass yang terkait AWS IoT Greengrass dengan untuk Akun AWS Anda di AWS Wilayah tempat perangkat inti beroperasi. Untuk informasi selengkapnya, lihat [Konfigurasikan peran layanan Greengrass](#configure-service-role-requirement).
+  AWS IoT Kebijakan perangkat inti harus mengizinkan izin berikut:<a name="core-device-iot-policy-client-device-permissions"></a>
  + <a name="core-device-iot-policy-client-device-permissions-putcertificateauthorities"></a>`greengrass:PutCertificateAuthorities`
  + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceidentity"></a>`greengrass:VerifyClientDeviceIdentity`
  + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceiotcertificateassociation"></a>`greengrass:VerifyClientDeviceIoTCertificateAssociation`
  + <a name="core-device-iot-policy-client-device-permissions-getconnectivityinfo"></a>`greengrass:GetConnectivityInfo`
  + <a name="core-device-iot-policy-client-device-permissions-updateconnectivityinfo"></a>`greengrass:UpdateConnectivityInfo`— (Opsional) Izin ini diperlukan untuk menggunakan [komponen detektor IP](ip-detector-component.md), yang melaporkan informasi konektivitas jaringan perangkat inti ke layanan AWS IoT Greengrass cloud.
  + <a name="core-device-iot-policy-client-device-permissions-shadows"></a>`iot:GetThingShadow`,`iot:UpdateThingShadow`, dan `iot:DeleteThingShadow` — (Opsional) Izin ini diperlukan untuk menggunakan [komponen shadow manager](shadow-manager-component.md) untuk menyinkronkan bayangan perangkat klien dengan AWS IoT Core. [Fitur ini membutuhkan [Greengrass](greengrass-nucleus-component.md) nucleus v2.6.0 atau yang lebih baru, shadow manager v2.2.0 atau yang lebih baru, dan MQTT bridge v2.2.0 atau yang lebih baru.](mqtt-bridge-component.md)

  Untuk informasi selengkapnya, lihat [Konfigurasikan kebijakan AWS IoT hal](#configure-iot-policy-requirement).
**catatan**  
Jika Anda menggunakan AWS IoT kebijakan default saat [menginstal perangkat lunak AWS IoT Greengrass Core](install-greengrass-core-v2.md), perangkat inti memiliki AWS IoT kebijakan yang memungkinkan akses ke semua AWS IoT Greengrass tindakan (`greengrass:*`).
+ AWS IoT hal-hal yang dapat Anda hubungkan sebagai perangkat klien. Untuk informasi lebih lanjut, lihat [Buat AWS IoT sumber daya](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html) di *AWS IoT Core Panduan Developer*.
+ Perangkat klien harus terhubung menggunakan ID klien. ID klien adalah nama benda. Tidak ada ID klien lain yang akan diterima.
+  AWS IoT Kebijakan setiap perangkat klien harus mengizinkan `greengrass:Discover` izin tersebut. Untuk informasi selengkapnya, lihat [AWS IoT Kebijakan minimal untuk perangkat klien](device-auth.md#client-device-minimal-iot-policy).

**Topics**
+ [Konfigurasikan peran layanan Greengrass](#configure-service-role-requirement)
+ [Konfigurasikan kebijakan AWS IoT hal](#configure-iot-policy-requirement)

### Konfigurasikan peran layanan Greengrass
<a name="configure-service-role-requirement"></a>

<a name="greengrass-service-role-intro"></a>Peran layanan Greengrass adalah peran layanan (IAM) AWS Identity and Access Management yang AWS IoT Greengrass mengizinkan untuk mengakses sumber daya dari layanan atas nama Anda. AWS Peran ini memungkinkan AWS IoT Greengrass untuk memverifikasi identitas perangkat klien dan mengelola informasi konektivitas perangkat inti.

Jika sebelumnya Anda belum menyiapkan peran layanan [Greengrass di Wilayah ini, Anda harus mengaitkan peran layanan](greengrass-service-role.md) Greengrass untuk Anda di Wilayah ini. AWS IoT Greengrass Akun AWS 

Saat Anda menggunakan halaman **Konfigurasi penemuan perangkat inti** di [AWS IoT Greengrass konsol](https://console.aws.amazon.com/greengrass), siapkan AWS IoT Greengrass peran layanan Greengrass untuk Anda. Jika tidak, Anda dapat mengaturnya secara manual menggunakan [AWS IoT konsol](https://console.aws.amazon.com/iot) atau AWS IoT Greengrass API.

Di bagian ini, Anda memeriksa apakah peran layanan Greengrass sudah diatur. Jika tidak disiapkan, Anda membuat peran layanan Greengrass baru untuk dikaitkan AWS IoT Greengrass dengan Anda di Wilayah ini. Akun AWS 

#### Konfigurasikan peran layanan Greengrass (konsol)
<a name="configure-service-role-requirement-console"></a>

1. Periksa apakah peran layanan Greengrass dikaitkan AWS IoT Greengrass dengan untuk Anda di Wilayah ini. Akun AWS Lakukan hal-hal berikut:

   1. <a name="open-iot-console"></a>Navigasikan ke [konsol AWS IoT](https://console.aws.amazon.com/iot) tersebut.

   1. Di panel navigasi, pilih **Pengaturan**.

   1. Di bagian peran **layanan Greengrass, temukan Peran layanan** **saat ini untuk melihat apakah peran layanan** Greengrass terkait.

      Jika Anda memiliki peran layanan Greengrass yang terkait, Anda memenuhi persyaratan ini untuk menggunakan komponen detektor IP. Loncat ke [Konfigurasikan kebijakan AWS IoT hal](#configure-iot-policy-requirement).

1. Jika peran layanan Greengrass tidak terkait AWS IoT Greengrass dengan peran Akun AWS Anda di Wilayah ini, buat peran layanan Greengrass dan kaitkan. Lakukan hal-hal berikut:

   1. Arahkan ke [konsol IAM](https://console.aws.amazon.com/iam).

   1. Pilih **Peran**.

   1. Pilih **Buat peran**.

   1. Pada halaman **Buat peran**, lakukan hal berikut:

      1. Di bawah **Jenis entitas tepercaya**, pilih **Layanan AWS**.

      1. **Di bawah **Kasus penggunaan**, **Gunakan kasus untuk lainnya Layanan AWS**, pilih **Greengrass, pilih Greengrass**.** Opsi ini menentukan untuk menambahkan AWS IoT Greengrass sebagai entitas tepercaya yang dapat mengambil peran ini.

      1. Pilih **Berikutnya**.

      1. Di bawah **Kebijakan izin**, pilih yang akan dilampirkan **AWSGreengrassResourceAccessRolePolicy**ke peran.

      1. Pilih **Berikutnya**.

      1. Di **Nama peran**, masukkan nama untuk peran tersebut, seperti**Greengrass\$1ServiceRole**.

      1. Pilih **Buat peran**.

   1. <a name="open-iot-console"></a>Navigasikan ke [konsol AWS IoT](https://console.aws.amazon.com/iot) tersebut.

   1. Di panel navigasi, pilih **Pengaturan**.

   1. **Di bagian peran **layanan Greengrass**, pilih Lampirkan peran.**

   1. **Dalam **Perbarui modal peran layanan Greengrass**, pilih peran IAM yang Anda buat, lalu pilih Lampirkan peran.**

#### Konfigurasikan peran layanan Greengrass ()AWS CLI
<a name="configure-service-role-requirement-cli"></a>

1. Periksa apakah peran layanan Greengrass dikaitkan AWS IoT Greengrass dengan untuk Anda di Wilayah ini. Akun AWS 

   ```
   aws greengrassv2 get-service-role-for-account
   ```

   Jika peran layanan Greengrass dikaitkan, operasi mengembalikan respons yang berisi informasi tentang peran tersebut.

   Jika Anda memiliki peran layanan Greengrass yang terkait, Anda memenuhi persyaratan ini untuk menggunakan komponen detektor IP. Loncat ke [Konfigurasikan kebijakan AWS IoT hal](#configure-iot-policy-requirement).

1. Jika peran layanan Greengrass tidak terkait AWS IoT Greengrass dengan peran Akun AWS Anda di Wilayah ini, buat peran layanan Greengrass dan kaitkan. Lakukan hal-hal berikut:

   1. <a name="create-greengrass-service-role-step-create-role"></a>Buat peran dengan kebijakan kepercayaan yang memungkinkan AWS IoT Greengrass untuk mengambil peran. Contoh ini menciptakan peran bernama `Greengrass_ServiceRole`, tetapi Anda dapat menggunakan nama yang berbeda. Kami menyarankan Anda juga menyertakan `aws:SourceArn` dan kunci konteks kondisi `aws:SourceAccount` global dalam kebijakan kepercayaan Anda untuk membantu mencegah masalah keamanan *wakil yang membingungkan*. Kunci konteks kondisi membatasi akses untuk mengizinkan hanya permintaan yang berasal dari akun tertentu dan ruang kerja Greengrass. Untuk informasi lebih lanjut tentang masalah wakil yang membingungkan, lihat[Pencegahan "confused deputy" lintas layanan](cross-service-confused-deputy-prevention.md).

------
#### [ Linux or Unix ]

      ```
      aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "greengrass.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
              "ArnLike": {
                "aws:SourceArn": "arn:aws:greengrass:region:account-id:*"
              },
              "StringEquals": {
                "aws:SourceAccount": "account-id"
              }
            }
          }
        ]
      }'
      ```

------
#### [ Windows Command Prompt (CMD) ]

      ```
      aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document "{\\"Version\\":\\"2012-10-17		 	 	 \\",\\"Statement\\":[{\\"Effect\\":\\"Allow\\",\\"Principal\\":{\\"Service\\":\\"greengrass.amazonaws.com\\"},\\"Action\\":\\"sts:AssumeRole\\",\\"Condition\\":{\\"ArnLike\\":{\\"aws:SourceArn\\":\\"arn:aws:greengrass:region:account-id:*\\"},\\"StringEquals\\":{\\"aws:SourceAccount\\":\\"account-id\\"}}}]}"
      ```

------
#### [ PowerShell ]

      ```
      aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "greengrass.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
              "ArnLike": {
                "aws:SourceArn": "arn:aws:greengrass:region:account-id:*"
              },
              "StringEquals": {
                "aws:SourceAccount": "account-id"
              }
            }
          }
        ]
      }'
      ```

------

   1. <a name="create-greengrass-service-role-step-copy-role-arn"></a>Salin peran ARN dari metadata peran dalam output. Anda menggunakan ARN untuk mengasosiasikan peran dengan akun Anda.

   1. <a name="create-greengrass-service-role-step-attach-policy"></a>Lampirkan kebijakan `AWSGreengrassResourceAccessRolePolicy` pada peran tersebut.

      ```
      aws iam attach-role-policy --role-name Greengrass_ServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy
      ```

   1. Kaitkan peran layanan Greengrass dengan untuk Anda. AWS IoT Greengrass Akun AWS Ganti *role-arn* dengan ARN dari peran layanan.

      ```
      aws greengrassv2 associate-service-role-to-account --role-arn role-arn
      ```

      Operasi mengembalikan respon berikut jika berhasil.

      ```
      {
        "associatedAt": "timestamp"
      }
      ```

### Konfigurasikan kebijakan AWS IoT hal
<a name="configure-iot-policy-requirement"></a>

Perangkat inti menggunakan sertifikat perangkat X.509 untuk mengotorisasi koneksi ke. AWS Anda melampirkan AWS IoT kebijakan ke sertifikat perangkat untuk menentukan izin untuk perangkat inti. Untuk informasi selengkapnya, lihat [AWS IoT kebijakan untuk operasi pesawat data](device-auth.md#iot-policies) dan [AWS IoT Kebijakan minimal untuk mendukung perangkat klien](device-auth.md#client-device-support-minimal-iot-policy).

Untuk menghubungkan perangkat klien ke perangkat inti, AWS IoT kebijakan perangkat inti harus mengizinkan izin berikut:<a name="core-device-iot-policy-client-device-permissions"></a>
+ <a name="core-device-iot-policy-client-device-permissions-putcertificateauthorities"></a>`greengrass:PutCertificateAuthorities`
+ <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceidentity"></a>`greengrass:VerifyClientDeviceIdentity`
+ <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceiotcertificateassociation"></a>`greengrass:VerifyClientDeviceIoTCertificateAssociation`
+ <a name="core-device-iot-policy-client-device-permissions-getconnectivityinfo"></a>`greengrass:GetConnectivityInfo`
+ <a name="core-device-iot-policy-client-device-permissions-updateconnectivityinfo"></a>`greengrass:UpdateConnectivityInfo`— (Opsional) Izin ini diperlukan untuk menggunakan [komponen detektor IP](ip-detector-component.md), yang melaporkan informasi konektivitas jaringan perangkat inti ke layanan AWS IoT Greengrass cloud.
+ <a name="core-device-iot-policy-client-device-permissions-shadows"></a>`iot:GetThingShadow`,`iot:UpdateThingShadow`, dan `iot:DeleteThingShadow` — (Opsional) Izin ini diperlukan untuk menggunakan [komponen shadow manager](shadow-manager-component.md) untuk menyinkronkan bayangan perangkat klien dengan AWS IoT Core. [Fitur ini membutuhkan [Greengrass](greengrass-nucleus-component.md) nucleus v2.6.0 atau yang lebih baru, shadow manager v2.2.0 atau yang lebih baru, dan MQTT bridge v2.2.0 atau yang lebih baru.](mqtt-bridge-component.md)

Di bagian ini, Anda meninjau AWS IoT kebijakan untuk perangkat inti Anda dan menambahkan izin yang diperlukan yang tidak ada. Jika Anda menggunakan [penginstal perangkat lunak AWS IoT Greengrass inti untuk menyediakan sumber daya](quick-installation.md), perangkat inti Anda memiliki AWS IoT kebijakan yang memungkinkan akses ke semua AWS IoT Greengrass tindakan (`greengrass:*`). Dalam hal ini, Anda harus memperbarui AWS IoT kebijakan hanya jika Anda berencana untuk menerapkan komponen pengelola bayangan untuk menyinkronkan bayangan perangkat. AWS IoT Core Jika tidak, Anda dapat melewati bagian ini.

#### Konfigurasikan kebijakan AWS IoT hal (konsol)
<a name="configure-iot-policy-requirement-console"></a>

1. <a name="update-iot-policy-console-open-greengrass-console"></a>Di menu navigasi [konsol AWS IoT Greengrass](https://console.aws.amazon.com/greengrass) tersebut, pilih **Perangkat inti**.

1. <a name="update-iot-policy-console-choose-core-device"></a>Pada halaman **Perangkat inti**, pilih perangkat inti yang akan diperbarui.

1. <a name="update-iot-policy-console-choose-core-device-thing"></a>Pada halaman detail perangkat inti, pilih tautan ke **Objek** perangkat inti. Tautan ini membuka halaman rincian hal di AWS IoT konsol.

1. <a name="update-iot-policy-console-choose-thing-security"></a>Pada halaman detail objek, pilih **Sertifikat**.

1. <a name="update-iot-policy-console-choose-thing-certificate"></a>Di tab **Sertifikat**, pilih sertifikat aktif objek.

1. <a name="update-iot-policy-console-choose-certificate-policies"></a>Pada halaman detail sertifikat, pilih **Kebijakan**.

1. <a name="update-iot-policy-console-choose-policy"></a>Di tab **Kebijakan**, pilih AWS IoT kebijakan yang akan ditinjau dan diperbarui. Anda dapat menambahkan izin yang diperlukan untuk kebijakan yang dilampirkan ke sertifikat aktif perangkat inti.
**catatan**  <a name="quick-installation-iot-policies-note"></a>
Jika Anda menggunakan [penginstal perangkat lunak AWS IoT Greengrass inti untuk menyediakan sumber daya](quick-installation.md), Anda memiliki dua AWS IoT kebijakan. Kami menyarankan Anda memilih kebijakan yang diberi nama **GreengrassV2IoTThingPolicy**, jika ada. Perangkat inti yang Anda buat dengan penginstal cepat menggunakan nama kebijakan ini secara default. Jika Anda menambahkan izin untuk kebijakan ini, Anda juga memberikan izin ini ke perangkat inti lain yang menggunakan kebijakan ini.

1. <a name="update-iot-policy-console-edit-policy"></a>Dalam ikhtisar kebijakan, pilih **Edit versi aktif**.

1. Tinjau kebijakan untuk izin yang diperlukan, dan tambahkan izin yang diperlukan yang hilang.<a name="core-device-iot-policy-client-device-permissions"></a>
   + <a name="core-device-iot-policy-client-device-permissions-putcertificateauthorities"></a>`greengrass:PutCertificateAuthorities`
   + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceidentity"></a>`greengrass:VerifyClientDeviceIdentity`
   + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceiotcertificateassociation"></a>`greengrass:VerifyClientDeviceIoTCertificateAssociation`
   + <a name="core-device-iot-policy-client-device-permissions-getconnectivityinfo"></a>`greengrass:GetConnectivityInfo`
   + <a name="core-device-iot-policy-client-device-permissions-updateconnectivityinfo"></a>`greengrass:UpdateConnectivityInfo`— (Opsional) Izin ini diperlukan untuk menggunakan [komponen detektor IP](ip-detector-component.md), yang melaporkan informasi konektivitas jaringan perangkat inti ke layanan AWS IoT Greengrass cloud.
   + <a name="core-device-iot-policy-client-device-permissions-shadows"></a>`iot:GetThingShadow`,`iot:UpdateThingShadow`, dan `iot:DeleteThingShadow` — (Opsional) Izin ini diperlukan untuk menggunakan [komponen shadow manager](shadow-manager-component.md) untuk menyinkronkan bayangan perangkat klien dengan AWS IoT Core. [Fitur ini membutuhkan [Greengrass](greengrass-nucleus-component.md) nucleus v2.6.0 atau yang lebih baru, shadow manager v2.2.0 atau yang lebih baru, dan MQTT bridge v2.2.0 atau yang lebih baru.](mqtt-bridge-component.md)

1. (Opsional) Untuk mengizinkan perangkat inti menyinkronkan bayangan AWS IoT Core, tambahkan pernyataan berikut ke kebijakan. Jika Anda berencana untuk berinteraksi dengan bayangan perangkat klien, tetapi tidak menyinkronkannya AWS IoT Core, lewati langkah ini. Ganti *region* dan *account-id* dengan Wilayah yang Anda gunakan dan Akun AWS nomor Anda.
   + Contoh pernyataan ini memungkinkan akses ke bayangan perangkat semua objek. Untuk mengikuti praktik keamanan terbaik, Anda dapat membatasi akses ke hanya perangkat inti dan perangkat klien yang tersambung ke perangkat inti. Untuk informasi selengkapnya, lihat [AWS IoT Kebijakan minimal untuk mendukung perangkat klien](device-auth.md#client-device-support-minimal-iot-policy).

   ```
   {
     "Effect": "Allow",
     "Action": [
       "iot:GetThingShadow",
       "iot:UpdateThingShadow",
       "iot:DeleteThingShadow"
     ],
     "Resource": [
       "arn:aws:iot:region:account-id:thing/*"
     ]
   }
   ```

   Setelah Anda menambahkan pernyataan ini, kumpulan dokumen kebijakan mungkin terlihat serupa dengan contoh berikut.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "iot:Connect",
           "iot:Publish",
           "iot:Subscribe",
           "iot:Receive",
           "greengrass:*"
         ],
         "Resource": "*"
       },
       {
         "Effect": "Allow",
         "Action": [
           "iot:GetThingShadow",
           "iot:UpdateThingShadow",
           "iot:DeleteThingShadow"
         ],
         "Resource": [
           "arn:aws:iot:us-east-1:123456789012:thing/*"
         ]
       }
     ]
   }
   ```

------

1. <a name="update-iot-policy-console-set-as-active-version"></a>Untuk menetapkan versi kebijakan baru sebagai versi aktif, di bawah **Status versi Kebijakan**, pilih **Setel versi yang diedit sebagai versi aktif untuk kebijakan ini**.

1. <a name="update-iot-policy-console-save-policy"></a>Pilih **Simpan sebagai versi baru**.

#### Konfigurasikan kebijakan AWS IoT hal (AWS CLI)
<a name="configure-iot-policy-requirement-cli"></a>

1. <a name="update-iot-policy-cli-list-thing-principals"></a>Buat daftar prinsipal untuk hal perangkat inti. AWS IoT Prinsipal hal dapat berupa sertifikat perangkat X.509 atau identifikasi lainnya. Jalankan perintah berikut, dan ganti *MyGreengrassCore* dengan nama perangkat inti.

   ```
   aws iot list-thing-principals --thing-name MyGreengrassCore
   ```

   Operasi mengembalikan respons yang mencantumkan prinsip hal perangkat inti.

   ```
   {
       "principals": [
           "arn:aws:iot:us-west-2:123456789012:cert/certificateId"
       ]
   }
   ```

1. <a name="update-iot-policy-cli-identify-active-certificate"></a>Identifikasi sertifikat aktif perangkat inti. Jalankan perintah berikut, dan ganti *certificateId* dengan ID setiap sertifikat dari langkah sebelumnya hingga Anda menemukan sertifikat aktif. ID sertifikat adalah string heksadesimal di akhir sertifikat ARN. `--query`Argumen menentukan untuk output hanya status sertifikat.

   ```
   aws iot describe-certificate --certificate-id certificateId --query 'certificateDescription.status'
   ```

   Operasi mengembalikan status sertifikat sebagai string. Misalnya, jika sertifikat aktif, output `"ACTIVE"` operasi ini.

1. <a name="update-iot-policy-cli-list-certificate-policies"></a>Buat daftar AWS IoT kebijakan yang dilampirkan pada sertifikat. Jalankan perintah berikut, dan ganti sertifikat ARN dengan ARN sertifikat.

   ```
   aws iot list-principal-policies --principal arn:aws:iot:us-west-2:123456789012:cert/certificateId
   ```

   Operasi mengembalikan respons yang mencantumkan AWS IoT kebijakan yang dilampirkan pada sertifikat.

   ```
   {
       "policies": [
           {
               "policyName": "GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias",
               "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias"
           },
           {
               "policyName": "GreengrassV2IoTThingPolicy",
               "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy"
           }
       ]
   }
   ```

1. <a name="update-iot-policy-cli-choose-policy"></a>Pilih kebijakan yang akan dilihat dan diperbarui.
**catatan**  <a name="quick-installation-iot-policies-note"></a>
Jika Anda menggunakan [penginstal perangkat lunak AWS IoT Greengrass inti untuk menyediakan sumber daya](quick-installation.md), Anda memiliki dua AWS IoT kebijakan. Kami menyarankan Anda memilih kebijakan yang diberi nama **GreengrassV2IoTThingPolicy**, jika ada. Perangkat inti yang Anda buat dengan penginstal cepat menggunakan nama kebijakan ini secara default. Jika Anda menambahkan izin untuk kebijakan ini, Anda juga memberikan izin ini ke perangkat inti lain yang menggunakan kebijakan ini.

1. <a name="update-iot-policy-cli-get-policy-document"></a>Dapatkan dokumen kebijakan. Jalankan perintah berikut, dan ganti *GreengrassV2IoTThingPolicy* dengan nama kebijakan.

   ```
   aws iot get-policy --policy-name GreengrassV2IoTThingPolicy
   ```

   Operasi mengembalikan respons yang berisi dokumen kebijakan dan informasi lain tentang kebijakan tersebut. Dokumen kebijakan adalah objek JSON yang diserialisasikan sebagai string. 

   ```
   {
       "policyName": "GreengrassV2IoTThingPolicy",
       "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy",
       "policyDocument": "{\
     \\"Version\\": \\"2012-10-17		 	 	 \\",\
     \\"Statement\\": [\
       {\
         \\"Effect\\": \\"Allow\\",\
         \\"Action\\": [\
                   \\"iot:Connect\\",\
                   \\"iot:Publish\\",\
                   \\"iot:Subscribe\\",\
                   \\"iot:Receive\\",\
                   \\"greengrass:*\\"\
   ],\
         \\"Resource\\": \\"*\\"\
       }\
     ]\
   }",
       "defaultVersionId": "1",
       "creationDate": "2021-02-05T16:03:14.098000-08:00",
       "lastModifiedDate": "2021-02-05T16:03:14.098000-08:00",
       "generationId": "f19144b798534f52c619d44f771a354f1b957dfa2b850625d9f1d0fde530e75f"
   }
   ```

1. <a name="update-iot-policy-cli-create-policy-document-file"></a>Gunakan konverter online atau alat lain untuk mengonversi string dokumen kebijakan menjadi objek JSON, lalu simpan ke file bernama`iot-policy.json`.

   Misalnya, jika Anda menginstal alat [jq](https://stedolan.github.io/jq/), Anda dapat menjalankan perintah berikut untuk mendapatkan dokumen kebijakan, mengubahnya menjadi objek JSON, dan menyimpan dokumen kebijakan sebagai objek JSON.

   ```
   aws iot get-policy --policy-name GreengrassV2IoTThingPolicy --query 'policyDocument' | jq fromjson >> iot-policy.json
   ```

1. Tinjau kebijakan untuk izin yang diperlukan, dan tambahkan izin yang diperlukan yang hilang.

   <a name="nano-command-intro-existing-file"></a>Misalnya, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNU nano untuk membuka file.

   ```
   nano iot-policy.json
   ```<a name="core-device-iot-policy-client-device-permissions"></a>
   + <a name="core-device-iot-policy-client-device-permissions-putcertificateauthorities"></a>`greengrass:PutCertificateAuthorities`
   + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceidentity"></a>`greengrass:VerifyClientDeviceIdentity`
   + <a name="core-device-iot-policy-client-device-permissions-verifyclientdeviceiotcertificateassociation"></a>`greengrass:VerifyClientDeviceIoTCertificateAssociation`
   + <a name="core-device-iot-policy-client-device-permissions-getconnectivityinfo"></a>`greengrass:GetConnectivityInfo`
   + <a name="core-device-iot-policy-client-device-permissions-updateconnectivityinfo"></a>`greengrass:UpdateConnectivityInfo`— (Opsional) Izin ini diperlukan untuk menggunakan [komponen detektor IP](ip-detector-component.md), yang melaporkan informasi konektivitas jaringan perangkat inti ke layanan AWS IoT Greengrass cloud.
   + <a name="core-device-iot-policy-client-device-permissions-shadows"></a>`iot:GetThingShadow`,`iot:UpdateThingShadow`, dan `iot:DeleteThingShadow` — (Opsional) Izin ini diperlukan untuk menggunakan [komponen shadow manager](shadow-manager-component.md) untuk menyinkronkan bayangan perangkat klien dengan AWS IoT Core. [Fitur ini membutuhkan [Greengrass](greengrass-nucleus-component.md) nucleus v2.6.0 atau yang lebih baru, shadow manager v2.2.0 atau yang lebih baru, dan MQTT bridge v2.2.0 atau yang lebih baru.](mqtt-bridge-component.md)

1. <a name="update-iot-policy-cli-create-policy-version"></a>Simpan perubahan sebagai versi baru kebijakan. Jalankan perintah berikut, dan ganti *GreengrassV2IoTThingPolicy* dengan nama kebijakan.

   ```
   aws iot create-policy-version --policy-name GreengrassV2IoTThingPolicy --policy-document file://iot-policy.json --set-as-default
   ```

   Operasi mengembalikan respon mirip dengan contoh berikut jika berhasil.

   ```
   {
       "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy",
       "policyDocument": "{\
     \\"Version\\": \\"2012-10-17		 	 	 \\",\
     \\"Statement\\": [\
       {\
         \\"Effect\\": \\"Allow\\",\
         \\"Action\\": [\
   \\t\\t\\"iot:Connect\\",\
   \\t\\t\\"iot:Publish\\",\
   \\t\\t\\"iot:Subscribe\\",\
   \\t\\t\\"iot:Receive\\",\
   \\t\\t\\"greengrass:*\\"\
         ],\
         \\"Resource\\": \\"*\\"\
       }\
     ]\
   }",
       "policyVersionId": "2",
       "isDefaultVersion": true
   }
   ```

## Komponen Greengrass untuk dukungan perangkat klien
<a name="cloud-discovery-components"></a>

**penting**  <a name="client-device-support-nucleus-requirement"></a>
Perangkat inti harus menjalankan [inti Greengrass](greengrass-nucleus-component.md) v2.2.0 atau yang lebih baru untuk mendukung perangkat klien.

Untuk memungkinkan perangkat klien untuk terhubung dan berkomunikasi dengan perangkat inti, Anda men-deploy komponen Greengrass berikut ke perangkat inti:
+ <a name="client-device-component-overview-client-device-auth"></a>[Auth perangkat klien](client-device-auth-component.md) (`aws.greengrass.clientdevices.Auth`)

  Deploy komponen auth perangkat klien untuk mengautentikasi perangkat klien dan mengotorisasi tindakan perangkat klien. Komponen ini memungkinkan AWS IoT barang-barang Anda terhubung ke perangkat inti.

  Komponen ini memerlukan beberapa konfigurasi untuk menggunakannya. Anda harus menentukan grup perangkat klien dan operasi yang setiap grup diotorisasi untuk melakukan, seperti untuk menghubungkan dan berkomunikasi melalui MQTT. Untuk informasi lebih lanjut, lihat [konfigurasi komponen auth perangkat klien](client-device-auth-component.md#client-device-auth-component-configuration).
+ <a name="client-device-component-overview-mqtt-broker-moquette"></a>[MQTT 3.1.1 broker (Moquette)](mqtt-broker-moquette-component.md) (`aws.greengrass.clientdevices.mqtt.Moquette`)

  Menyebarkan komponen broker Moquette MQTT untuk menjalankan broker MQTT ringan. Broker Moquette MQTT patuh pada MQTT 3.1.1 dan mencakup dukungan lokal untuk QoS 0, QoS 1, QoS 2, pesan yang dipertahankan, pesan kehendak terakhir, dan langganan terus-menerus.

  Anda tidak diharuskan mengonfigurasi komponen ini untuk menggunakannya. Namun, Anda dapat mengonfigurasi port di mana komponen ini mengoperasikan broker MQTT. Secara default, ia menggunakan port 8883.
+ <a name="client-device-component-overview-mqtt-broker-emqx"></a>[Pialang MQTT 5 (EMQX)](mqtt-broker-emqx-component.md) (`aws.greengrass.clientdevices.mqtt.EMQX`)
**catatan**  
Untuk menggunakan broker EMQX MQTT 5, Anda harus menggunakan [Greengrass nucleus](greengrass-nucleus-component.md) v2.6.0 atau yang lebih baru dan auth perangkat klien v2.2.0 atau yang lebih baru.

  Menyebarkan komponen broker EMQX MQTT untuk menggunakan fitur MQTT 5.0 dalam komunikasi antara perangkat klien dan perangkat inti. Broker EMQX MQTT sesuai dengan MQTT 5.0 dan mencakup dukungan untuk interval kedaluwarsa sesi dan pesan, properti pengguna, langganan bersama, alias topik, dan banyak lagi.

  Anda tidak diharuskan mengonfigurasi komponen ini untuk menggunakannya. Namun, Anda dapat mengonfigurasi port di mana komponen ini mengoperasikan broker MQTT. Secara default, ia menggunakan port 8883.
+ <a name="client-device-component-overview-mqtt-bridge"></a>[Jembatan MQTT](mqtt-bridge-component.md) (`aws.greengrass.clientdevices.mqtt.Bridge`)

  (Opsional) Menyebarkan komponen jembatan MQTT untuk menyampaikan pesan antara perangkat klien (MQTT lokal), penerbitan/berlangganan lokal, dan MQTT. AWS IoT Core Konfigurasikan komponen ini untuk menyinkronkan perangkat klien dengan AWS IoT Core dan berinteraksi dengan perangkat klien dari komponen Greengrass.

  Komponen ini memerlukan konfigurasi untuk digunakan. Anda harus menentukan pemetaan topik di mana komponen ini merelai pesan. Untuk informasi lebih lanjut, lihat [konfigurasi komponen jembatan MQTT](mqtt-bridge-component.md#mqtt-bridge-component-configuration).
+ <a name="client-device-component-overview-ip-detector"></a>[Detektor IP](ip-detector-component.md) (`aws.greengrass.clientdevices.IPDetector`)

  (Opsional) Menyebarkan komponen detektor IP untuk secara otomatis melaporkan titik akhir broker MQTT perangkat inti ke layanan cloud. AWS IoT Greengrass Anda tidak dapat menggunakan komponen ini jika Anda memiliki pengaturan jaringan yang kompleks, seperti di mana router meneruskan port broker MQTT ke perangkat inti.

  Anda tidak diharuskan mengonfigurasi komponen ini untuk menggunakannya.
+ <a name="client-device-component-overview-shadow-manager"></a>[Pengelola bayangan](shadow-manager-component.md) (`aws.greengrass.ShadowManager`)
**catatan**  
[Untuk mengelola bayangan perangkat klien, Anda harus menggunakan [Greengrass](greengrass-nucleus-component.md) nucleus v2.6.0 atau yang lebih baru, shadow manager v2.2.0 atau yang lebih baru, dan MQTT bridge v2.2.0 atau yang lebih baru.](mqtt-bridge-component.md)

  (Opsional) Menyebarkan komponen shadow manager untuk mengelola bayangan perangkat klien pada perangkat inti. Komponen Greengrass bisa mendapatkan, memperbarui, dan menghapus bayangan perangkat klien untuk berinteraksi dengan perangkat klien. Anda juga dapat mengonfigurasi komponen shadow manager untuk menyinkronkan bayangan perangkat klien dengan layanan AWS IoT Core cloud.

  Untuk menggunakan komponen ini dengan bayangan perangkat klien, Anda harus mengonfigurasi komponen jembatan MQTT untuk menyampaikan pesan antara perangkat klien dan pengelola bayangan, yang menggunakan penerbitan/langganan lokal. Jika tidak, komponen ini tidak memerlukan konfigurasi untuk digunakan, tetapi memerlukan konfigurasi untuk menyinkronkan bayangan perangkat.

**catatan**  <a name="note-deploy-one-mqtt-broker"></a>
Kami menyarankan Anda menggunakan hanya satu komponen broker MQTT. [Jembatan MQTT](mqtt-bridge-component.md) dan komponen [detektor IP](ip-detector-component.md) bekerja dengan hanya satu komponen broker MQTT pada satu waktu. Jika Anda menggunakan beberapa komponen broker MQTT, Anda harus mengonfigurasinya untuk menggunakan port yang berbeda.

## Konfigurasikan penemuan cloud (konsol)
<a name="configure-cloud-discovery-console"></a>

Anda dapat menggunakan AWS IoT Greengrass konsol untuk mengaitkan perangkat klien, mengelola titik akhir perangkat inti, dan menerapkan komponen untuk mengaktifkan dukungan perangkat klien. Untuk informasi selengkapnya, lihat [Langkah 2: Aktifkan dukungan perangkat klien](client-devices-tutorial.md#enable-client-device-support).

## Konfigurasikan penemuan cloud (AWS CLI)
<a name="configure-cloud-discovery-cli"></a>

Anda dapat menggunakan AWS Command Line Interface (AWS CLI) untuk mengaitkan perangkat klien, mengelola titik akhir perangkat inti, dan menerapkan komponen untuk mengaktifkan dukungan perangkat klien. Untuk informasi selengkapnya, lihat informasi berikut:
+ [Kelola asosiasi perangkat klien (AWS CLI)](associate-client-devices.md#manage-client-device-associations-cli)
+ [Kelola titik akhir perangkat inti](manage-core-device-endpoints.md)
+ [Komponen perangkat klien yang disediakan oleh AWS](client-device-components.md)
+ [Buat deployment](create-deployments.md)

# Mengaitkan perangkat klien
<a name="associate-client-devices"></a>

Untuk menggunakan penemuan cloud, kaitkan perangkat klien ke perangkat inti agar dapat menemukan perangkat inti. Kemudian, perangkat-perangkat itu dapat menggunakan [API Penemuan Greengrass](greengrass-discover-api.md) untuk mengambil informasi konektivitas dan sertifikat untuk perangkat inti terkait mereka.

Demikian juga, pisahkan perangkat klien dari perangkat inti untuk menghentikannya dari menemukan perangkat inti.

**Topics**
+ [Kelola asosiasi perangkat klien (konsol)](#manage-client-device-associations-console)
+ [Kelola asosiasi perangkat klien (AWS CLI)](#manage-client-device-associations-cli)
+ [Kelola asosiasi perangkat klien (API)](#manage-client-device-associations-api)

## Kelola asosiasi perangkat klien (konsol)
<a name="manage-client-device-associations-console"></a>

Anda dapat menggunakan AWS IoT Greengrass konsol untuk melihat, menambah, dan menghapus asosiasi perangkat klien.

**Untuk melihat asosiasi perangkat klien untuk perangkat inti (konsol)**

1. <a name="navigate-greengrass-console"></a>Navigasikan ke [konsol AWS IoT Greengrass](https://console.aws.amazon.com/greengrass) tersebut.

1. Pilih **Perangkat inti**.

1. Pilih perangkat inti untuk dikelola.

1. Pada halaman detail perangkat inti, pilih tab **Perangkat klien**.

1. Di bagian **Perangkat klien terkait**, Anda dapat melihat perangkat klien (AWS IoT benda) mana yang terkait dengan perangkat inti.

**Untuk mengaitkan perangkat klien dengan perangkat inti (konsol)**

1. <a name="navigate-greengrass-console"></a>Navigasikan ke [konsol AWS IoT Greengrass](https://console.aws.amazon.com/greengrass) tersebut.

1. Pilih **Perangkat inti**.

1. Pilih perangkat inti untuk dikelola.

1. Pada halaman detail perangkat inti, pilih tab **Perangkat klien**.

1. Di bagian **Perangkat klien terkait**, pilih **Kaitkan perangkat klien**.

1. Di modal **Kaitkan perangkat klien dengan perangkat inti**, lakukan hal berikut untuk setiap perangkat klien yang akan dikaitkan:

   1. Masukkan nama AWS IoT benda yang akan diasosiasikan sebagai perangkat klien.

   1. Pilih **Tambahkan**.

1. Pilih **Kaitkan**.

   Perangkat klien yang telah Anda kaitkan sekarang dapat menggunakan Greengrass penemuan API untuk menemukan perangkat inti ini.

**Untuk mengaitkan perangkat klien dengan perangkat inti (konsol)**

1. <a name="navigate-greengrass-console"></a>Navigasikan ke [konsol AWS IoT Greengrass](https://console.aws.amazon.com/greengrass) tersebut.

1. Pilih **Perangkat inti**.

1. Pilih perangkat inti untuk dikelola.

1. Pada halaman detail perangkat inti, pilih tab **Perangkat klien**.

1. Di bagian **Perangkat klien terkait**, pilih setiap perangkat klien yang akan dipisahkan.

1. Pilih **Pisahkan**.

1. Dalam modal konfirmasi, pilih **Pisahkan**.

   Perangkat klien yang telah Anda pisahkan sekarang dapat menggunakan Greengrass penemuan API untuk menemukan perangkat inti ini.

## Kelola asosiasi perangkat klien (AWS CLI)
<a name="manage-client-device-associations-cli"></a>

Anda dapat menggunakan AWS Command Line Interface (AWS CLI) untuk mengelola asosiasi perangkat klien untuk perangkat inti.

**Untuk melihat asosiasi perangkat klien untuk perangkat inti (AWS CLI)**
+ Gunakan perintah berikut: [list-client-devices-associated- with-core-device](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/list-client-devices-associated-with-core-device.html).

**Untuk mengaitkan perangkat klien dengan perangkat inti (AWS CLI)**
+ Gunakan perintah berikut: [batch-associate-client-device- with-core-device](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/batch-associate-client-device-with-core-device.html).

**Untuk memisahkan perangkat klien dari perangkat inti (AWS CLI)**
+ Gunakan perintah berikut: [batch-disassociate-client-device- from-core-device](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/batch-disassociate-client-device-from-core-device.html).

## Kelola asosiasi perangkat klien (API)
<a name="manage-client-device-associations-api"></a>

Anda dapat menggunakan AWS API untuk mengelola asosiasi perangkat klien untuk perangkat inti.

**Untuk melihat asosiasi perangkat klien untuk perangkat inti (AWS API)**
+ Gunakan operasi berikut: [ListClientDevicesAssociatedWithCoreDevice](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_ListClientDevicesAssociatedWithCoreDevice.html).

**Untuk mengaitkan perangkat klien dengan perangkat inti (AWS API)**
+ Gunakan operasi berikut: [BatchAssociateClientDeviceWithCoreDevice](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchAssociateClientDeviceWithCoreDevice.html).

**Untuk memisahkan perangkat klien dari perangkat inti (AWS API)**
+ Gunakan operasi berikut: [BatchDisassociateClientDeviceFromCoreDevice](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchDisassociateClientDeviceFromCoreDevice.html).

# Mengautentikasi klien saat offline
<a name="offline-authentication"></a>

Dengan *otentikasi offline*, Anda dapat mengonfigurasi perangkat AWS IoT Greengrass Core sehingga perangkat klien dapat terhubung ke perangkat inti, bahkan ketika perangkat inti tidak terhubung ke cloud. Saat Anda menggunakan otentikasi offline, perangkat Greengrass Anda dapat terus bekerja di lingkungan offline sebagian.

Untuk menggunakan otentikasi offline untuk perangkat klien dengan koneksi ke cloud, Anda memerlukan yang berikut ini:
+ Perangkat AWS IoT Greengrass inti dengan [Auth perangkat klien](client-device-auth-component.md) komponen yang digunakan. Anda harus menggunakan versi 2.3.0 atau lebih tinggi untuk otentikasi offline.
+ Koneksi cloud untuk perangkat inti selama koneksi awal perangkat klien.

## Menyimpan kredensi klien
<a name="offline-auth-store-credentials"></a>

Ketika perangkat klien terhubung ke perangkat inti untuk pertama kalinya, perangkat inti memanggil AWS IoT Greengrass layanan. Saat dipanggil, Greengrass memvalidasi pendaftaran perangkat klien sebagai sesuatu. AWS IoT Ini juga memvalidasi bahwa perangkat memiliki sertifikat yang valid. Perangkat inti kemudian menyimpan informasi ini secara lokal.

Lain kali perangkat terhubung, perangkat inti Greengrass mencoba memvalidasi perangkat klien dengan layanan. AWS IoT Greengrass Jika tidak dapat terhubung AWS IoT Greengrass, perangkat inti menggunakan informasi perangkat yang disimpan secara lokal untuk memvalidasi perangkat klien.

Anda dapat mengonfigurasi lamanya waktu perangkat inti Greengrass menyimpan kredensional. [Anda dapat mengatur batas waktu dari satu menit menjadi 2.147,483.647 menit dengan menyetel opsi `clientDeviceTrustDurationMinutes` konfigurasi dalam konfigurasi komponen autentikasi perangkat klien.](https://docs.aws.amazon.com//greengrass/v2/developerguide/client-device-auth-component.html#client-device-auth-component-configuration) Defaultnya adalah satu menit, yang secara efektif mematikan otentikasi offline. Saat Anda menetapkan batas waktu ini, kami sarankan Anda mempertimbangkan kebutuhan keamanan Anda. Anda juga harus mempertimbangkan berapa lama Anda mengharapkan perangkat inti berjalan saat terputus dari cloud.

Perangkat inti memperbarui penyimpanan kredensialnya sebanyak tiga kali:

1. Saat perangkat terhubung ke perangkat inti untuk pertama kalinya.

1. Jika perangkat inti terhubung ke cloud, ketika perangkat klien terhubung kembali ke perangkat inti.

1. Jika perangkat inti terhubung ke cloud, sekali sehari untuk menyegarkan seluruh toko kredensi.

Saat perangkat inti Greengrass menyegarkan toko kredensialnya, ia menggunakan operasi. [ ListClientDevicesAssociatedWithCoreDevice](https://docs.aws.amazon.com//greengrass/v2/APIReference/API_ListClientDevicesAssociatedWithCoreDevice.html) Greengrass hanya menyegarkan perangkat yang dikembalikan oleh operasi ini. Untuk mengaitkan perangkat klien dengan perangkat inti, lihat[Mengaitkan perangkat klien](associate-client-devices.md).

Untuk menggunakan `ListClientDevicesAssociatedWithCoreDevice` operasi, Anda harus menambahkan izin untuk operasi ke peran AWS Identity and Access Management (IAM) yang terkait dengan Akun AWS yang berjalan AWS IoT Greengrass. Lihat informasi yang lebih lengkap di [Otorisasi perangkat inti untuk berinteraksi dengan layanan AWS](device-service-role.md).

# Kelola titik akhir perangkat inti
<a name="manage-core-device-endpoints"></a>

Ketika Anda menggunakan penemuan cloud, Anda menyimpan titik akhir broker MQTT untuk perangkat inti di layanan cloud AWS IoT Greengrass . Perangkat klien terhubung AWS IoT Greengrass untuk mengambil titik akhir ini dan informasi lain untuk perangkat inti terkait mereka.

Untuk setiap perangkat inti, Anda dapat secara otomatis atau manual mengelola titik akhir.
+ **Mengelola titik akhir secara otomatis dengan detektor IP**

  Anda dapat menerapkan [komponen detektor IP](ip-detector-component.md) untuk secara otomatis mengelola titik akhir perangkat inti untuk Anda jika Anda memiliki pengaturan jaringan yang tidak kompleks, seperti di mana perangkat klien berada di jaringan yang sama dengan perangkat inti. Anda tidak dapat menggunakan komponen detektor IP jika perangkat inti berada di belakang router yang meneruskan port broker MQTT ke perangkat inti, misalnya.

  Komponen detektor IP juga berguna jika Anda men-deploy ke grup objek, karena ia mengelola titik akhir untuk semua perangkat inti dalam grup objek. Untuk informasi selengkapnya, lihat [Gunakan detektor IP untuk mengelola titik akhir secara otomatis](#use-ip-detector).
+ **Kelola titik akhir secara manual**

  Jika Anda tidak dapat menggunakan komponen detektor IP, Anda harus mengelola titik akhir perangkat inti secara manual. Anda dapat memperbarui titik akhir ini dengan konsol atau API. Untuk informasi selengkapnya, lihat [Kelola titik akhir secara manual](#manually-manage-endpoints).

**Topics**
+ [Gunakan detektor IP untuk mengelola titik akhir secara otomatis](#use-ip-detector)
+ [Kelola titik akhir secara manual](#manually-manage-endpoints)

## Gunakan detektor IP untuk mengelola titik akhir secara otomatis
<a name="use-ip-detector"></a>

Jika Anda memiliki pengaturan jaringan sederhana, seperti perangkat klien pada jaringan yang sama sebagai perangkat inti, Anda dapatmen-deploy [Komponen pendeteksi IP](ip-detector-component.md) untuk melakukan hal berikut:
+ Memantau informasi konektivitas jaringan lokal perangkat inti Greengrass. Informasi ini mencakup titik akhir jaringan perangkat inti dan port tempat broker MQTT beroperasi.
+ Laporkan informasi konektivitas perangkat inti ke layanan AWS IoT Greengrass cloud.

Komponen detektor IP menimpa titik akhir yang Anda tetapkan secara manual.

**penting**  
 AWS IoT Kebijakan perangkat inti harus mengizinkan `greengrass:UpdateConnectivityInfo` izin untuk menggunakan komponen detektor IP. Untuk informasi selengkapnya, lihat [AWS IoT kebijakan untuk operasi pesawat data](device-auth.md#iot-policies) dan [Konfigurasikan kebijakan AWS IoT hal](connect-client-devices.md#configure-iot-policy-requirement).

Anda dapat melakukan salah satu dari berikut ini untuk men-deploy komponen detektor IP:
+ Gunakan halaman **Konfigurasi penemuan** di konsol. Untuk informasi selengkapnya, lihat [Konfigurasikan penemuan cloud (konsol)](connect-client-devices.md#configure-cloud-discovery-console).
+ Membuat dan merevisi deployment untuk menyertakan detektor IP. Anda dapat menggunakan konsol, AWS CLI, atau AWS API untuk mengelola penerapan. Untuk informasi selengkapnya, lihat [Buat deployment](create-deployments.md).

### Menyebarkan komponen detektor IP (konsol)
<a name="deploy-ip-detector-console"></a>

1. Pada menu navigasi [konsol AWS IoT Greengrass](https://console.aws.amazon.com/greengrass) tersebut, pilih **Komponen**.

1. Pada halaman **Components**, pilih tab **Public components**, lalu pilih **aws.greengrass.clientdevices.IPDetector**.

1. Pada halaman **aws.greengrass.clientdevices.IPDetector** pilih **Deploy**.

1. <a name="deploy-component-choose-deployment-step"></a>**Dari **Tambahkan ke penerapan**, pilih penerapan yang ada untuk direvisi, atau pilih untuk membuat penerapan baru, lalu pilih Berikutnya.**

1. <a name="deploy-component-choose-target-step"></a>Jika Anda memilih untuk membuat penerapan baru, pilih perangkat inti target atau grup hal untuk penerapan. Pada halaman **Tentukan target**, di bawah **target Deployment**, pilih perangkat inti atau grup benda, lalu pilih **Berikutnya**.

1. Pada halaman **Pilih komponen**, verifikasi bahwa **aws.greengrass.clientdevices.IPDetector**komponen dipilih, pilih **Berikutnya**.

1. Pada halaman **Configure components**, pilih **aws.greengrass.clientdevices.IPDetector**, lalu lakukan hal berikut:

   1. Pilih **Konfigurasi komponen**.

   1. Dalam aws.greengrass.clientdevices.IPDetector modal **Konfigurasi**, di bawah **pembaruan Konfigurasi**, di **Konfigurasi untuk digabungkan**, Anda dapat memasukkan pembaruan konfigurasi untuk mengonfigurasi komponen detektor IP. Anda dapat menentukan salah satu opsi konfigurasi berikut:
      + `defaultPort`— <a name="ip-detector-component-configuration-default-port-definition"></a>(Opsional) Port broker MQTT untuk melaporkan kapan komponen ini mendeteksi alamat IP. Anda harus menentukan parameter ini jika Anda mengonfigurasi broker MQTT untuk menggunakan port yang berbeda dari port default 8883. 
      + `includeIPv4LoopbackAddrs`— <a name="ip-detector-component-configuration-include-ipv4-loopback-addrs-definition"></a>(Opsional) Anda dapat mengaktifkan opsi ini untuk mendeteksi dan melaporkan alamat IPv4 loopback. Ini adalah alamat IP, seperti`localhost`, di mana perangkat dapat berkomunikasi dengan dirinya sendiri. Gunakan opsi ini di lingkungan pengujian tempat perangkat inti dan perangkat klien berjalan pada sistem yang sama. 
      + `includeIPv4LinkLocalAddrs`— <a name="ip-detector-component-configuration-include-ipv4-link-local-addrs-definition"></a>(Opsional) Anda dapat mengaktifkan opsi ini untuk mendeteksi dan melaporkan alamat IPv4 [link-lokal](https://en.wikipedia.org/wiki/Link-local_address). Gunakan opsi ini jika jaringan perangkat inti tidak memiliki Dynamic Host Configuration Protocol (DHCP) atau alamat IP yang ditetapkan secara statis. 
      + `includeIPv6LoopbackAddrs`— <a name="ip-detector-component-configuration-include-ipv6-loopback-addrs-definition"></a>(Opsional) Anda dapat mengaktifkan opsi ini untuk mendeteksi dan melaporkan alamat IPv6 loopback. Ini adalah alamat IP, seperti`localhost`, di mana perangkat dapat berkomunikasi dengan dirinya sendiri. Gunakan opsi ini di lingkungan uji di mana perangkat inti dan perangkat klien berjalan pada sistem yang sama. Anda harus mengatur `includeIPv4Addrs` ke `false` dan `includeIPv6Addrs` `true` untuk menggunakan opsi ini. Anda harus memiliki detektor IP v2.2.0 atau yang lebih baru untuk menggunakan opsi ini.
      + `includeIPv6LinkLocalAddrs`— <a name="ip-detector-component-configuration-include-ipv6-link-local-addrs-definition"></a>(Opsional) Anda dapat mengaktifkan opsi ini untuk mendeteksi dan melaporkan alamat IPv6 [link-lokal](https://en.wikipedia.org/wiki/Link-local_address). Gunakan opsi ini jika jaringan perangkat inti tidak memiliki Protokol Konfigurasi Host Dinamis (DHCP) atau alamat IP yang ditetapkan secara statis. Anda harus mengatur `includeIPv4Addrs` ke `false` dan `includeIPv6Addrs` `true` untuk menggunakan opsi ini. Anda harus memiliki detektor IP v2.2.0 atau yang lebih baru untuk menggunakan opsi ini.
      + `includeIPv4Addrs`— <a name="ip-detector-component-configuration-include-ipv4-addrs-definition"></a>(Opsional) Default diatur ke true. Anda dapat mengaktifkan opsi ini untuk mempublikasikan IPv4 alamat yang ditemukan di perangkat inti. Anda harus memiliki detektor IP v2.2.0 atau yang lebih baru untuk menggunakan opsi ini.
      + `includeIPv6Addrs`— <a name="ip-detector-component-configuration-include-ipv6-addrs-definition"></a>(Opsional) Anda dapat mengaktifkan opsi ini untuk mempublikasikan IPv6 alamat yang ditemukan pada perangkat inti. Setel `includeIPv4Addrs` `false` untuk menggunakan opsi ini. Anda harus memiliki detektor IP v2.2.0 atau yang lebih baru untuk menggunakan opsi ini.

      Pembaruan konfigurasi mungkin terlihat mirip dengan contoh berikut.

      ```
      {
        "defaultPort": "8883",
        "includeIPv4LoopbackAddrs": false,
        "includeIPv4LinkLocalAddrs": false
      }
      ```

   1. Pilih **Konfirmasi** untuk menutup modal, lalu pilih **Berikutnya**.

1. <a name="deploy-component-configure-advanced-settings-step"></a>Pada halaman **Konfigurasikan pengaturan lanjutan**, simpan pengaturan konfigurasi default tersebut, dan pilih **Selanjutnya**.

1. <a name="deploy-component-review-and-deploy-step"></a>Di halaman **Tinjau**, pilih **Deploy**.

   Penyebaran dapat memakan waktu hingga satu menit untuk diselesaikan.

### Menyebarkan komponen detektor IP ()AWS CLI
<a name="deploy-ip-detector-cli"></a>

Untuk menyebarkan komponen detektor IP, buat dokumen penerapan yang disertakan `aws.greengrass.clientdevices.IPDetector` dalam `components` objek, dan tentukan pembaruan konfigurasi untuk komponen tersebut. Ikuti petunjuk [Buat deployment](create-deployments.md) untuk membuat penerapan baru atau merevisi penerapan yang ada.

Anda dapat menentukan salah satu opsi berikut untuk mengonfigurasi komponen detektor IP saat Anda membuat dokumen penerapan:
+ `defaultPort`— <a name="ip-detector-component-configuration-default-port-definition"></a>(Opsional) Port broker MQTT untuk melaporkan kapan komponen ini mendeteksi alamat IP. Anda harus menentukan parameter ini jika Anda mengonfigurasi broker MQTT untuk menggunakan port yang berbeda dari port default 8883. 
+ `includeIPv4LoopbackAddrs`— <a name="ip-detector-component-configuration-include-ipv4-loopback-addrs-definition"></a>(Opsional) Anda dapat mengaktifkan opsi ini untuk mendeteksi dan melaporkan alamat IPv4 loopback. Ini adalah alamat IP, seperti`localhost`, di mana perangkat dapat berkomunikasi dengan dirinya sendiri. Gunakan opsi ini di lingkungan pengujian tempat perangkat inti dan perangkat klien berjalan pada sistem yang sama. 
+ `includeIPv4LinkLocalAddrs`— <a name="ip-detector-component-configuration-include-ipv4-link-local-addrs-definition"></a>(Opsional) Anda dapat mengaktifkan opsi ini untuk mendeteksi dan melaporkan alamat IPv4 [link-lokal](https://en.wikipedia.org/wiki/Link-local_address). Gunakan opsi ini jika jaringan perangkat inti tidak memiliki Dynamic Host Configuration Protocol (DHCP) atau alamat IP yang ditetapkan secara statis. 
+ `includeIPv6LoopbackAddrs`— <a name="ip-detector-component-configuration-include-ipv6-loopback-addrs-definition"></a>(Opsional) Anda dapat mengaktifkan opsi ini untuk mendeteksi dan melaporkan alamat IPv6 loopback. Ini adalah alamat IP, seperti`localhost`, di mana perangkat dapat berkomunikasi dengan dirinya sendiri. Gunakan opsi ini di lingkungan uji di mana perangkat inti dan perangkat klien berjalan pada sistem yang sama. Anda harus mengatur `includeIPv4Addrs` ke `false` dan `includeIPv6Addrs` `true` untuk menggunakan opsi ini. Anda harus memiliki detektor IP v2.2.0 atau yang lebih baru untuk menggunakan opsi ini.
+ `includeIPv6LinkLocalAddrs`— <a name="ip-detector-component-configuration-include-ipv6-link-local-addrs-definition"></a>(Opsional) Anda dapat mengaktifkan opsi ini untuk mendeteksi dan melaporkan alamat IPv6 [link-lokal](https://en.wikipedia.org/wiki/Link-local_address). Gunakan opsi ini jika jaringan perangkat inti tidak memiliki Protokol Konfigurasi Host Dinamis (DHCP) atau alamat IP yang ditetapkan secara statis. Anda harus mengatur `includeIPv4Addrs` ke `false` dan `includeIPv6Addrs` `true` untuk menggunakan opsi ini. Anda harus memiliki detektor IP v2.2.0 atau yang lebih baru untuk menggunakan opsi ini.
+ `includeIPv4Addrs`— <a name="ip-detector-component-configuration-include-ipv4-addrs-definition"></a>(Opsional) Default diatur ke true. Anda dapat mengaktifkan opsi ini untuk mempublikasikan IPv4 alamat yang ditemukan di perangkat inti. Anda harus memiliki detektor IP v2.2.0 atau yang lebih baru untuk menggunakan opsi ini.
+ `includeIPv6Addrs`— <a name="ip-detector-component-configuration-include-ipv6-addrs-definition"></a>(Opsional) Anda dapat mengaktifkan opsi ini untuk mempublikasikan IPv6 alamat yang ditemukan pada perangkat inti. Setel `includeIPv4Addrs` `false` untuk menggunakan opsi ini. Anda harus memiliki detektor IP v2.2.0 atau yang lebih baru untuk menggunakan opsi ini.

Contoh berikut dokumen penyebaran sebagian menentukan untuk melaporkan port 8883 sebagai port broker MQTT.

```
{
  ...,
  "components": {
    ...,
    "aws.greengrass.clientdevices.IPDetector": {
      "componentVersion": "2.1.1",
      "configurationUpdate": {
        "merge": "{\"defaultPort\":\"8883\",}"
      }
    }
  }
}
```

## Kelola titik akhir secara manual
<a name="manually-manage-endpoints"></a>

Anda dapat secara otomatis mengelola titik akhir broker MQTT untuk perangkat inti.

Setiap titik akhir broker MQTT memiliki informasi berikut:

**Titik akhir** () `HostAddress`  
Alamat IP atau alamat DNS di mana perangkat klien dapat terhubung ke broker MQTT pada perangkat inti.

**Port** (`PortNumber`)  
Port tempat broker MQTT beroperasi pada perangkat inti.  
Anda dapat mengonfigurasi port ini pada [Komponen broker MQTT Moquette](mqtt-broker-moquette-component.md), yang defaultnya menggunakan port 8883.

**Metadata (**) `Metadata`  
Metadata tambahan yang akan diberikan ke perangkat klien yang terhubung ke titik akhir ini.

**Topics**
+ [Mengelola titik akhir (konsol)](#manually-manage-endpoints-console)
+ [Kelola titik akhir (AWS CLI)](#manually-manage-endpoints-cli)
+ [Kelola titik akhir (API)](#manually-manage-endpoints-api)

### Mengelola titik akhir (konsol)
<a name="manually-manage-endpoints-console"></a>

Anda dapat menggunakan AWS IoT Greengrass konsol untuk melihat, memperbarui, dan menghapus titik akhir untuk perangkat inti.

**Untuk mengelola titik akhir untuk perangkat inti (konsol)**

1. <a name="navigate-greengrass-console"></a>Navigasikan ke [konsol AWS IoT Greengrass](https://console.aws.amazon.com/greengrass) tersebut.

1. Pilih **Perangkat inti**.

1. Pilih perangkat inti untuk dikelola.

1. Pada halaman detail perangkat inti, pilih tab **Perangkat klien**.

1. Di **Titik akhir broker MQTT**, Anda dapat melihat titik akhir broker MQTT perangkat inti. Pilih **Kelola titik akhir**.

1. Di modal **Kelola titik akhir**, tambahkan atau hapus titik akhir broker MQTT untuk perangkat inti.

1. Pilih **Perbarui**.

### Kelola titik akhir (AWS CLI)
<a name="manually-manage-endpoints-cli"></a>

Anda dapat menggunakan AWS Command Line Interface (AWS CLI) untuk mengelola titik akhir untuk perangkat inti.

**catatan**  
Karena dukungan perangkat klien di AWS IoT Greengrass V2 kompatibel dengan versi mundur AWS IoT Greengrass V1, Anda dapat menggunakan AWS IoT Greengrass V2 atau operasi AWS IoT Greengrass V1 API untuk mengelola titik akhir perangkat inti.

**Untuk mendapatkan titik akhir untuk perangkat inti (AWS CLI)**
+ Gunakan salah satu dari perintah berikut:
  + [greengrassv2: get-connectivity-info](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/get-connectivity-info.html)
  + [greengrass: get-connectivity-info](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-connectivity-info.html)

**Untuk memperbarui titik akhir untuk perangkat inti (AWS CLI)**
+ Gunakan salah satu dari perintah berikut:
  + [greengrassv2: update-connectivity-info](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/update-connectivity-info.html)
  + [greengrass: update-connectivity-info](https://docs.aws.amazon.com/cli/latest/reference/greengrass/update-connectivity-info.html)

### Kelola titik akhir (API)
<a name="manually-manage-endpoints-api"></a>

Anda dapat menggunakan AWS API untuk mengelola titik akhir untuk perangkat inti.

**catatan**  
Karena dukungan perangkat klien di AWS IoT Greengrass V2 kompatibel dengan versi mundur AWS IoT Greengrass V1, Anda dapat menggunakan AWS IoT Greengrass V2 atau operasi AWS IoT Greengrass V1 API untuk mengelola titik akhir perangkat inti.

**Untuk mendapatkan titik akhir untuk perangkat inti (AWS API)**
+ Gunakan salah satu dari operasi berikut:
  + [V2: GetConnectivityInfo](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_GetConnectivityInfo.html)
  + [V1: GetConnectivityInfo](https://docs.aws.amazon.com/greengrass/v1/apireference/getconnectivityinfo-get.html)

**Untuk memperbarui titik akhir untuk perangkat inti (AWS API)**
+ Gunakan salah satu dari operasi berikut:
  + [V2: UpdateConnectivityInfo](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_UpdateConnectivityInfo.html)
  + [V1: UpdateConnectivityInfo](https://docs.aws.amazon.com/greengrass/v1/apireference/updateconnectivityinfo-put.html)

# Pilih broker MQTT
<a name="choose-local-mqtt-broker"></a>

AWS IoT Greengrass menyediakan opsi bagi Anda untuk memilih broker MQTT lokal mana yang akan dijalankan di perangkat inti Anda. Perangkat klien terhubung ke broker MQTT yang berjalan pada perangkat inti, jadi pilihlah broker MQTT yang kompatibel dengan perangkat klien yang ingin Anda sambungkan.

**catatan**  <a name="note-deploy-one-mqtt-broker"></a>
Kami menyarankan Anda menerapkan hanya satu komponen broker MQTT. [Jembatan MQTT](mqtt-bridge-component.md) dan komponen [detektor IP](ip-detector-component.md) bekerja dengan hanya satu komponen broker MQTT pada satu waktu. Jika Anda menggunakan beberapa komponen broker MQTT, Anda harus mengonfigurasinya untuk menggunakan port yang berbeda.

Anda dapat memilih dari broker MQTT berikut:
+ **[MQTT 3.1.1 broker](mqtt-broker-moquette-component.md)** (Moquette) — `aws.greengrass.clientdevices.mqtt.Moquette`

  Pilih opsi ini untuk broker MQTT ringan yang sesuai dengan standar MQTT 3.1.1. Broker AWS IoT Core MQTT dan AWS IoT Device SDK juga sesuai dengan standar MQTT 3.1.1, sehingga Anda dapat menggunakan fitur ini untuk membuat aplikasi yang menggunakan MQTT 3.1.1 di seluruh perangkat Anda dan. AWS Cloud
+ **[Pialang MQTT 5 (EMQX)](mqtt-broker-emqx-component.md)** - `aws.greengrass.clientdevices.mqtt.EMQX`

  Pilih opsi ini untuk menggunakan fitur MQTT 5 dalam komunikasi antara perangkat inti dan perangkat klien. Komponen ini menggunakan lebih banyak sumber daya daripada broker Moquette MQTT 3.1.1, dan pada perangkat inti Linux, ia membutuhkan Docker.

  MQTT 5 kompatibel dengan MQTT 3.1.1, sehingga Anda dapat menghubungkan perangkat klien yang menggunakan MQTT 3.1.1 ke broker ini. Jika Anda menjalankan broker Moquette MQTT 3.1.1, Anda dapat menggantinya dengan broker EMQX MQTT 5, dan perangkat klien dapat terus terhubung dan beroperasi seperti biasa.

  <a name="note-local-mqtt-broker-mqtt-5-features"></a>
+ **Menerapkan broker khusus**

  Pilih opsi ini untuk membuat komponen broker lokal khusus untuk berkomunikasi dengan perangkat klien. Anda dapat membuat broker lokal khusus yang menggunakan protokol selain MQTT. AWS IoT Greengrass menyediakan SDK komponen yang dapat Anda gunakan untuk mengautentikasi dan mengotorisasi perangkat klien. Untuk informasi selengkapnya, silakan lihat [Gunakan AWS IoT Device SDK untuk berkomunikasi dengan inti Greengrass, komponen lain, dan AWS IoT CoreBerkomunikasi dengan inti Greengrass, komponen lain, dan AWS IoT Core](interprocess-communication.md) dan [Otentikasi dan otorisasi perangkat klien](ipc-client-device-auth.md).

# Menghubungkan perangkat klien ke perangkat AWS IoT Greengrass Core dengan broker MQTT
<a name="connecting-to-mqtt"></a>

Saat Anda menggunakan broker MQTT di perangkat AWS IoT Greengrass Core Anda, perangkat menggunakan *otoritas sertifikat perangkat inti (CA)* yang unik untuk perangkat untuk mengeluarkan sertifikat kepada broker untuk membuat koneksi TLS bersama dengan klien. 

AWS IoT Greengrass akan membuat otomatis perangkat inti CA, atau Anda dapat menyediakannya sendiri. Perangkat inti CA terdaftar AWS IoT Greengrass saat [Auth perangkat klien](client-device-auth-component.md) komponen terhubung. CA perangkat inti yang dibuat secara otomatis bersifat persisten, perangkat akan terus menggunakan CA yang sama selama komponen autentikasi perangkat klien dikonfigurasi.

Ketika broker MQTT dimulai, ia meminta sertifikat. Komponen autentikasi perangkat klien mengeluarkan sertifikat X.509 menggunakan perangkat inti CA. Sertifikat diputar ketika broker mulai, ketika sertifikat kedaluwarsa, atau ketika informasi konektivitas seperti alamat IP berubah. Untuk informasi selengkapnya, lihat [Rotasi sertifikat pada broker MQTT lokal](device-auth.md#mqtt-certificate-expiration).

Untuk menghubungkan klien ke broker MQTT, Anda memerlukan yang berikut:
+ Perangkat klien harus memiliki perangkat AWS IoT Greengrass Core CA. Anda bisa mendapatkan CA ini melalui penemuan cloud, atau dengan menyediakan CA secara manual. Untuk informasi selengkapnya, lihat [Menggunakan otoritas sertifikat Anda sendiri](#use-your-own-CA).
+ Nama domain yang sepenuhnya memenuhi syarat (FQDN) atau alamat IP perangkat inti harus ada dalam sertifikat broker yang dikeluarkan oleh perangkat inti CA. Anda memastikan ini menggunakan [Detektor IP](ip-detector-component.md) komponen atau mengonfigurasi alamat IP secara manual. Untuk informasi selengkapnya, lihat [Kelola titik akhir perangkat inti](manage-core-device-endpoints.md).
+ Komponen autentikasi perangkat klien harus memberikan izin perangkat klien untuk terhubung ke perangkat inti Greengrass. Untuk informasi selengkapnya, lihat [Auth perangkat klien](client-device-auth-component.md).

## Menggunakan otoritas sertifikat Anda sendiri
<a name="use-your-own-CA"></a>

Jika perangkat klien Anda tidak dapat mengakses cloud untuk menemukan perangkat inti Anda, Anda dapat memberikan *otoritas sertifikat perangkat inti (CA)*. Perangkat inti Greengrass Anda menggunakan perangkat inti CA untuk mengeluarkan sertifikat untuk broker MQTT Anda. Setelah Anda mengonfigurasi perangkat inti dan menyediakan perangkat klien Anda dengan CA-nya, perangkat klien Anda dapat terhubung ke titik akhir dan memverifikasi jabat tangan TLS menggunakan perangkat inti CA (CA yang disediakan sendiri atau dibuat otomatis).

Untuk mengonfigurasi [Auth perangkat klien](client-device-auth-component.md) komponen agar menggunakan CA perangkat inti Anda, setel parameter `certificateAuthority` konfigurasi saat Anda menerapkan komponen. Anda harus memberikan rincian berikut selama konfigurasi:
+ Lokasi sertifikat CA perangkat inti.
+ Kunci pribadi dari sertifikat CA perangkat inti.
+ (Opsional) Rantai sertifikat ke sertifikat root jika perangkat inti CA adalah CA perantara.

Jika Anda menyediakan perangkat inti CA, AWS IoT Greengrass daftarkan CA dengan cloud.

Anda dapat menyimpan sertifikat Anda dalam modul keamanan perangkat keras atau pada sistem file. Contoh berikut menunjukkan `certificateAuthority` konfigurasi untuk CA perantara yang disimpan menggunakan HSM/TPM. Perhatikan bahwa rantai sertifikat hanya dapat disimpan pada disk.

```
  "certificateAuthority": {
      "certificateUri": "pkcs11:object=CustomerIntermediateCA;type=cert",
      "privateKeyUri": "pkcs11:object=CustomerIntermediateCA;type=private"
      "certificateChainUri": "file:///home/ec2-user/creds/certificateChain.pem",
    }
```

Dalam contoh ini, parameter `certificateAuthority` konfigurasi mengonfigurasi komponen autentikasi perangkat klien untuk menggunakan CA perantara dari sistem file:

```
  "certificateAuthority": {
      "certificateUri": "file:///home/ec2-user/creds/intermediateCA.pem",
      "privateKeyUri": "file:///home/ec2-user/creds/intermediateCA.privateKey.pem",
      "certificateChainUri": "file:///home/ec2-user/creds/certificateChain.pem",
    }
```

Untuk menghubungkan perangkat ke perangkat AWS IoT Greengrass Core Anda, lakukan hal berikut:

1. Buat otoritas sertifikat perantara (CA) untuk perangkat inti Greengrass menggunakan CA root organisasi Anda. Kami menyarankan Anda menggunakan CA perantara sebagai praktik terbaik keamanan.

1. Berikan sertifikat CA perantara, kunci pribadi, dan rantai sertifikat ke CA root Anda ke perangkat inti Greengrass. Untuk informasi selengkapnya, lihat [Auth perangkat klien](client-device-auth-component.md). CA perantara menjadi perangkat inti CA untuk perangkat inti Greengrass, dan perangkat mendaftarkan CA dengan. AWS IoT Greengrass

1. Daftarkan perangkat klien sebagai AWS IoT sesuatu. Untuk informasi selengkapnya, lihat [Membuat objek benda](https://docs.aws.amazon.com/iot/latest/developerguide/create-iot-resources.html#create-aws-thing) di *Panduan AWS IoT Core Pengembang*. Tambahkan kunci pribadi, kunci publik, sertifikat perangkat, dan sertifikat CA root ke perangkat klien Anda. Cara Anda menambahkan informasi tergantung pada perangkat dan perangkat lunak Anda.

Setelah mengonfigurasi perangkat, Anda dapat menggunakan sertifikat dan gantungan kunci publik untuk terhubung ke perangkat inti Greengrass. Perangkat lunak Anda bertanggung jawab untuk menemukan titik akhir perangkat inti. Anda dapat mengatur titik akhir secara manual untuk perangkat inti. Lihat informasi yang lebih lengkap di [Kelola titik akhir secara manual](manage-core-device-endpoints.md#manually-manage-endpoints).

# Uji komunikasi perangkat klien
<a name="test-client-device-communications"></a>

Perangkat klien dapat menggunakan perangkat AWS IoT Device SDK untuk menemukan, menghubungkan, dan berkomunikasi dengan perangkat inti. Anda dapat menggunakan klien penemuan Greengrass AWS IoT Device SDK untuk menggunakan [Greengrass discovery API, yang mengembalikan informasi](greengrass-discover-api.md) tentang perangkat inti yang dapat dihubungkan oleh perangkat klien. Respon API mencakup titik akhir broker MQTT untuk untuk terhubung dan sertifikat untuk digunakan untuk memverifikasi identitas setiap perangkat inti. Kemudian, perangkat klien dapat mencoba setiap titik akhir sampai berhasil terhubung ke perangkat inti.

Perangkat klien hanya dapat menemukan perangkat inti yang Anda kaitkan. Sebelum Anda menguji komunikasi antara perangkat klien dan perangkat inti, Anda harus mengaitkan perangkat klien ke perangkat inti. Untuk informasi selengkapnya, lihat [Mengaitkan perangkat klien](associate-client-devices.md).

API penemuan Greengrass mengembalikan titik akhir broker perangkat inti MQTT yang Anda tentukan. Anda dapat menggunakan [Komponen pendeteksi IP](ip-detector-component.md) untuk mengelola titik akhir ini untuk Anda, atau Anda dapat mengelolanya secara manual untuk setiap perangkat inti. Untuk informasi selengkapnya, lihat [Kelola titik akhir perangkat inti](manage-core-device-endpoints.md).

**catatan**  
Untuk menggunakan API penemuan Greengrass, perangkat klien harus memiliki izin `greengrass:Discover`. Untuk informasi selengkapnya, lihat [AWS IoT Kebijakan minimal untuk perangkat klien](device-auth.md#client-device-minimal-iot-policy).

 AWS IoT Device SDK Ini tersedia dalam berbagai bahasa pemrograman. Untuk informasi selengkapnya, lihat [AWS IoT Perangkat SDKs](https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html) di *Panduan AWS IoT Core Pengembang*.

**Topics**
+ [Uji komunikasi (Python)](#test-client-device-communications-python)
+ [Uji komunikasi (C\$1\$1)](#test-client-device-communications-cpp)
+ [Uji komunikasi (JavaScript)](#test-client-device-communications-javascript)
+ [Uji komunikasi (Java)](#test-client-device-communications-java)

## Uji komunikasi (Python)
<a name="test-client-device-communications-python"></a>

Pada bagian ini, Anda menggunakan sampel penemuan Greengrass di [v2 for Python AWS IoT Device SDK](https://github.com/aws/aws-iot-device-sdk-python-v2) untuk menguji komunikasi antara perangkat klien dan perangkat inti.

**penting**  
Untuk menggunakan AWS IoT Device SDK v2 untuk Python, perangkat harus menjalankan Python 3.6 atau yang lebih baru.

**Untuk menguji komunikasi (AWS IoT Device SDK v2 untuk Python)**

1. <a name="download-iot-device-sdk-python-v2"></a>Unduh dan instal [AWS IoT Device SDK v2 untuk Python](https://github.com/aws/aws-iot-device-sdk-python-v2) ke AWS IoT benda yang akan dihubungkan sebagai perangkat klien.

   Di perangkat klien, lakukan hal berikut:

   1. Kloning AWS IoT Device SDK v2 untuk repositori Python untuk mengunduhnya.

      ```
      git clone https://github.com/aws/aws-iot-device-sdk-python-v2.git
      ```

   1. Instal AWS IoT Device SDK v2 untuk Python.

      ```
      python3 -m pip install --user ./aws-iot-device-sdk-python-v2
      ```

1. <a name="cd-iot-device-sdk-python-v2"></a>Ubah ke folder sampel di AWS IoT Device SDK v2 untuk Python.

   ```
   cd aws-iot-device-sdk-python-v2/samples/greengrass
   ```

1. <a name="test-client-device-communications-application-intro"></a>Jalankan sampel aplikasi penemuan Greengrass. Aplikasi ini mengharapkan argumen yang menentukan nama objek perangkat klien, topik MQTT dan pesan yang akan digunakan, dan sertifikat yang mengautentikasi dan mengamankan sambungan. Contoh berikut mengirimkan pesan Hello World ke topik `clients/MyClientDevice1/hello/world`.<a name="test-client-device-communications-application-command-replace"></a>
   + Ganti *MyClientDevice1* dengan nama benda perangkat klien.
   + Ganti *\$1/certs/AmazonRootCA1.pem* dengan jalur ke sertifikat CA root Amazon di perangkat klien.
   + Ganti *\$1/certs/device.pem.crt* dengan jalur ke sertifikat perangkat di perangkat klien.
   + Ganti *\$1/certs/private.pem.key* dengan path ke file kunci pribadi pada perangkat klien.
   + Ganti *us-east-1* dengan AWS Wilayah tempat perangkat klien dan perangkat inti Anda beroperasi.

   ```
   python3 basic_discovery.py \\
     --thing_name MyClientDevice1 \\
     --topic 'clients/MyClientDevice1/hello/world' \\
     --message 'Hello World!' \\
     --ca_file ~/certs/AmazonRootCA1.pem \\
     --cert ~/certs/device.pem.crt \\
     --key ~/certs/private.pem.key \\
     --region us-east-1 \\
     --verbosity Warn
   ```

   <a name="test-client-device-communications-application-output-intro"></a>Aplikasi sampel penemuan mengirimkan pesan 10 kali dan terputus. Aplikasi ini juga berlangganan topik yang sama di mana ia menerbitkan pesan. Jika output menunjukkan bahwa aplikasi itu menerima pesan MQTT pada topik, perangkat klien dapat berhasil berkomunikasi dengan perangkat inti.

   ```
   Performing greengrass discovery...
   awsiot.greengrass_discovery.DiscoverResponse(gg_groups=[awsiot.greengrass_discovery.GGGroup(gg_group_id='greengrassV2-coreDevice-MyGreengrassCore', cores=[awsiot.greengrass_discovery.GGCore(thing_arn='arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore', connectivity=[awsiot.greengrass_discovery.ConnectivityInfo(id='203.0.113.0', host_address='203.0.113.0', metadata='', port=8883)])], certificate_authorities=['-----BEGIN CERTIFICATE-----\
   MIICiT...EXAMPLE=\
   -----END CERTIFICATE-----\
   '])])
   Trying core arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore at host 203.0.113.0 port 8883
   Connected!
   Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 0}
   
   Publish received on topic clients/MyClientDevice1/hello/world
   b'{"message": "Hello World!", "sequence": 0}'
   Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 1}
   
   Publish received on topic clients/MyClientDevice1/hello/world
   b'{"message": "Hello World!", "sequence": 1}'
   
   ...
   
   Published topic clients/MyClientDevice1/hello/world: {"message": "Hello World!", "sequence": 9}
   
   Publish received on topic clients/MyClientDevice1/hello/world
   b'{"message": "Hello World!", "sequence": 9}'
   ```

   <a name="test-client-device-communications-application-troubleshooting"></a>Jika aplikasi mengeluarkan kesalahan, lihat [Pemecahan masalah penemuan Greengrass](troubleshooting-client-devices.md#greengrass-discovery-issues).

   <a name="test-client-device-communications-application-view-core-logs"></a>Anda juga dapat melihat log Greengrass pada perangkat inti untuk memverifikasi apakah perangkat klien berhasil menghubungkan dan mengirim pesan. Untuk informasi selengkapnya, lihat [Memantau AWS IoT Greengrass log](monitor-logs.md).

## Uji komunikasi (C\$1\$1)
<a name="test-client-device-communications-cpp"></a>

Pada bagian ini, Anda menggunakan sampel penemuan Greengrass di [v2 for C\$1\$1AWS IoT Device SDK](https://github.com/aws/aws-iot-device-sdk-cpp-v2) untuk menguji komunikasi antara perangkat klien dan perangkat inti.

<a name="iot-device-sdk-cpp-v2-build-requirements-intro"></a>Untuk membangun AWS IoT Device SDK v2 untuk C\$1\$1, perangkat harus memiliki alat berikut:<a name="iot-device-sdk-cpp-v2-build-requirements"></a>
+ C\$1\$1 11 atau yang lebih baru
+ CMake 3.1 atau yang lebih baru
+ Salah satu penyusun berikut:
  + GCC 4.8 atau yang lebih baru
  + Clang 3.9 atau yang lebih baru
  + MSVC 2015 atau yang lebih baru

**Untuk menguji komunikasi (AWS IoT Device SDK v2 untuk C \$1\$1)**

1. Unduh dan buat [AWS IoT Device SDK v2 untuk C \$1\$1](https://github.com/aws/aws-iot-device-sdk-cpp-v2) ke AWS IoT benda yang akan dihubungkan sebagai perangkat klien.

   Di perangkat klien, lakukan hal berikut:

   1. Buat folder untuk AWS IoT Device SDK v2 untuk ruang kerja C \$1\$1, dan ubah ke folder tersebut.

      ```
      cd
      mkdir iot-device-sdk-cpp
      cd iot-device-sdk-cpp
      ```

   1. Kloning AWS IoT Device SDK v2 untuk repositori C\$1\$1 untuk mengunduhnya. Bendera `--recursive` menentukan untuk men-download submodul.

      ```
      git clone --recursive https://github.com/aws/aws-iot-device-sdk-cpp-v2.git
      ```

   1. Buat folder untuk keluaran build AWS IoT Device SDK v2 untuk C\$1\$1, dan ubah ke sana.

      ```
      mkdir aws-iot-device-sdk-cpp-v2-build
      cd aws-iot-device-sdk-cpp-v2-build
      ```

   1. Membangun AWS IoT Device SDK v2 untuk C \$1\$1.

      ```
      cmake -DCMAKE_INSTALL_PREFIX="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" ../aws-iot-device-sdk-cpp-v2
      cmake --build . --target install
      ```

1. Bangun aplikasi sampel penemuan Greengrass di v2 untuk C \$1\$1. AWS IoT Device SDK Lakukan hal-hal berikut:

   1. Ubah ke folder sampel penemuan Greengrass di v2 untuk C\$1\$1. AWS IoT Device SDK 

      ```
      cd ../aws-iot-device-sdk-cpp-v2/samples/greengrass/basic_discovery
      ```

   1. Buat folder untuk output build sampel penemuan Greengrass, dan ubah ke itu.

      ```
      mkdir build
      cd build
      ```

   1. Bangun sampel aplikasi penemuan Greengrass.

      ```
      cmake -DCMAKE_PREFIX_PATH="~/iot-device-sdk-cpp" -DCMAKE_BUILD_TYPE="Release" ..
      cmake --build . --config "Release"
      ```

1. <a name="test-client-device-communications-application-scanner-intro"></a>Jalankan sampel aplikasi penemuan Greengrass. Aplikasi ini mengharapkan argumen yang menentukan nama objek perangkat klien, topik MQTT dan pesan yang akan digunakan, dan sertifikat yang mengautentikasi dan mengamankan sambungan. Contoh berikut berlangganan topik `clients/MyClientDevice1/hello/world` dan menerbitkan pesan yang Anda masukkan pada baris perintah untuk topik yang sama.<a name="test-client-device-communications-application-command-replace"></a>
   + Ganti *MyClientDevice1* dengan nama benda perangkat klien.
   + Ganti *\$1/certs/AmazonRootCA1.pem* dengan jalur ke sertifikat CA root Amazon di perangkat klien.
   + Ganti *\$1/certs/device.pem.crt* dengan jalur ke sertifikat perangkat di perangkat klien.
   + Ganti *\$1/certs/private.pem.key* dengan path ke file kunci pribadi pada perangkat klien.
   + Ganti *us-east-1* dengan AWS Wilayah tempat perangkat klien dan perangkat inti Anda beroperasi.

   ```
   ./basic-discovery \
     --thing_name MyClientDevice1 \
     --topic 'clients/MyClientDevice1/hello/world' \
     --ca_file ~/certs/AmazonRootCA1.pem \
     --cert ~/certs/device.pem.crt \
     --key ~/certs/private.pem.key \
     --region us-east-1
   ```

   <a name="test-client-device-communications-application-scanner-output-intro"></a>Aplikasi sampel penemuan berlangganan topik dan meminta Anda untuk memasukkan pesan untuk dipublikasikan. 

   ```
   Connecting to group greengrassV2-coreDevice-MyGreengrassCore with thing arn arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore, using endpoint 203.0.113.0:8883
   Connected to group greengrassV2-coreDevice-MyGreengrassCore, using connection to 203.0.113.0:8883
   Successfully subscribed to clients/MyClientDevice1/hello/world
   Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press enter. Enter 'exit' to exit this program.
   ```

   <a name="test-client-device-communications-application-troubleshooting"></a>Jika aplikasi mengeluarkan kesalahan, lihat [Pemecahan masalah penemuan Greengrass](troubleshooting-client-devices.md#greengrass-discovery-issues).

1. <a name="test-client-device-communications-application-scanner-input"></a>Masukkan pesan, seperti **Hello World\$1**.

   ```
   Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press enter. Enter 'exit' to exit this program.
   Hello World!
   ```

   <a name="test-client-device-communications-application-scanner-input-output"></a>Jika output menunjukkan bahwa aplikasi itu menerima pesan MQTT pada topik, perangkat klien dapat berhasil berkomunikasi dengan perangkat inti.

   ```
   Operation on packetId 2 Succeeded
   Publish received on topic clients/MyClientDevice1/hello/world
   Message:
   Hello World!
   ```

   <a name="test-client-device-communications-application-view-core-logs"></a>Anda juga dapat melihat log Greengrass pada perangkat inti untuk memverifikasi apakah perangkat klien berhasil menghubungkan dan mengirim pesan. Untuk informasi selengkapnya, lihat [Memantau AWS IoT Greengrass log](monitor-logs.md).

## Uji komunikasi (JavaScript)
<a name="test-client-device-communications-javascript"></a>

Di bagian ini, Anda menggunakan sampel penemuan Greengrass di [AWS IoT Device SDK v2 JavaScript](https://github.com/aws/aws-iot-device-sdk-js-v2) untuk menguji komunikasi antara perangkat klien dan perangkat inti. 

**penting**  
Untuk menggunakan AWS IoT Device SDK v2 for JavaScript, perangkat harus menjalankan Node v10.0 atau yang lebih baru.

**Untuk menguji komunikasi (AWS IoT Device SDK v2 untuk JavaScript)**

1. Unduh dan instal [AWS IoT Device SDK v2 JavaScript untuk](https://github.com/aws/aws-iot-device-sdk-js-v2) AWS IoT hal yang akan dihubungkan sebagai perangkat klien.

   Di perangkat klien, lakukan hal berikut:

   1. Kloning AWS IoT Device SDK v2 untuk JavaScript repositori untuk mengunduhnya.

      ```
      git clone https://github.com/aws/aws-iot-device-sdk-js-v2.git
      ```

   1. Instal AWS IoT Device SDK v2 untuk JavaScript.

      ```
      cd aws-iot-device-sdk-js-v2
      npm install
      ```

1. Ubah ke folder sampel penemuan Greengrass di v2 untuk. AWS IoT Device SDK JavaScript

   ```
   cd samples/node/greengrass/basic_discovery
   ```

1. Instal sampel aplikasi penemuan Greengrass.

   ```
   npm install
   ```

1. <a name="test-client-device-communications-application-intro"></a>Jalankan sampel aplikasi penemuan Greengrass. Aplikasi ini mengharapkan argumen yang menentukan nama objek perangkat klien, topik MQTT dan pesan yang akan digunakan, dan sertifikat yang mengautentikasi dan mengamankan sambungan. Contoh berikut mengirimkan pesan Hello World ke topik `clients/MyClientDevice1/hello/world`.<a name="test-client-device-communications-application-command-replace"></a>
   + Ganti *MyClientDevice1* dengan nama benda perangkat klien.
   + Ganti *\$1/certs/AmazonRootCA1.pem* dengan jalur ke sertifikat CA root Amazon di perangkat klien.
   + Ganti *\$1/certs/device.pem.crt* dengan jalur ke sertifikat perangkat di perangkat klien.
   + Ganti *\$1/certs/private.pem.key* dengan path ke file kunci pribadi pada perangkat klien.
   + Ganti *us-east-1* dengan AWS Wilayah tempat perangkat klien dan perangkat inti Anda beroperasi.

   ```
   node dist/index.js \
     --thing_name MyClientDevice1 \
     --topic 'clients/MyClientDevice1/hello/world' \
     --message 'Hello World!' \
     --ca_file ~/certs/AmazonRootCA1.pem \
     --cert ~/certs/device.pem.crt \
     --key ~/certs/private.pem.key \
     --region us-east-1 \
     --verbose warn
   ```

   <a name="test-client-device-communications-application-output-intro"></a>Aplikasi sampel penemuan mengirimkan pesan 10 kali dan terputus. Aplikasi ini juga berlangganan topik yang sama di mana ia menerbitkan pesan. Jika output menunjukkan bahwa aplikasi itu menerima pesan MQTT pada topik, perangkat klien dapat berhasil berkomunikasi dengan perangkat inti.

   ```
   Discovery Response:
   {"gg_groups":[{"gg_group_id":"greengrassV2-coreDevice-MyGreengrassCore","cores":[{"thing_arn":"arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore","connectivity":[{"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""}]}],"certificate_authorities":["-----BEGIN CERTIFICATE-----\nMIICiT...EXAMPLE=\n-----END CERTIFICATE-----\n"]}]}
   Trying endpoint={"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""}
   [WARN] [2021-06-12T00:46:45Z] [00007f90c0e8d700] [socket] - id=0x7f90b8018710 fd=26: setsockopt() for NO_SIGNAL failed with errno 92. If you are having SIGPIPE signals thrown, you may want to install a signal trap in your application layer.
   Connected to endpoint={"id":"203.0.113.0","host_address":"203.0.113.0","port":8883,"metadata":""}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":1}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":2}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":3}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":4}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":5}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":6}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":7}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":8}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":9}
   Publish received. topic:"clients/MyClientDevice1/hello/world" dup:false qos:0 retain:false
   {"message":"Hello World!","sequence":10}
   Complete!
   ```

   <a name="test-client-device-communications-application-troubleshooting"></a>Jika aplikasi mengeluarkan kesalahan, lihat [Pemecahan masalah penemuan Greengrass](troubleshooting-client-devices.md#greengrass-discovery-issues).

   <a name="test-client-device-communications-application-view-core-logs"></a>Anda juga dapat melihat log Greengrass pada perangkat inti untuk memverifikasi apakah perangkat klien berhasil menghubungkan dan mengirim pesan. Untuk informasi selengkapnya, lihat [Memantau AWS IoT Greengrass log](monitor-logs.md).

## Uji komunikasi (Java)
<a name="test-client-device-communications-java"></a>

Pada bagian ini, Anda menggunakan sampel penemuan Greengrass di [v2 for Java AWS IoT Device SDK](https://github.com/aws/aws-iot-device-sdk-java-v2) untuk menguji komunikasi antara perangkat klien dan perangkat inti.

**penting**  
Untuk membangun AWS IoT Device SDK v2 untuk Java, perangkat harus memiliki alat berikut:  
Java 8 atau yang lebih baru, dengan `JAVA_HOME` menunjuk ke folder Java.
Apache Maven

**Untuk menguji komunikasi (AWS IoT Device SDK v2 untuk Java)**

1. Unduh dan bangun [AWS IoT Device SDK v2 untuk Java](https://github.com/aws/aws-iot-device-sdk-java-v2) ke AWS IoT benda yang akan dihubungkan sebagai perangkat klien.

   Di perangkat klien, lakukan hal berikut:

   1. Kloning AWS IoT Device SDK v2 untuk repositori Java untuk mengunduhnya.

      ```
      git clone https://github.com/aws/aws-iot-device-sdk-java-v2.git
      ```

   1. Ubah ke folder AWS IoT Device SDK v2 untuk Java.

   1. Membangun AWS IoT Device SDK v2 untuk Java.

      ```
      cd aws-iot-device-sdk-java-v2
      mvn versions:use-latest-versions -Dincludes="software.amazon.awssdk.crt*"
      mvn clean install
      ```

1. <a name="test-client-device-communications-application-scanner-intro"></a>Jalankan sampel aplikasi penemuan Greengrass. Aplikasi ini mengharapkan argumen yang menentukan nama objek perangkat klien, topik MQTT dan pesan yang akan digunakan, dan sertifikat yang mengautentikasi dan mengamankan sambungan. Contoh berikut berlangganan topik `clients/MyClientDevice1/hello/world` dan menerbitkan pesan yang Anda masukkan pada baris perintah untuk topik yang sama.<a name="test-client-device-communications-application-command-replace"></a>
   + Ganti kedua instance *MyClientDevice1* dengan nama benda perangkat klien.
   + Ganti *\$1HOME/certs/AmazonRootCA1.pem* dengan jalur ke sertifikat CA root Amazon di perangkat klien.
   + Ganti *\$1HOME/certs/device.pem.crt* dengan jalur ke sertifikat perangkat di perangkat klien.
   + Ganti *\$1HOME/certs/private.pem.key* dengan path ke file kunci pribadi pada perangkat klien.
   + Ganti *us-east-1* dengan Wilayah AWS tempat perangkat klien dan perangkat inti Anda beroperasi.

   ```
   DISCOVERY_SAMPLE_ARGS="--thing_name MyClientDevice1 \
     --topic 'clients/MyClientDevice1/hello/world' \
     --ca_file $HOME/certs/AmazonRootCA1.pem \
     --cert $HOME/certs/device.pem.crt \
     --key $HOME/certs/private.pem.key \
     --region us-east-1"
   
   mvn exec:java -pl samples/Greengrass/Discovery \
     -Dexec.mainClass=greengrass.BasicDiscovery \
     -Dexec.args="$DISCOVERY_SAMPLE_ARGS"
   ```

   <a name="test-client-device-communications-application-scanner-output-intro"></a>Aplikasi sampel penemuan berlangganan topik dan meminta Anda untuk memasukkan pesan untuk dipublikasikan. 

   ```
   Connecting to group ID greengrassV2-coreDevice-MyGreengrassCore, with thing arn arn:aws:iot:us-east-1:123456789012:thing/MyGreengrassCore, using endpoint 203.0.113.0:8883
   Started a clean session
   Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press Enter. Type 'exit' or 'quit' to exit this program:
   ```

   <a name="test-client-device-communications-application-troubleshooting"></a>Jika aplikasi mengeluarkan kesalahan, lihat [Pemecahan masalah penemuan Greengrass](troubleshooting-client-devices.md#greengrass-discovery-issues).

1. <a name="test-client-device-communications-application-scanner-input"></a>Masukkan pesan, seperti **Hello World\$1**.

   ```
   Enter the message you want to publish to topic clients/MyClientDevice1/hello/world and press Enter. Type 'exit' or 'quit' to exit this program:
   Hello World!
   ```

   <a name="test-client-device-communications-application-scanner-input-output"></a>Jika output menunjukkan bahwa aplikasi itu menerima pesan MQTT pada topik, perangkat klien dapat berhasil berkomunikasi dengan perangkat inti.

   ```
   Message received on topic clients/MyClientDevice1/hello/world: Hello World!
   ```

   <a name="test-client-device-communications-application-view-core-logs"></a>Anda juga dapat melihat log Greengrass pada perangkat inti untuk memverifikasi apakah perangkat klien berhasil menghubungkan dan mengirim pesan. Lihat informasi yang lebih lengkap di [Memantau AWS IoT Greengrass log](monitor-logs.md).

# API penemuan Greengrass RESTful
<a name="greengrass-discover-api"></a>

AWS IoT Greengrass menyediakan operasi `Discover` API yang dapat digunakan perangkat klien untuk mengidentifikasi perangkat inti Greengrass tempat mereka dapat terhubung. Perangkat klien menggunakan operasi bidang data ini untuk mengambil informasi yang diperlukan untuk terhubung ke perangkat inti Greengrass tempat Anda mengaitkannya dengan operasi API. [BatchAssociateClientDeviceWithCoreDevice](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_BatchAssociateClientDeviceWithCoreDevice.html) Saat perangkat klien online, perangkat dapat terhubung ke layanan AWS IoT Greengrass cloud dan menggunakan API penemuan untuk menemukan:
+ Alamat IP dan port untuk setiap perangkat inti Greengrass yang terkait.
+ Sertifikat CA perangkat inti, yang dapat digunakan oleh perangkat klien untuk mengautentikasi perangkat inti Greengrass.

**catatan**  
Perangkat klien juga dapat menggunakan klien penemuan AWS IoT Device SDK untuk menemukan informasi konektivitas untuk perangkat inti Greengrass. Klien penemuan menggunakan API penemuan. Untuk informasi selengkapnya, lihat berikut ini:  
[Uji komunikasi perangkat klien](test-client-device-communications.md)
[Greengrass RESTful Discovery](https://docs.aws.amazon.com/greengrass/v1/developerguide/gg-discover-api.html) *API di Panduan Pengembang.AWS IoT Greengrass Version 1 *

Untuk menggunakan operasi API ini, kirim permintaan HTTP untuk API penemuan tersebut pada titik akhir bidang data Greengrass. Titik akhir API ini memiliki format berikut.

```
https://greengrass-ats.iot.region.amazonaws.com:port/greengrass/discover/thing/thing-name
```

Untuk daftar yang didukung Wilayah AWS dan titik akhir untuk API AWS IoT Greengrass penemuan, lihat [AWS IoT Greengrass V2 titik akhir dan kuota](https://docs.aws.amazon.com/general/latest/gr/greengrassv2.html) di. *Referensi Umum AWS* Operasi API ini tersedia hanya pada titik akhir bidang data Greengrass. Titik akhir bidang kontrol yang Anda gunakan untuk mengelola komponen dan deployment berbeda dari titik akhir bidang data.

**catatan**  
API penemuan adalah sama untuk AWS IoT Greengrass V1 dan AWS IoT Greengrass V2. Jika Anda memiliki perangkat klien yang terhubung ke AWS IoT Greengrass V1 inti, Anda dapat menghubungkannya ke perangkat AWS IoT Greengrass V2 inti tanpa mengubah kode pada perangkat klien. *Untuk informasi selengkapnya, lihat [Greengrass RESTful Discovery](https://docs.aws.amazon.com/greengrass/v1/developerguide/gg-discover-api.html) API di Panduan Pengembang.AWS IoT Greengrass Version 1 *

**Topics**
+ [Autentikasi dan otorisasi penemuan](#greengrass-discover-auth)
+ [Permintaan](#greengrass-discover-request)
+ [Respons](#greengrass-discover-response)
+ [Uji API penemuan dengan cURL](#greengrass-discover-test-request)

## Autentikasi dan otorisasi penemuan
<a name="greengrass-discover-auth"></a>

Untuk menggunakan API penemuan untuk mengambil informasi konektivitas, perangkat klien harus menggunakan autentikasi bersama TLS dengan sertifikat klien X.509 untuk mengautentikasi. Untuk informasi lebih lanjut, lihat [Sertifikat klien X.509](https://docs.aws.amazon.com/iot/latest/developerguide/x509-client-certs.html) di *Panduan Developer AWS IoT Core *.

Perangkat klien juga harus memiliki izin untuk melakukan tindakan `greengrass:Discover`. Contoh AWS IoT kebijakan berikut memungkinkan AWS IoT sesuatu bernama `MyClientDevice1` untuk melakukan `Discover` untuk dirinya sendiri.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "greengrass:Discover",
      "Resource": [
        "arn:aws:iot:us-west-2:123456789012:thing/MyClientDevice1"
      ]
    }
  ]
}
```

------

**penting**  
<a name="thing-policy-variable-not-supported"></a>[Variabel kebijakan objek](https://docs.aws.amazon.com/iot/latest/developerguide/thing-policy-variables.html) (`iot:Connection.Thing.*`) tidak didukung di kebijakan AWS IoT untuk perangkat inti atau operasi bidang data Greengrass. Sebaliknya, Anda dapat menggunakan wildcard yang cocok dengan beberapa perangkat yang memiliki nama yang sama. Misalnya, Anda dapat menentukan `MyGreengrassDevice*` agar cocok dengan `MyGreengrassDevice1`, `MyGreengrassDevice2`, dan sebagainya. 

Untuk informasi selengkapnya, lihat [kebijakan AWS IoT Core](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policies.html) di *Panduan Developer AWS IoT Core *.

## Permintaan
<a name="greengrass-discover-request"></a>

Permintaan berisi header HTTP standar dan dikirim ke titik akhir penemuan Greengrass, seperti yang ditunjukkan dalam contoh berikut.

Nomor port tergantung pada apakah perangkat inti dikonfigurasi untuk mengirim lalu lintas HTTPS melalui port 8443 atau port 443. Untuk informasi selengkapnya, lihat [Hubungkan pada port 443 atau melalui proksi jaringan](configure-greengrass-core-v2.md#configure-alpn-network-proxy).

**catatan**  
Contoh ini menggunakan endpoint Amazon Trust Services (ATS), yang bekerja dengan sertifikat CA akar ATS yang disarankan. Titik akhir harus sesuai dengan jenis sertifikat CA akar.

Port 8443  

```
HTTP GET https://greengrass-ats.iot.region.amazonaws.com:8443/greengrass/discover/thing/thing-name
```

Port 443  

```
HTTP GET https://greengrass-ats.iot.region.amazonaws.com:443/greengrass/discover/thing/thing-name
```
Klien yang terhubung pada port 443 harus menerapkan ekstensi TLS [Application Layer Protocol Negotiation (ALPN)](https://tools.ietf.org/html/rfc7301) dan melewati `x-amzn-http-ca` sebagai `ProtocolName` di `ProtocolNameList`. Untuk informasi selengkapnya, lihat [Protokol](https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html) dalam *Panduan Developer AWS IoT *.

## Respons
<a name="greengrass-discover-response"></a>

Setelah berhasil, header respons menyertakan kode status HTTP 200 dan badan respons berisi dokumen respons temukan.

**catatan**  
Karena AWS IoT Greengrass V2 menggunakan API penemuan yang sama seperti AWS IoT Greengrass V1, respons mengatur informasi sesuai dengan AWS IoT Greengrass V1 konsep, seperti grup Greengrass. Tanggapan berisi daftar grup Greengrass. Di AWS IoT Greengrass V2, setiap perangkat inti berada dalam grupnya sendiri, di mana grup hanya berisi perangkat inti dan informasi konektivitasnya.

### Contoh dokumen respon temuan
<a name="greengrass-discover-response-examples"></a>

Dokumen berikut menunjukkan respon untuk perangkat klien yang terkait dengan satu perangkat inti Greengrass. Perangkat inti memiliki satu titik akhir dan satu sertifikat CA.

```
{
  "GGGroups": [
    {
      "GGGroupId": "greengrassV2-coreDevice-core-device-01-thing-name",
      "Cores": [
        {
          "thingArn": "core-device-01-thing-arn",
          "Connectivity": [
            {
              "id": "core-device-01-connection-id",
              "hostAddress": "core-device-01-address",
              "portNumber": core-device-01-port,
              "metadata": "core-device-01-description"
            }
          ]
        }
      ],
      "CAs": [
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----"
      ]
    }
  ]
}
```

Dokumen berikut menunjukkan respons untuk perangkat klien yang terkait dengan dua perangkat inti. Perangkat inti memiliki beberapa titik akhir dan beberapa sertifikat CA grup.

```
{
  "GGGroups": [
    {
      "GGGroupId": "greengrassV2-coreDevice-core-device-01-thing-name",
      "Cores": [
        {
          "thingArn": "core-device-01-thing-arn",
          "Connectivity": [
            {
              "id": "core-device-01-connection-id",
              "hostAddress": "core-device-01-address",
              "portNumber": core-device-01-port,
              "metadata": "core-device-01-connection-1-description"
            },
            {
              "id": "core-device-01-connection-id-2",
              "hostAddress": "core-device-01-address-2",
              "portNumber": core-device-01-port-2,
              "metadata": "core-device-01-connection-2-description"
            }
          ]
        }
      ],
      "CAs": [
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----",
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----",
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----"
      ]
    },
    {
      "GGGroupId": "greengrassV2-coreDevice-core-device-02-thing-name",
      "Cores": [
        {
          "thingArn":"core-device-02-thing-arn",
          "Connectivity" : [
            {
              "id": "core-device-02-connection-id",
              "hostAddress": "core-device-02-address",
              "portNumber": core-device-02-port,
              "metadata": "core-device-02-connection-1-description"
            }
          ]
        }
      ],
      "CAs": [
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----",
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----",
        "-----BEGIN CERTIFICATE-----cert-contents-----END CERTIFICATE-----"
      ]
    }
  ]
}
```

## Uji API penemuan dengan cURL
<a name="greengrass-discover-test-request"></a>

Jika Anda memiliki `cURL` yang diinstal, Anda dapat menguji API penemuan. Contoh berikut menentukan sertifikat perangkat klien untuk mengautentikasi permintaan ke titik akhir penemuan API Greengrass.

```
curl -i \
  --cert 1a23bc4d56.cert.pem \
  --key 1a23bc4d56.private.key \
  https://greengrass-ats.iot.us-west-2.amazonaws.com:8443/greengrass/discover/thing/MyClientDevice1
```

**catatan**  
Argumen `-i` menentukan header tanggapan HTTP output. Anda dapat menggunakan opsi ini untuk membantu mengidentifikasi kesalahan.

Jika permintaan berhasil, perintah ini menghasilkan tanggapan yang serupa dengan contoh berikut.

```
{
  "GGGroups": [
    {
      "GGGroupId": "greengrassV2-coreDevice-MyGreengrassCore",
      "Cores": [
        {
          "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
          "Connectivity": [
            {
              "Id": "AUTOIP_192.168.1.4_1",
              "HostAddress": "192.168.1.5",
              "PortNumber": 8883,
              "Metadata": ""
            }
          ]
        }
      ],
      "CAs": [
        "-----BEGIN CERTIFICATE-----\ncert-contents\n-----END CERTIFICATE-----\n"
      ]
    }
  ]
}
```

Jika aplikasi mengeluarkan kesalahan, lihat [Pemecahan masalah penemuan Greengrass](troubleshooting-client-devices.md#greengrass-discovery-issues).