

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

# 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).