為 Greengrass 核心裝置設定AWS IoT叢集佈建 - AWS IoT Greengrass

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

為 Greengrass 核心裝置設定AWS IoT叢集佈建

若要透過叢集佈建來安裝 AWS IoT Greengrass Core 軟體,您必須先在AWS 帳戶. 這些資源可讓裝置自行註冊,AWS IoT並以 Greengrass 核心裝置的形式運作。按照本節中的步驟進行一次,在AWS 帳戶.

  • 權杖交換 IAM 角色,核心裝置用來授權對AWS服務的呼叫。

  • 指向權杖交換AWS IoT角色的角色別名。

  • (選擇性) AWS IoT 原則,核心裝置使用此原則來授權AWS IoT和AWS IoT Greengrass服務的呼叫。此AWS IoT原則必須允iot:AssumeRoleWithCertificate許指向 Token 交換AWS IoT角色之角色別名的權限。

    您可以AWS IoT針對叢集中的所有核心裝置使用單一原則,也可以設定叢集佈建範本,為每個核心裝置建立AWS IoT原則。

  • AWS IoT叢集佈建範本。此範本必須指定下列項目:

    • 物AWS IoT件資源。您可以指定現有物件群組的清單,以便在每個裝置上線時將元件部署到其中。

    • AWS IoT策略資源。此資源可以定義下列其中一個屬性:

      • 現有AWS IoT策略的名稱。如果您選擇此選項,您從此範本建立的核心裝置會使用相同的AWS IoT原則,而且您可以管理其作為叢集的權限。

      • 一份AWS IoT政策文件。如果您選擇此選項,您從此範本建立的每個核心裝置都會使用唯一的AWS IoT原則,而且您可以管理每個個別核心裝置的權限。

    • 憑AWS IoT證資源。此憑證資源必須使用AWS::IoT::Certificate::Id參數將憑證附加至核心裝置。如需詳細資訊,請參閱AWS IoT開發人員指南中的 J ust-in-time 佈建

  • 叢集AWS IoT佈建範本的佈建宣告憑證和私密金鑰。您可以在製造過程中將此憑證和私密金鑰嵌入裝置中,以便裝置在上線時可以自行註冊和佈建。

    重要

    佈建宣告私密金鑰應始終受到保護,包括在 Greengrass 核心裝置上。我們建議您使用 Amazon CloudWatch 指標和日誌來監控濫用的跡象,例如未經授權使用宣告憑證來佈建裝置。如果您偵測到誤用,請停用佈建宣告憑證,使其無法用於裝置佈建。如需詳細資訊,請參閱AWS IoT Core開發人員指南AWS IoT中的監控

    為了協助您更有效地管理在您的裝置數目以及自行註冊的裝置數目AWS 帳戶,您可以在建立叢集佈建範本時指定預先佈建勾點。預先佈建勾點是一種AWS Lambda函數,可驗證裝置在註冊期間提供的範本參數。例如,您可以建立預先佈建勾點,以根據資料庫檢查裝置 ID,以確認裝置是否具有佈建權限。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的預先佈建勾點

  • 您附加至佈建宣告憑證的AWS IoT原則,以允許裝置註冊並使用叢集佈建範本。

建立權杖交換角色

Greengrass 核心裝置使用 IAM 服務角色 (稱為權杖交換角色) 來授權對服務的呼叫。AWS裝置使用AWS IoT登入資料提供者取得此角色的臨時AWS登入資料,以便裝置與之互動AWS IoT、將日誌傳送到 Amazon CloudWatch Logs,以及從 Amazon S3 下載自訂元件成品。如需詳細資訊,請參閱 授權核心裝置與 AWS 服務互動

您可以使用AWS IoT角色別名來設定 Greengrass 核心裝置的權杖交換角色。角色別名可讓您變更裝置的 Token 交換角色,但保持裝置設定不變。如需詳細資訊,請參閱AWS IoT Core開發人員指南的授權直接呼叫AWS服務

