

支援終止通知：2026 年 10 月 7 日 AWS 將停止 的支援 AWS IoT Greengrass Version 1。2026 年 10 月 7 日之後，您將無法再存取 AWS IoT Greengrass V1 資源。如需詳細資訊，請造訪[從 遷移 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Greengrass Discovery RESTful API
<a name="gg-discover-api"></a>

所有與 AWS IoT Greengrass 核心通訊的用戶端裝置都必須是 Greengrass 群組的成員。每個群組都必須有一個 Greengrass 核心。Discovery API 可讓裝置擷取連線至與用戶端裝置位於相同 Greengrass 群組的 Greengrass 核心所需的資訊。當用戶端裝置首次上線時，它可以連線到 AWS IoT Greengrass 服務，並使用 Discovery API 來尋找：
+ 其所屬的群組。用戶端裝置最多可為 10 個群組的成員。
+ 群組中 Greengrass 核心的 IP 位址和連接埠。
+ 群組憑證授權機構憑證可用於驗證 Greengrass 核心裝置。

**注意**  
用戶端裝置也可以使用 AWS IoT 裝置SDKs來探索 Greengrass 核心的連線資訊。如需詳細資訊，請參閱[AWS IoT 裝置 SDK](what-is-gg.md#iot-device-sdk)。

若要使用此 API，請傳送 HTTP 請求給 Discovery API 端點。例如：

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

如需 AWS IoT Greengrass Discovery API 支援的 Amazon Web Services 區域和端點清單，請參閱 [AWS IoT Greengrass 中的端點和配額](https://docs.aws.amazon.com/general/latest/gr/greengrass.html)*AWS 一般參考*。這是一個僅限 API 的資料平面。群組管理和 AWS IoT Core 操作的端點與 Discovery API 端點不同。

## 請求
<a name="gg-discover-request"></a>

此請求包含標準 HTTP 標題並已傳送到 Greengrass Discovery 端點，如下列範例所示。

連接埠號碼取決於核心是否設定為透過連接埠 8443 或連接埠 443 傳送 HTTPS 流量。如需詳細資訊，請參閱[連線至連接埠 443 或透過網路代理](gg-core.md#alpn-network-proxy)。

連接埠 8443  

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

連接埠 443  

```
HTTP GET https://greengrass-ats.iot.{{region}}.amazonaws.com:443/greengrass/discover/thing/{{thing-name}}
```
在連接埠 443 上連線的用戶端必須實作 [ Application Layer Protocol Negotiation (ALPN)](https://tools.ietf.org/html/rfc7301) TLS 延伸模組，並在 `ProtocolName`中`x-amzn-http-ca`做為 傳遞`ProtocolNameList`。如需詳細資訊，請參閱《 *AWS IoT 開發人員指南*》中的[通訊協定](https://docs.aws.amazon.com/iot/latest/developerguide/protocols.html)。  
這些範例使用 Amazon Trust Services (ATS) 端點，這是用於 ATS 根 CA 憑證 (建議使用)。端點必須符合根 CA 憑證類型。如需詳細資訊，請參閱[服務端點必須符合根 CA 憑證類型](gg-core.md#certificate-endpoints)。

## 回應
<a name="gg-discover-response"></a>

成功時，回應會包括標準 HTTP 標頭以及下列程式碼與本文：

```
HTTP 200
BODY: response document
```

如需詳細資訊，請參閱[範例 Discover 回應文件](#gg-discover-response-doc)。

## 探索授權
<a name="gg-discover-auth"></a>

擷取連線資訊需要一項允許發起人執行 `greengrass:Discover` 動作的政策。TLS 用戶端憑證的共同身分驗證僅接受身分驗證的格式。以下為允許發起人執行此動作的範例政策：

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

****  

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

------

## 範例 Discover 回應文件
<a name="gg-discover-response-doc"></a>

下列文件顯示用戶端裝置的回應，該用戶端裝置是具有一個 Greengrass 核心、一個端點和一個群組 CA 憑證的群組成員：

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

下列文件顯示用戶端裝置的回應，該用戶端裝置是具有一個 Greengrass 核心、多個端點和多個群組 CA 憑證的兩個群組的成員：

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

**注意**  
Greengrass 群組必須只定義一個 Greengrass 核心。 AWS IoT Greengrass 服務中包含 Greengrass 核心清單的任何回應都只包含一個 Greengrass 核心。

若已安裝 `cURL`，則可以測試探索請求。例如：

```
$ curl --cert 1a23bc4d56.cert.pem --key 1a23bc4d56.private.key https://greengrass-ats.iot.us-west-2.amazonaws.com:8443/greengrass/discover/thing/MyDevice
{"GGGroups":[{"GGGroupId":"1234a5b6-78cd-901e-2fgh-3i45j6k1789","Cores":[{"thingArn":"arn:aws:iot:us-west-2:1234567
89012:thing/MyFirstGroup_Core","Connectivity":[{"Id":"AUTOIP_192.168.1.4_1","HostAddress":"192.168.1.5","PortNumber
":8883,"Metadata":""}]}],"CAs":["-----BEGIN CERTIFICATE-----\n{{cert-contents}}\n-----END CERTIFICATE-----\n"]}]}
```