Greengrass Discovery RESTful API - AWS IoT Greengrass

若我們提供該指南英語版本的翻譯,在有任何牴觸的狀況下請以英文版本的指南為主。其透過機器翻譯提供翻譯。

Greengrass Discovery RESTful API

所有與 AWS IoT Greengrass 核心 通訊的裝置須為 Greengrass 群組的成員。每個群組都必須有一個 Greengrass 核心。Discovery API 可讓裝置擷取需要連接到與裝置位於同一個 Greengrass 群組中 Greengrass 核心的資訊。裝置第一次連上線時,可以連接到 AWS IoT Greengrass 服務和使用 Discovery API 搜尋:

  • 其所屬的群組。一個裝置最多可為 10 個群組的成員。

  • 群組中 Greengrass 核心的 IP 位址和連接埠。

  • 群組憑證授權機構憑證可用於驗證 Greengrass 核心裝置。

注意

設備也可以使用 AWS IoT 設備SDK以發現GreengrassCore的連接信息。如需詳細資訊,請參閱AWS IoT裝置 SDK.

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

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

如需支持的AWS區域和端點列表,請參閱 AWS IoT Greengrass 發現API,請參閱 AWS IoT Greengrass 端點和配額AWS一般參考. 這是一個僅限 API 的資料平面。適用於群組管理和 AWS IoT Core 操作的端點與來自 Discovery API 的端點不一樣。

Request

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

連接埠號碼取決於核心是否設定為透過連接埠 8443 或連接埠 443 傳送 HTTPS 流量。如需詳細資訊,請參閱連線至連接埠 443 或透過網路代理.

連接埠 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 上連接的用戶端,必須實作應用層協定溝通 (ALPN) TLS 延伸模組,並將 x-amzn-http-ca 傳遞為 ProtocolNameList 中的 ProtocolName。如需詳細資訊,請參閱《AWS IoT 開發人員指南》中的通訊協定

注意

這些範例使用 Amazon Trust Services (ATS) 端點,這是用於 ATS 根 CA 憑證 (建議使用)。端點必須符合根 CA 憑證類型。如需詳細資訊,請參閱服務端點必須匹配根CA證書類型.

Response

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

HTTP 200 BODY: response document

如需詳細資訊,請參閱範例 Discover 回應文件.

發現授權

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

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

範例 Discover 回應文件

以下文件顯示裝置的回應,該裝置是一個群組 (具有一個 Greengrass 核心、一個端點和一個群組憑證授權機構憑證) 的成員:

{ "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 核心、多個端點和多個群組憑證授權機構憑證) 的成員。

{ "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 核心。來自包含 Greengrass 核心清單的 AWS IoT 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-----\ncert-contents\n-----END CERTIFICATE-----\n"]}]}