在本節中,您會建立權杖交換 IAM 角色和指向該AWS IoT角色的角色別名。如果您已經設置了 Greengrass 核心設備,則可以使用其令牌交換角色和角色別名,而不是創建新的。

若要建立權杖交換 IAM 角色
  1. 建立 IAM 角色,您的裝置可用作權杖交換角色。請執行下列操作:

    1. 建立包含 Token 交換角色所需之信任原則文件的檔案。

      例如,在 Linux 系統上,您可以執行下列命令來使用 GNU nano 建立檔案。

      nano device-role-trust-policy.json

      將下列 JSON 複製到檔案中。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. 使用信任原則文件建立權杖交換角色。

      • TokenExchangeRole以要建立的身分與存取權管理員角色的名稱取代 GreenGrassv2

      aws iam create-role --role-name GreengrassV2TokenExchangeRole --assume-role-policy-document file://device-role-trust-policy.json

      如果要求成功,回應看起來類似下列範例。

      { "Role": { "Path": "/", "RoleName": "GreengrassV2TokenExchangeRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole", "CreateDate": "2021-02-06T00:13:29+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } }
    3. 建立包含權杖交換角色所需之存取原則文件的檔案。

      例如,在 Linux 系統上,您可以執行下列命令來使用 GNU nano 建立檔案。

      nano device-role-access-policy.json

      將下列 JSON 複製到檔案中。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
      注意

      此存取政策不允許存取 S3 儲存貯體中的元件成品。若要在 Amazon S3 中部署定義成品的自訂元件,您必須向角色新增許可,以允許核心裝置擷取元件成品。如需詳細資訊,請參閱 允許存取元件成品的 S3 儲存貯體

      如果您還沒有適用於元件成品的 S3 儲存貯體,您可以在稍後建立儲存貯體後新增這些許可。

    4. 從政策文件建立 IAM 政策。

      • TokenExchangeRoleAccess以要建立的身分與存取權管理政策的名稱取代 GreenGrassv2

      aws iam create-policy --policy-name GreengrassV2TokenExchangeRoleAccess --policy-document file://device-role-access-policy.json

      如果要求成功,回應看起來類似下列範例。

      { "Policy": { "PolicyName": "GreengrassV2TokenExchangeRoleAccess", "PolicyId": "ANPAZ2YMUHYHACI7C5Z66", "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2021-02-06T00:37:17+00:00", "UpdateDate": "2021-02-06T00:37:17+00:00" } }
    5. 將 IAM 政策附加到權杖交換角色。

      • 以 IAM 角色的名稱取代綠TokenExchangeRole色 V2

      • 將政策 ARN 取代為您在上一個步驟中建立的 IAM 政策的 ARN。

      aws iam attach-role-policy --role-name GreengrassV2TokenExchangeRole --policy-arn arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess

      如果請求成功,命令沒有任何輸出。

  2. 建立指向權杖交換AWS IoT角色的角色別名。

    • 以要建立之角色別名的名稱取GreengrassCoreTokenExchangeRoleAlias代。

    • 將角色 ARN 取代為您在上一個步驟中建立的 IAM 角色的 ARN。

    aws iot create-role-alias --role-alias GreengrassCoreTokenExchangeRoleAlias --role-arn arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole

    如果要求成功,回應看起來類似下列範例。

    { "roleAlias": "GreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" }
    注意

    若要建立角色別名,您必須擁有權限才能將權杖交換 IAM 角色傳遞給AWS IoT。如果您在嘗試建立角色別名時收到錯誤訊息,請檢查您的AWS使用者是否具有此權限。如需詳細資訊,請參閱《使用指南》中的授與使用AWS Identity and Access Management者將角色傳遞給AWS服務的權限。

建立 AWS IoT 政策

將裝置註冊為AWS IoT物件後,該裝置即可使用數位憑證進行驗證AWS。此憑證包含一或多個AWS IoT原則,用來定義裝置可與憑證搭配使用的權限。這些原則可讓裝置與AWS IoT和通訊AWS IoT Greengrass。

透過AWS IoT叢集佈建,裝置會連線AWS IoT到以建立和下載裝置憑證。在您在下一節中建立的叢集佈建範本中,您可以指定是否AWS IoT將相同的AWS IoT原則附加至所有裝置的憑證,還是為每個裝置建立新原則。

在本節中,您會建立AWS IoT附加至所有裝置憑證的AWS IoT原則。透過這種方法,您可以將所有裝置的權限視為叢集來管理。如果您想要為每個裝置建立新AWS IoT規則,可以略過本節,並在定義叢集範本時參考其中的政策。

如要建立 AWS IoT 政策
  • 建立AWS IoT定義 Greengrass 核心裝置叢集AWS IoT權限的原則。下列原則允許存取所有 MQTT 主題和 Greengrass 作業,因此您的裝置可以處理需要新 Greengrass 作業的自訂應用程式和 future 變更。此政策還允許iot:AssumeRoleWithCertificate權限,允許您的設備使用您在上一節中創建的令牌交換角色。您可以根據您的使用案例來限制此政策。如需詳細資訊,請參閱 AWS IoT Greengrass V2核心裝置的最低AWS IoT原則

    請執行下列操作:

    1. 建立包含 Greengrass 核心裝置所需之AWS IoT原則文件的檔案。

      例如,在 Linux 系統上,您可以執行下列命令來使用 GNU nano 建立檔案。

      nano greengrass-v2-iot-policy.json

      將下列 JSON 複製到檔案中。

      • iot:AssumeRoleWithCertificate資源取代為您在上一節中建立的AWS IoT角色別名的 ARN。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect", "greengrass:*" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" } ] }
    2. 從AWS IoT策略文件建立策略。

      • 以要建立的策略名稱取代綠ThingPolicy色物聯網

      aws iot create-policy --policy-name GreengrassV2IoTThingPolicy --policy-document file://greengrass-v2-iot-policy.json

      如果要求成功,回應看起來類似下列範例。

      { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Subscribe\", \"iot:Receive\", \"iot:Connect\", \"greengrass:*\" ], \"Resource\": [ \"*\" ] }, { \"Effect\": \"Allow\", \"Action\": \"iot:AssumeRoleWithCertificate\", \"Resource\": \"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\" } ] }", "policyVersionId": "1" }

