本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將用戶端裝置連線至核心裝置
您可以將雲端探索設定為將用戶端裝置連線到核心裝置。設定雲端探索時,用戶端裝置可以連線到AWS IoT Greengrass雲端服務,以擷取可連線的核心裝置相關資訊。然後,用戶端裝置可以嘗試連線到每個核心裝置,直到它們成功連線為止。
若要使用雲端探索,您必須執行下列動作:
-
將用戶端裝置與可連線的核心裝置建立關聯。
-
指定用戶端裝置可連線至每個核心裝置的 MQTT 代理程式端點。
-
將元件部署到可支援用戶端裝置的核心裝置。
您也可以部署選用元件來執行下列作業:
-
在AWS IoT Core用戶端裝置、Greengrass 元件和雲端服務之間轉送訊息。
-
自動為您管理核心裝置 MQTT 代理程式端點。
-
管理本機用戶端裝置陰影,並與AWS IoT Core雲端服務同步陰影。
-
您也必須檢閱並更新核心裝置的AWS IoT原則,以確認其具有連線用戶端裝置所需的權限。如需詳細資訊,請參閱 需求。
設定雲端探索之後,您可以測試用戶端裝置與核心裝置之間的通訊。如需詳細資訊,請參閱 測試用戶端裝置通訊。
主題
需求
若要將用戶端裝置連線到核心裝置,您必須具備下列項目:
-
核心設備必須運 Greengrass v2.2.0 或更高版本。
-
與您在核心裝置運作所在AWS地區相AWS IoT Greengrass關聯AWS 帳戶的 Greengrass 服務角色。如需詳細資訊,請參閱 設定綠色服務角色。
-
核心裝置的AWS IoT策略必須允許以下權限:
-
greengrass:PutCertificateAuthorities
-
greengrass:VerifyClientDeviceIdentity
-
greengrass:VerifyClientDeviceIoTCertificateAssociation
-
greengrass:GetConnectivityInfo
-
greengrass:UpdateConnectivityInfo
— (選用) IP 偵測器元件需要此權限,IP 偵測器元件會向AWS IoT Greengrass雲端服務報告核心裝置的網路連線資訊。 -
iot:GetThingShadow
iot:UpdateThingShadow
、和iot:DeleteThingShadow
— (選擇性) 若要使用陰影管理員元件與用戶端裝置陰影同步處理,需要這些權限AWS IoT Core。此功能需要 Greengrass 2.6.0 或更新版本、陰影管理器 v2.2.0 或更新版本,以及 MQTT 橋接器 v2.2.0 或更新版本。
如需詳細資訊,請參閱 設定物AWS IoT件原則。
注意
如果您在安裝 AWS IoT Greengrass Core 軟體時使用預設AWS IoT原則,核心裝置會有允許存取所有AWS IoT Greengrass動作的AWS IoT原則 (
greengrass:*
)。 -
-
AWS IoT您可以作為客戶端設備連接的東西。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的建立AWS IoT資源。
-
用戶端裝置必須使用用戶端 ID 進行連線。用戶端 ID 是物件名稱。不接受其他用戶端 ID。
-
每個用戶端裝置的AWS IoT策略都必須允許
greengrass:Discover
權限。如需詳細資訊,請參閱 用戶端裝置的最低AWS IoT原則。
設定綠色服務角色
Greengrass 服務角色是一種 AWS Identity and Access Management (IAM) 服務角色,可授權代表AWS IoT Greengrass您從服AWS務存取資源。此角色可讓AWS IoT Greengrass您驗證用戶端裝置的身分識別,並管理核心裝置連線資訊。
如果您先前尚未在此區域中設定 Greengrass 服務角色,則必須將 Greengrass 服務角色與AWS IoT Greengrass您在此區域中的服務角色建立關聯。AWS 帳戶
使用AWS IoT Greengrass主控台
在本節中,您會檢查 Greengrass 服務角色是否已設定。如果未設定,您可以建立新的 Greengrass 服務角色,以便與AWS IoT Greengrass此區AWS 帳戶域中的您建立關聯。
-
檢查 Greengrass 服務角色是否與您在此AWS 帳戶區域中AWS IoT Greengrass的相關聯。請執行下列操作:
-
導覽至 AWS IoT主控台
。 -
在導覽窗格中,選擇設定。
-
在 Greengrass 服務角色區段中,尋找目前的服務角色,以查看 Greengrass 服務角色是否已關聯。
如果您有相關聯的 Greengrass 服務角色,則您符合使用 IP 偵測器元件的此需求。跳至 設定物AWS IoT件原則。
-
-
如果 Greengrass 服務角色與您AWS 帳戶在此區域中沒有AWS IoT Greengrass關聯,請建立 Greengrass 服務角色並將其關聯。請執行下列操作:
-
導覽至 IAM 主控台
。 -
選擇角色。
-
選擇建立角色。
-
在 [建立角色] 頁面上,執行下列動作:
-
在 [信任的實體類型] 下,選擇AWS 服務。
-
在使用案例,其他用例下AWS 服務,選擇 Greengrass,選擇 Greengrass。此選項會指定新增AWS IoT Greengrass為可擔任此角色的受信任實體。
-
選擇下一步。
-
在 [權限原則] 下,選取AWSGreengrassResourceAccessRolePolicy要附加至角色的。
-
選擇下一步。
-
在角色名稱中,輸入角色的名稱,例如
Greengrass_ServiceRole
。 -
選擇建立角色。
-
-
導覽至 AWS IoT主控台
。 -
在導覽窗格中,選擇設定。
-
在 [Greengrass 服務角色] 區段中,選擇 [附加角色]。
-
在 [更新 Greengrass 服務角色模式] 中,選取您建立的 IAM 角色,然後選擇 [連接角色]。
-
-
檢查 Greengrass 服務角色是否與您在此AWS 帳戶區域中AWS IoT Greengrass的相關聯。
aws greengrassv2 get-service-role-for-account
如果 Greengrass 服務角色相關聯,則作業會傳回包含角色相關資訊的回應。
如果您有相關聯的 Greengrass 服務角色,則您符合使用 IP 偵測器元件的此需求。跳至 設定物AWS IoT件原則。
-
如果 Greengrass 服務角色與您AWS 帳戶在此區域中沒有AWS IoT Greengrass關聯,請建立 Greengrass 服務角色並將其關聯。請執行下列操作:
-
使用允許 AWS IoT Greengrass 擔任角色之信任政策的角色。此範例會建立名為
Greengrass_ServiceRole
的角色,但您可以使用不同的名稱。我們建議您也在信任原則中加入aws:SourceArn
和aws:SourceAccount
全域條件內容金鑰,以協助避免混淆的副安全性問題。條件內容索引鍵會限制存取權,只允許來自指定帳戶和 Greengrass 工作區的要求。如需有關混淆代理人問題的詳細資訊,請參閱 預防跨服務混淆代理人。 -
從輸出中的角色中繼資料,複製角色 ARN。您使用 ARN 將角色與您的帳戶相關聯。
-
將
AWSGreengrassResourceAccessRolePolicy
政策連接到角色。aws iam attach-role-policy --role-name Greengrass_ServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy
-
將 Greengrass 服務角色與AWS IoT Greengrass您的. AWS 帳戶 將
角色 arn 取代為
服務角色的 ARN。aws greengrassv2 associate-service-role-to-account --role-arn
role-arn
如果成功,作業會傳回下列回應。
{ "associatedAt": "
timestamp
" }
-
設定物AWS IoT件原則
核心裝置使用 X.509 裝置憑證來授權連線。AWS您可以將AWS IoT原則附加至裝置憑證,以定義核心裝置的權限。如需詳細資訊,請參閱 資料平面操作的AWS IoT 政策 及 支援用戶端裝置的最低AWS IoT原則。
若要將用戶端裝置連線到核心裝置,核心裝置的AWS IoT策略必須允許下列權限:
-
greengrass:PutCertificateAuthorities
-
greengrass:VerifyClientDeviceIdentity
-
greengrass:VerifyClientDeviceIoTCertificateAssociation
-
greengrass:GetConnectivityInfo
-
greengrass:UpdateConnectivityInfo
— (選用) IP 偵測器元件需要此權限,IP 偵測器元件會向AWS IoT Greengrass雲端服務報告核心裝置的網路連線資訊。 -
iot:GetThingShadow
iot:UpdateThingShadow
、和iot:DeleteThingShadow
— (選擇性) 若要使用陰影管理員元件與用戶端裝置陰影同步處理,需要這些權限AWS IoT Core。此功能需要 Greengrass 2.6.0 或更新版本、陰影管理器 v2.2.0 或更新版本,以及 MQTT 橋接器 v2.2.0 或更新版本。
在本節中,您可以檢閱核心裝置的AWS IoT原則,並新增任何遺失的必要權限。如果您使用 AWS IoT GreengrassCore 軟體安裝程式佈建資源,您的核心裝置會有允許存取所有AWS IoT Greengrass動作的AWS IoT原則 (greengrass:*
)。在此情況下,只有當您計劃部署陰影管理員元件以同步處理裝置陰影時,才必須更新AWS IoT原則AWS IoT Core。否則,您可以跳過此部分。
-
在AWS IoT Greengrass主控台
瀏覽功能表中,選擇 [核心裝置]。 -
在 [核心裝置] 頁面上,選擇要更新的核心裝置。
-
在核心裝置詳細資料頁面上,選擇核心裝置物件的連結。此連結會在AWS IoT主控台中開啟物件詳細資訊頁面。
-
在物件詳細資訊頁面上,選擇 [憑證]。
-
在「憑證」索引標籤中,選擇物件的使用中憑證。
-
在憑證詳細資料頁面上,選擇 [原則]。
-
在「策略」索引標籤中,選擇要檢閱和更新的AWS IoT策略。您可以將必要的權限新增至任何附加至核心裝置作用中憑證的原則。
注意
如果您使用 AWS IoT GreengrassCore 軟體安裝程式佈建資源,則有兩個AWS IoT原則。建議您選擇名為GreengrassV2IoTThingPolicy的策略 (如果存在的話)。依預設,您使用快速安裝程式建立的核心裝置會使用此原則名稱。如果您將權限新增至此原則,也會將這些權限授與使用此原則的其他核心裝置。
-
在策略概觀中,選擇編輯作用中的版本。
-
檢閱所需權限的原則,並新增任何遺失的必要權限。
-
greengrass:PutCertificateAuthorities
-
greengrass:VerifyClientDeviceIdentity
-
greengrass:VerifyClientDeviceIoTCertificateAssociation
-
greengrass:GetConnectivityInfo
-
greengrass:UpdateConnectivityInfo
— (選用) IP 偵測器元件需要此權限,IP 偵測器元件會向AWS IoT Greengrass雲端服務報告核心裝置的網路連線資訊。 -
iot:GetThingShadow
iot:UpdateThingShadow
、和iot:DeleteThingShadow
— (選擇性) 若要使用陰影管理員元件與用戶端裝置陰影同步處理,需要這些權限AWS IoT Core。此功能需要 Greengrass 2.6.0 或更新版本、陰影管理器 v2.2.0 或更新版本,以及 MQTT 橋接器 v2.2.0 或更新版本。
-
-
(選擇性) 若要允許核心裝置與陰影同步處理AWS IoT Core,請將下列陳述式新增至原則。如果您打算與用戶端裝置陰影互動,但不與其同步AWS IoT Core,請略過此步驟。將
地區
和帳戶 ID
替換為您使用的地區和您的AWS 帳戶號碼。-
此範例陳述式允許存取所有物件的裝置陰影。若要遵循最佳安全性做法,您可以限制只有核心裝置和連線至核心裝置的用戶端裝置的存取權。如需詳細資訊,請參閱 支援用戶端裝置的最低AWS IoT原則。
{ "Effect": "Allow", "Action": [ "iot:GetThingShadow", "iot:UpdateThingShadow", "iot:DeleteThingShadow" ], "Resource": [ "arn:aws:iot:
region
:account-id
:thing/*" ] }在您新增這個陳述式之後,原則文件看起來可能會類似下列範例。
{ "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:
region
:account-id
:thing/*" ] } ] } -
-
若要將新的原則版本設定為作用中版本,請在 [原則版本狀態] 下選取 [將編輯的版本設定為此原則的作用中版本]。
-
選擇「另存為新版本」。
-
列出核心裝置物AWS IoT件的主體。物件主參與者可以是 X.509 裝置憑證或其他識別。執行下列命令,並
MyGreengrassCore
以核心裝置的名稱取代。aws iot list-thing-principals --thing-name
MyGreengrassCore
作業會傳回列出核心裝置物件主參與者的回應。
{ "principals": [ "arn:aws:iot:us-west-2:123456789012:cert/
certificateId
" ] } -
識別核心裝置的作用中憑證。執行下列命令,並將 certific
ateId
取代為上一個步驟中每個憑證的 ID,直到找到作用中的憑證為止。憑證 ID 是位於憑證 ARN 結尾的十六進位字串。引--query
數指定僅輸出憑證的狀態。aws iot describe-certificate --certificate-id
certificateId
--query 'certificateDescription.status'作業會以字串形式傳回憑證狀態。例如,如果憑證處於作用中狀態,則此作業會輸出
"ACTIVE"
。 -
列出附加至憑證的AWS IoT原則。執行下列命令,並以憑證的 ARN 取代憑證 ARN。
aws iot list-principal-policies --principal
arn:aws:iot:us-west-2:123456789012:cert/certificateId
作業會傳回回應,列出附加至憑證的AWS IoT原則。
{ "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" } ] }
-
選擇要檢視和更新的原則。
注意
如果您使用 AWS IoT GreengrassCore 軟體安裝程式佈建資源,則有兩個AWS IoT原則。建議您選擇名為GreengrassV2IoTThingPolicy的策略 (如果存在的話)。依預設,您使用快速安裝程式建立的核心裝置會使用此原則名稱。如果您將權限新增至此原則,也會將這些權限授與使用此原則的其他核心裝置。
-
取得政策的文件。執行下列命令,並以原則的名稱取代
GreenGrassv2IoT ThingPolicy
。aws iot get-policy --policy-name
GreengrassV2IoTThingPolicy
作業會傳回回應,其中包含原則的文件和其他有關原則的資訊。政策文件是序列化為字串的 JSON 物件。
{ "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" }
-
使用線上轉換器或其他工具將原則文件字串轉換為 JSON 物件,然後將其儲存至名為的檔案
iot-policy.json
。例如,如果您已安裝 jq
工具,您可以執行下列命令來取得原則文件、將其轉換為 JSON 物件,並將原則文件儲存為 JSON 物件。 aws iot get-policy --policy-name
GreengrassV2IoTThingPolicy
--query 'policyDocument' | jq fromjson >> iot-policy.json -
檢閱所需權限的原則,並新增任何遺失的必要權限。
例如,在 Linux 系統上,您可以執行下列命令來使用 GNU nano 來開啟檔案。
nano iot-policy.json
-
greengrass:PutCertificateAuthorities
-
greengrass:VerifyClientDeviceIdentity
-
greengrass:VerifyClientDeviceIoTCertificateAssociation
-
greengrass:GetConnectivityInfo
-
greengrass:UpdateConnectivityInfo
— (選用) IP 偵測器元件需要此權限,IP 偵測器元件會向AWS IoT Greengrass雲端服務報告核心裝置的網路連線資訊。 -
iot:GetThingShadow
iot:UpdateThingShadow
、和iot:DeleteThingShadow
— (選擇性) 若要使用陰影管理員元件與用戶端裝置陰影同步處理,需要這些權限AWS IoT Core。此功能需要 Greengrass 2.6.0 或更新版本、陰影管理器 v2.2.0 或更新版本,以及 MQTT 橋接器 v2.2.0 或更新版本。
-
-
將變更儲存為策略的新版本。執行下列命令,並以原則的名稱取代
GreenGrassv2IoT ThingPolicy
。aws iot create-policy-version --policy-name
GreengrassV2IoTThingPolicy
--policy-document file://iot-policy.json --set-as-default如果成功,作業會傳回類似下列範例的回應。
{ "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 }
用於客戶端設備支持的 Greengrass 組件
重要
核心裝置必須執行 Greengrass 核心 v2.2.0 或更新版本,才能支援用戶端裝置。
若要讓用戶端裝置能夠連線並與核心裝置通訊,請將下列 Greengrass 元件部署到核心裝置:
-
用戶端裝置驗證 (
aws.greengrass.clientdevices.Auth
)部署用戶端裝置驗證元件以驗證用戶端裝置並授權用戶端裝置動作。這個組件允許你的AWS IoT東西連接到一個核心設備。
此組件需要一些配置才能使用它。您必須指定用戶端裝置群組,以及每個群組獲授權執行的作業,例如透過 MQTT 進行連線和通訊。如需詳細資訊,請參閱用戶端裝置驗證元件組態。
-
MQTT 3.1.1 經紀商 (平均) (
aws.greengrass.clientdevices.mqtt.Moquette
)部署 Moquette MQTT 代理程式元件以執行輕量型 MQTT 代理程式。Moquette MQTT 代理程式符合 MQTT 3.1.1 規範,並包含對 QoS 0、QoS 1、QoS 2、保留訊息、最後將訊息和持續訂閱的本機支援。
您不需要配置此組件即可使用它。不過,您可以設定此元件操作 MQTT 代理程式的連接埠。依預設,它會使用連接埠 8883。
-
MQTT 5 經紀商 (
aws.greengrass.clientdevices.mqtt.EMQX
)注意
若要使用 EMQX MQTT 5 代理程式,您必須使用 Greengrass 核心 v2.6.0 或更新版本,以及用戶端裝置驗證 v2.2.0 或更新版本。
部署 EMQX MQTT 代理程式元件,以便在用戶端裝置與核心裝置之間的通訊中使用 MQTT 5.0 功能。EMQX MQTT 代理程式符合 MQTT 5.0 規範,並包含工作階段和訊息到期間隔、使用者屬性、共用訂閱、主題別名等支援。
您不需要配置此組件即可使用它。不過,您可以設定此元件操作 MQTT 代理程式的連接埠。依預設,它會使用連接埠 8883。
-
MQTT 大橋 (
aws.greengrass.clientdevices.mqtt.Bridge
)(選擇性) 部署 MQTT 橋接器元件,以在用戶端裝置 (本機 MQTT)、本機發佈/訂閱和 MQTT 之間轉送訊息。AWS IoT Core設定此元件,以便與 Greengrass 元件的用戶端裝置同步處理用戶端裝置,AWS IoT Core並與其互動。
此元件需要組態才能使用。您必須指定此元件轉送訊息的主題對映。如需詳細資訊,請參閱 MQTT 橋接器元件組態。
-
IP 偵測器 (
aws.greengrass.clientdevices.IPDetector
)(選擇性) 部署 IP 偵測器元件,以自動向AWS IoT Greengrass雲端服務報告核心裝置的 MQTT 代理程式端點。如果您有複雜的網路設定,例如路由器將 MQTT 代理程式連接埠轉送至核心裝置的網路設定,則無法使用此元件。
您不需要配置此組件即可使用它。
-
陰影管理 (
aws.greengrass.ShadowManager
)(選擇性) 部署陰影管理員元件,以管理核心裝置上的用戶端裝置陰影。Greengrass 組件可以獲取,更新和刪除客戶端設備陰影以與客戶端設備進行交互。您也可以設定陰影管理員元件,以同步處理用戶端裝置陰影與AWS IoT Core雲端服務。
若要將此元件與用戶端裝置陰影搭配使用,您必須設定 MQTT 橋接器元件,以便在用戶端裝置和陰影管理員 (使用本機發佈/訂閱) 之間轉送訊息。否則,此組件不需要配置即可使用,但確實需要配置才能同步設備陰影。
注意
設定雲端探索 (主控台)
您可以使用AWS IoT Greengrass主控台來關聯用戶端裝置、管理核心裝置端點,以及部署元件以啟用用戶端裝置支援。如需詳細資訊,請參閱 步驟 2:啟用用戶端裝置支援。
設定雲端探索 (AWS CLI)
您可以使用 AWS Command Line Interface (AWS CLI) 來關聯用戶端裝置、管理核心裝置端點,以及部署元件以啟用用戶端裝置支援。如需詳細資訊,請參閱下列內容: