本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Greengrass 發現寧靜 API
AWS IoT Greengrass提供用戶端裝置可用來識別 Greengrass 核心裝置在其中連線的 Discover
API 作業。用戶端裝置會使用此資料平面作業擷取連線到 Greengrass 核心裝置所需的資訊,以便將它們與 API 作業相關聯。BatchAssociateClientDeviceWithCoreDevice當用戶端裝置上線時,它可以連線到AWS IoT Greengrass雲端服務,並使用探索 API 來尋找:
-
每個關聯的 Greengrass 核心裝置的 IP 位址和連接埠。
-
核心裝置 CA 憑證,用戶端裝置可用來驗證 Greengrass 核心裝置。
注意
用戶端裝置也可以使用中的探索用戶端AWS IoT Device SDK來探索 Greengrass 核心裝置的連線資訊。探索用戶端會使用探索 API。如需詳細資訊,請參閱下列內容:
-
開發人員指南中的格林格拉斯發現 REST 風格 API。AWS IoT Greengrass Version 1
若要使用此 API 作業,請將 HTTP 要求傳送至 Greengrass 資料平面端點上的探索 API。此 API 端點具有以下格式。
https://greengrass-ats.iot.
region
.amazonaws.com:port
/greengrass/discover/thing/thing-name
如需AWS IoT Greengrass探查 API 的支援AWS 區域和AWS IoT Greengrass V2端點清單,請參閱 AWS 一般參考. 此 API 作業只能在 Greengrass 資料平面端點上使用。用於管理元件和部署的控制平面端點與資料平面端點不同。
注意
和的探索 API 是相同AWS IoT Greengrass V1的AWS IoT Greengrass V2。如果您有連接到AWS IoT Greengrass V1核心的用戶端裝置,您可以將它們連接到AWS IoT Greengrass V2核心裝置,而無需變更用戶端裝置上的程式碼。如需詳細資訊,請參閱開發人員指南中的《綠色探索 RESTful API》。AWS IoT Greengrass Version 1
探索驗證和授權
若要使用探索 API 擷取連線資訊,用戶端裝置必須使用 TLS 相互驗證與 X.509 用戶端憑證來進行驗證。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的 X.509 用戶端憑證。
用戶端裝置也必須具有執行處理行greengrass:Discover
動的權限。下列範例AWS IoT原則允許名MyClientDevice1
為的AWS IoT物件Discover
為自己執行。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "greengrass:Discover", "Resource": [ "arn:aws:iot:us-west-2:123456789012:thing/MyClientDevice1" ] } ] }
重要
核心裝置或 Greengrass 資料平面作業的原AWS IoT則中不支援物件原則變數 (iot:Connection.Thing.
)。相反地,您可以使用萬用字元來比對具有相似名稱的多個裝置。例如,您可以指定*
MyGreengrassDevice*
要相符MyGreengrassDevice1
MyGreengrassDevice2
、等等。
如需詳細資訊,請參閱AWS IoT Core開發人員指南中的AWS IoT Core政策。
請求
要求包含標準 HTTP 標頭,並會傳送至 Greengrass 探索端點,如下列範例所示。
連接埠號碼取決於核心裝置是設定為透過連接埠 8443 或連接埠 443 傳送 HTTPS 流量。如需詳細資訊,請參閱 連線至連接埠 443 或透過網路代理。
注意
這些範例使用 Amazon 信任服務 (ATS) 端點,該端點可與建議的 ATS 根 CA 憑證搭配使用。端點必須符合根 CA 憑證類型。
- 連接埠 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
照ProtocolName
中的.ProtocolNameList
如需詳細資訊,請參閱AWS IoT開發人員指南中的通訊協定。
回應
成功之後,回應標頭會包含 HTTP 200 狀態碼,而回應主體則包含探索回應文件。
注意
因為AWS IoT Greengrass V2使用與相同的探索 APIAWS IoT Greengrass V1,因此回應會根據AWS IoT Greengrass V1概念 (例如 Greengrass 群組) 來組織資訊。響應包 Greengrass 色組的列表。在中AWS IoT Greengrass V2,每個核心裝置都位於自己的群組中,其中該群組僅包含該核心裝置及其連線資訊。
範例 Discover 回應文件
下列文件顯示與一個 Greengrass 核心裝置相關聯的用戶端裝置的回應。核心裝置具有一個端點和一個 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-----" ] } ] }
下列文件顯示與兩個核心裝置相關聯的用戶端裝置的回應。核心裝置具有多個端點和多個群組 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-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-----" ] } ] }
使用 cURL 測試探索 API
如果您已cURL
安裝,則可以測試探索 API。下列範例會指定用戶端裝置的憑證,以驗證對 Greengrass 探索 API 端點的要求。
curl -i \ --cert
1a23bc4d56.cert.pem
\ --key1a23bc4d56.private.key
\ https://greengrass-ats.iot.us-west-2
.amazonaws.com:8443/greengrass/discover/thing/MyClientDevice1
注意
引-i
數指定要輸出 HTTP 回應標頭。您可以使用此選項來協助識別錯誤。
如果要求成功,此命令會輸出類似下列範例的回應。
{ "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-----\n
cert-contents
\n-----END CERTIFICATE-----\n" ] } ] }
如果命令輸出錯誤,請參閱 Greengrass 探索問題疑難排解。