建立叢集佈建範本

AWS IoT叢集佈建範本定義如何佈建AWS IoT項目、原則和憑證。若要使用叢集佈建外掛程式佈建 Greengrass 核心裝置,您必須建立指定下列內容的範本:

  • 物AWS IoT件資源。您可以指定現有物件群組的清單,以便在每個裝置上線時將元件部署到其中。

  • AWS IoT策略資源。此資源可以定義下列其中一個屬性:

    • 現有AWS IoT策略的名稱。如果您選擇此選項,您從此範本建立的核心裝置會使用相同的AWS IoT原則,而且您可以管理其作為叢集的權限。

    • 一份AWS IoT政策文件。如果您選擇此選項,您從此範本建立的每個核心裝置都會使用唯一的AWS IoT原則,而且您可以管理每個個別核心裝置的權限。

  • 憑AWS IoT證資源。此憑證資源必須使用AWS::IoT::Certificate::Id參數將憑證附加至核心裝置。如需詳細資訊,請參閱AWS IoT開發人員指南中的 J ust-in-time 佈建

在範本中,您可以指定將AWS IoT物件新增至現有物件群組的清單。當核心裝置第一次連線到AWS IoT Greengrass時,它會接收其所屬成員之每個物件群組的 Greengrass 部署。您可以使用物件群組,在每個裝置上線後立即將最新軟體部署到其中。如需詳細資訊,請參閱 將AWS IoT Greengrass元件部署到裝置

此AWS IoT服務需要在佈建裝置AWS 帳戶時建立和更新AWS IoT資源的權限。若要授予AWS IoT服務存取權,您可以建立 IAM 角色,並在建立範本時提供該角色。 AWS IoT提供受管理的策略 AWSIoTThingsRegistration,允許存取佈建設備時可AWS IoT能使用的所有權限。您可以使用此受管理的原則,或建立自訂原則,針對您的使用案例在受管理原則中設定權限的範圍。

在本節中,您會建立可AWS IoT為裝置佈建資源的 IAM 角色,並建立使用該 IAM 角色的叢集佈建範本。

若要建立叢集佈建範本
  1. 建立AWS IoT可假設在AWS 帳戶. 中佈建資源的 IAM 角色 請執行下列操作:

    1. 建立包含允許AWS IoT擔任角色之信任原則文件的檔案。

      例如,在 Linux 系統上,您可以執行下列命令來使用 GNU nano 建立檔案。

      nano aws-iot-trust-policy.json

      將下列 JSON 複製到檔案中。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
    2. 使用信任政策文件建立 IAM 角色。

      • 以要建立的 IAM 角色名稱取GreengrassFleetProvisioningRole代。

      aws iam create-role --role-name GreengrassFleetProvisioningRole --assume-role-policy-document file://aws-iot-trust-policy.json

      如果要求成功,回應看起來類似下列範例。

      { "Role": { "Path": "/", "RoleName": "GreengrassFleetProvisioningRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole", "CreateDate": "2021-07-26T00:15:12+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } } }
    3. 檢閱AWSIoTThingsRegistration原則,該原則允許存取佈建裝置時可AWS IoT能使用的所有權限。您可以使用這個受管理的原則,或建立自訂原則來定義使用案例的範圍下限權限。如果您選擇建立自訂原則,請立即執行。

    4. 將 IAM 政策附加到叢集佈建角色。

      • GreengrassFleetProvisioningRole 取代為 IAM 角色的名稱。

      • 如果您在上一個步驟中建立了自訂政策,請將政策 ARN 取代為要使用的 IAM 政策的 ARN。

      aws iam attach-role-policy --role-name GreengrassFleetProvisioningRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration

      如果請求成功,命令沒有任何輸出。

  2. (選擇性) 建立預先佈建勾點,此AWS Lambda函數可驗證裝置在註冊期間提供的範本參數。您可以使用預先佈建掛鉤來更好地控制. AWS 帳戶 如需詳細資訊,請參閱AWS IoT Core開發人員指南中的預先佈建勾點

  3. 建立叢集佈建範本。請執行下列操作:

    1. 建立包含佈建範本文件的檔案。

      例如,在 Linux 系統上,您可以執行下列命令來使用 GNU nano 建立檔案。

      nano greengrass-fleet-provisioning-template.json

      編寫佈建範本文件。您可以從下列範例佈建範本開始,此範本會指定建立具AWS IoT有下列內容的物件:

      • 物件的名稱是您在ThingName範本參數中指定的值。

      • 物件是您在ThingGroupName範本參數中指定之物件群組的成員。物件群組必須存在於您的AWS 帳戶.

      • 物件的憑證已GreengrassV2IoTThingPolicy附加名為的AWS IoT原則。

      如需詳細資訊,請參閱AWS IoT Core開發人員指南中的佈建範本

      { "Parameters": { "ThingName": { "Type": "String" }, "ThingGroupName": { "Type": "String" }, "AWS::IoT::Certificate::Id": { "Type": "String" } }, "Resources": { "MyThing": { "OverrideSettings": { "AttributePayload": "REPLACE", "ThingGroups": "REPLACE", "ThingTypeName": "REPLACE" }, "Properties": { "AttributePayload": {}, "ThingGroups": [ { "Ref": "ThingGroupName" } ], "ThingName": { "Ref": "ThingName" } }, "Type": "AWS::IoT::Thing" }, "MyPolicy": { "Properties": { "PolicyName": "GreengrassV2IoTThingPolicy" }, "Type": "AWS::IoT::Policy" }, "MyCertificate": { "Properties": { "CertificateId": { "Ref": "AWS::IoT::Certificate::Id" }, "Status": "Active" }, "Type": "AWS::IoT::Certificate" } } }
      注意

      MyThingMyPolicy、和MyCertificate是識別叢集佈建範本中每個資源規格的任意名稱。 AWS IoT不會在從範本建立的資源中使用這些名稱。您可以使用這些名稱,或將其取代為可協助您識別範本中每個資源的值。

    2. 從佈建範本文件建立叢集佈建範本。

      • 以要建立的範本名稱取GreengrassFleetProvisioningTemplate代。

      • 將範本描述取代為範本的描述。

      • 將佈建角色 ARN 取代為您先前建立之角色的 ARN。

      Linux or Unix
      aws iot create-provisioning-template \ --template-name GreengrassFleetProvisioningTemplate \ --description "A provisioning template for Greengrass core devices." \ --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" \ --template-body file://greengrass-fleet-provisioning-template.json \ --enabled
      Windows Command Prompt (CMD)
      aws iot create-provisioning-template ^ --template-name GreengrassFleetProvisioningTemplate ^ --description "A provisioning template for Greengrass core devices." ^ --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" ^ --template-body file://greengrass-fleet-provisioning-template.json ^ --enabled
      PowerShell
      aws iot create-provisioning-template ` --template-name GreengrassFleetProvisioningTemplate ` --description "A provisioning template for Greengrass core devices." ` --provisioning-role-arn "arn:aws:iam::123456789012:role/GreengrassFleetProvisioningRole" ` --template-body file://greengrass-fleet-provisioning-template.json ` --enabled
      注意

      如果您已建立預先佈建勾點,請使用引數指定預先佈建勾點的 Lambda 函數的 ARN。--pre-provisioning-hook

      --pre-provisioning-hook targetArn=arn:aws:lambda:us-west-2:123456789012:function:GreengrassPreProvisioningHook

      如果要求成功,回應看起來類似下列範例。

      { "templateArn": "arn:aws:iot:us-west-2:123456789012:provisioningtemplate/GreengrassFleetProvisioningTemplate", "templateName": "GreengrassFleetProvisioningTemplate", "defaultVersionId": 1 }

建立佈建宣告憑證和私密金鑰

宣告憑證是 X.509 憑證,可讓裝置登錄為AWS IoT物件,並擷取用於一般作業的唯一 X.509 裝置憑證。建立宣告憑證之後,您會附加AWS IoT原則,讓裝置可以使用它來建立唯一的裝置憑證,並使用叢集佈建範本進行佈建。具有宣告憑證的裝置只能使用您在AWS IoT原則中允許的佈建範本進行佈建。

在本節中,您會建立宣告憑證,並將其設定為與您在上一節中建立的叢集佈建範本搭配使用的裝置。

重要

佈建宣告私密金鑰應始終受到保護,包括在 Greengrass 核心裝置上。我們建議您使用 Amazon CloudWatch 指標和日誌來監控濫用的跡象,例如未經授權使用宣告憑證來佈建裝置。如果您偵測到誤用,請停用佈建宣告憑證,使其無法用於裝置佈建。如需詳細資訊,請參閱AWS IoT Core開發人員指南AWS IoT中的監控

為了協助您更有效地管理在您的裝置數目以及自行註冊的裝置數目AWS 帳戶,您可以在建立叢集佈建範本時指定預先佈建勾點。預先佈建勾點是一種AWS Lambda函數,可驗證裝置在註冊期間提供的範本參數。例如,您可以建立預先佈建勾點,以根據資料庫檢查裝置 ID,以確認裝置是否具有佈建權限。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的預先佈建勾點

若要建立佈建宣告憑證和私密金鑰
  1. 建立下載宣告憑證和私密金鑰的資料夾。

    mkdir claim-certs
  2. 建立並儲存用於佈建的憑證和私密金鑰。 AWS IoT提供由 Amazon 根憑證授權單位 (CA) 簽署的用戶端憑證。

    Linux or Unix
    aws iot create-keys-and-certificate \ --certificate-pem-outfile "claim-certs/claim.pem.crt" \ --public-key-outfile "claim-certs/claim.public.pem.key" \ --private-key-outfile "claim-certs/claim.private.pem.key" \ --set-as-active
    Windows Command Prompt (CMD)
    aws iot create-keys-and-certificate ^ --certificate-pem-outfile "claim-certs/claim.pem.crt" ^ --public-key-outfile "claim-certs/claim.public.pem.key" ^ --private-key-outfile "claim-certs/claim.private.pem.key" ^ --set-as-active
    PowerShell
    aws iot create-keys-and-certificate ` --certificate-pem-outfile "claim-certs/claim.pem.crt" ` --public-key-outfile "claim-certs/claim.public.pem.key" ` --private-key-outfile "claim-certs/claim.private.pem.key" ` --set-as-active

    如果要求成功,回應會包含有關憑證的資訊。儲存憑證的 ARN 以供稍後使用。

  3. 建立並附加AWS IoT原則,以允許裝置使用憑證建立唯一的裝置憑證,並使用叢集佈建範本進行佈建。下列原則允許存取裝置佈建 MQTT API。如需詳細資訊,請參閱AWS IoT Core開發人員指南中的裝置佈建 MQTT API

    請執行下列操作:

    1. 建立包含 Greengrass 核心裝置所需之AWS IoT原則文件的檔案。

      例如,在 Linux 系統上,您可以執行下列命令來使用 GNU nano 建立檔案。

      nano greengrass-provisioning-claim-iot-policy.json

      將下列 JSON 複製到檔案中。

      • 區域的每個執行個體取代為設定叢集佈建的AWS 區域位置。

      • 帳戶 ID 的每個實例替換為您AWS 帳戶的 ID

      • 將的每個執行GreengrassFleetProvisioningTemplate個體取代為您在上一節中建立的叢集佈建範本的名稱。

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:aws:iot:region:account-id:topic/$aws/certificates/create/*", "arn:aws:iot:region:account-id:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*" ] }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:aws:iot:region:account-id:topicfilter/$aws/certificates/create/*", "arn:aws:iot:region:account-id:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*" ] } ] }
    2. 從AWS IoT策略文件建立策略。

      • 以要建立的策略名稱取GreengrassProvisioningClaimPolicy代。

      aws iot create-policy --policy-name GreengrassProvisioningClaimPolicy --policy-document file://greengrass-provisioning-claim-iot-policy.json

      如果要求成功,回應看起來類似下列範例。

      { "policyName": "GreengrassProvisioningClaimPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassProvisioningClaimPolicy", "policyDocument": "{ \"Version\": \"2012-10-17\", \"Statement\": [ { \"Effect\": \"Allow\", \"Action\": \"iot:Connect\", \"Resource\": \"*\" }, { \"Effect\": \"Allow\", \"Action\": [ \"iot:Publish\", \"iot:Receive\" ], \"Resource\": [ \"arn:aws:iot:region:account-id:topic/$aws/certificates/create/*\", \"arn:aws:iot:region:account-id:topic/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*\" ] }, { \"Effect\": \"Allow\", \"Action\": \"iot:Subscribe\", \"Resource\": [ \"arn:aws:iot:region:account-id:topicfilter/$aws/certificates/create/*\", \"arn:aws:iot:region:account-id:topicfilter/$aws/provisioning-templates/GreengrassFleetProvisioningTemplate/provision/*\" ] } ] }", "policyVersionId": "1" }
  4. 將AWS IoT原則附加至佈建宣告憑證。

    • 以要附加的策略名稱取GreengrassProvisioningClaimPolicy代。

    • 將目標 ARN 取代為佈建宣告憑證的 ARN。

    aws iot attach-policy --policy-name GreengrassProvisioningClaimPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

    如果請求成功,命令沒有任何輸出。

您現在擁有佈建宣告憑證和私密金鑰,裝置可用來註冊AWS IoT並佈建為 Greengrass 核心裝置。您可以在製造過程中將宣告憑證和私密金鑰嵌入裝置,或在安裝 AWS IoT Greengrass Core 軟體之前將憑證和金鑰複製到裝置。如需更多詳細資訊,請參閱 透過 AWS IoT 叢集佈建安裝 AWS IoT Greengrass 核心軟體