为 Greengrass 核心Amazon IoT设备设置队列配置 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为 Greengrass 核心Amazon IoT设备设置队列配置

安装具有队列配置功能的 Amazon IoT Greengrass Core 软件,必须先在中设置以下资源Amazon Web Services 账户。这些资源使设备能够在 Greengrass 核心设备上注册Amazon IoT并作为 Greengrass 核心设备运行。只需按照本节中的步骤操作一次,即可在中创建和配置这些资源Amazon Web Services 账户。

  • 令牌交换 IAM 角色,核心设备使用该角色来授权对Amazon服务的调用。

  • 指向代币交换Amazon IoT角色的角色别名。

  • (可选)一项Amazon IoT策略,核心设备使用该策略来授权对Amazon IoT和Amazon IoT Greengrass服务的调用。此Amazon IoT策略必须iot:AssumeRoleWithCertificate允许指向令牌交换Amazon IoT角色的角色别名的权限。

    您可以对队列中的所有核心设备使用单一Amazon IoT策略,也可以配置队列配置模板为每台核心设备创建Amazon IoT策略。

  • Amazon IoT舰队配置模板。此模板必须指定以下内容:

    • Amazon IoT事物资源。您可以指定现有事物组列表,以便在每台设备联机时将组件部署到每台设备。

    • 一种Amazon IoT策略资源。此资源可以定义以下属性之一:

      • 现有Amazon IoT策略的名称。如果选择此选项,则根据此模板创建的核心设备将使用相同的Amazon IoT策略,并且您可以像队列一样管理它们的权限。

      • 一份Amazon IoT政策文件。如果选择此选项,则根据此模板创建的每台核心设备都使用唯一的Amazon IoT策略,并且您可以管理每台核心设备的权限。

    • Amazon IoT证书资源。此证书资源必须使用AWS::IoT::Certificate::Id参数将证书附加到核心设备。有关更多信息,请参阅《Amazon IoT开发人员指南》中的 J ust-in-time 配置

  • 队列Amazon IoT配置模板的配置声明证书和私钥。您可以在制造过程中将此证书和私钥嵌入到设备中,这样设备就可以在上线时自行注册和配置。

    重要

    供应声称私钥应始终受到保护,包括在 Greengrass 核心设备上。我们建议您使用 Amazon CloudWatch 指标和日志来监控是否存在滥用迹象,例如未经授权使用索赔证书来配置设备。如果您发现滥用,请禁用配置声明证书,使其无法用于设备配置。有关更多信息,请参阅 Amazon IoT Core 开发人员指南 中的 监控Amazon IoT

    为了帮助您更好地管理自己在您的设备中注册的设备数量和设备Amazon Web Services 账户,您可以在创建队列配置模板时指定预配置挂钩。预配置挂钩是一种验证设备在注册期间提供的模板参数的Amazon Lambda功能。例如,您可以创建一个预配置挂钩,根据数据库检查设备 ID,以验证设备是否有权进行置备。有关更多信息,请参阅《Amazon IoT Core开发人员指南》中的预置挂钩

  • 您附加到配置声明证书的Amazon IoT策略,允许设备注册和使用队列配置模板。

创建代币交换角色

Greengrass 核心设备使用 IAM 服务角色(称为令牌交换角色)来授权对服务的调用。Amazon设备使用Amazon IoT证书提供程序来获取此角色的临时Amazon证书,从而允许设备与 Amazon Logs 进行交互Amazon IoT、向 Amazon Logs 发送 CloudWatch 日志以及从 Amazon S3 下载自定义组件项目。有关更多信息,请参阅 授权核心设备与Amazon服务

您可以使用Amazon IoT角色别名为 Greengrass 核心设备配置令牌交换角色。角色别名允许您更改设备的令牌交换角色,但设备配置保持不变。有关更多信息,请参阅《Amazon IoT Core开发人员指南》中的授权直接调用Amazon服务

在本节中,您将创建一个令牌交换 IAM 角色和一个指向该Amazon IoT角色的角色别名。如果您已经设置了 Greengrass 核心设备,则可以使用其代币交换角色和角色别名,而不必创建新的代币交换角色和角色别名。

创建代币交换 IAM 角色
  1. 创建您的设备可用作令牌交换角色的 IAM 角色。执行以下操作:

    1. 创建包含令牌交换角色所需的信任策略文档的文件。

      例如,在基于 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. 使用信任策略文档创建令牌交换角色。

      • GreenGrassV2 TokenExchangeRole 替换为要创建的 IAM 角色的名称。

      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 策略。

      • GreenGrassV2 TokenExchangeRoleAccess 替换为要创建的 IAM 策略的名称。

      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 策略附加到令牌交换角色。

      • GreenGrassV2 替换为 IA TokenExchangeRole M 角色的名称。

      • 将策略 ARN 替换为您在上一步中创建的 IAM 策略的 ARN。

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

      如果请求成功,则该命令没有任何输出。

  2. 创建Amazon 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 角色传递给Amazon IoT。如果您在尝试创建角色别名时收到错误消息,请检查您的Amazon用户是否具有此权限。有关更多信息,请参阅《用户指南》中的授予Amazon Identity and Access Management用户向Amazon服务传递角色的权限

创建 Amazon IoT 策略

将设备注册为Amazon IoT事物后,该设备可以使用数字证书进行身份验证Amazon。该证书包含一个或多个Amazon IoT策略,这些策略定义了设备可以与证书一起使用的权限。这些策略允许设备与Amazon IoT和通信Amazon IoT Greengrass。

通过Amazon IoT队列配置,设备可以Amazon IoT连接到以创建和下载设备证书。在下一节中创建的队列配置模板中,您可以指定是将相同的Amazon IoT策略Amazon IoT附加到所有设备的证书,还是为每台设备创建新策略。

在本节中,您将创建一个Amazon IoT附加到所有设备证书的Amazon IoT策略。通过这种方法,您可以将所有设备的权限作为一个队列进行管理。如果您想为每台设备创建新Amazon IoT策略,则可以跳过本节,在定义队列模板时参考其中的策略。

创建 Amazon IoT策略
  • 创建Amazon IoT策略来定义您的 Greengrass 核心设备队列的Amazon IoT权限。以下策略允许访问所有 MQTT 主题和 Greengrass 操作,因此您的设备可以处理需要新 Greengrass 操作的自定义应用程序和未来的更改。此策略还允许该iot:AssumeRoleWithCertificate权限,允许您的设备使用您在上一节中创建的令牌交换角色。您可以根据自己的用例限制此政策。有关更多信息,请参阅 Amazon IoT Greengrass V2核心设备的最低Amazon IoT政策

    执行以下操作:

    1. 创建一个包含 Greengrass 核心设备所需的Amazon IoT策略文档的文件。

      例如,在基于 Linux 的系统上,你可以运行以下命令来使用 GNU nano 来创建文件。

      nano greengrass-v2-iot-policy.json

      将以下 JSON 复制到文件中。

      • iot:AssumeRoleWithCertificate资源替换为您在上一节中创建的Amazon 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. 根据Amazon IoT策略文档创建策略。

      • GreenGrassv2IoT 替换为要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" }

创建舰队配置模板

Amazon IoT舰队配置模板定义了如何配置Amazon IoT内容、策略和证书。要使用队列配置插件配置 Greengrass 核心设备,必须创建一个指定以下内容的模板:

  • Amazon IoT事物资源。您可以指定现有事物组列表,以便在每台设备联机时将组件部署到每台设备。

  • 一种Amazon IoT策略资源。此资源可以定义以下属性之一:

    • 现有Amazon IoT策略的名称。如果选择此选项,则根据此模板创建的核心设备将使用相同的Amazon IoT策略,并且您可以像队列一样管理它们的权限。

    • 一份Amazon IoT政策文件。如果选择此选项,则根据此模板创建的每台核心设备都使用唯一的Amazon IoT策略,并且您可以管理每台核心设备的权限。

  • Amazon IoT证书资源。此证书资源必须使用AWS::IoT::Certificate::Id参数将证书附加到核心设备。有关更多信息,请参阅《Amazon IoT开发人员指南》中的 J ust-in-time 配置

在模板中,您可以指定将Amazon IoT事物添加到现有事物组列表中。当核心设备首次连接到Amazon IoT Greengrass时,它会收到其所属的每个事物组的 Greengrass 部署。您可以使用事物组在每台设备上线后立即将最新的软件部署到每台设备上。有关更多信息,请参阅 将Amazon IoT Greengrass组件部署到设备

在配置设备Amazon Web Services 账户时,该Amazon IoT服务需要权限才能在您中创建和更新Amazon IoT资源。要授予Amazon IoT服务访问权限,您需要创建一个 IAM 角色并在创建模板时提供该角色。 Amazon IoT提供了托管策略 AWSIoTThingsRegistration,允许访问配置设备时Amazon IoT可能使用的所有权限。您可以使用此托管策略,也可以创建自定义策略,根据您的用例缩小托管策略中的权限范围。

在本节中,您将创建一个允许Amazon IoT为设备配置资源的 IAM 角色,并创建使用该 IAM 角色的队列配置模板。

创建舰队配置模板
  1. 创建一个 IAM 角色,该角色Amazon IoT可以代入在您的中配置资源Amazon Web Services 账户。执行以下操作:

    1. 创建一个包含允许Amazon 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 角色。

      • GreengrassFleetProvisioningRole替换为要创建的 IAM 角色的名称。

      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策略,该策略允许访问在配置设备时Amazon 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. (可选)创建预配置挂钩,该Amazon Lambda功能用于验证设备在注册期间提供的模板参数。您可以使用预配置挂钩来更好地控制您的Amazon Web Services 账户机载哪些设备以及有多少设备。有关更多信息,请参阅《Amazon IoT Core开发人员指南》中的预置挂钩

  3. 创建舰队配置模板。执行以下操作:

    1. 创建包含配置模板文档的文件。

      例如,在基于 Linux 的系统上,你可以运行以下命令来使用 GNU nano 来创建文件。

      nano greengrass-fleet-provisioning-template.json

      撰写配置模板文档。您可以从以下示例配置模板开始,该模板指定创建具有以下属性的Amazon IoT事物:

      • 事物的名称是您在ThingName模板参数中指定的值。

      • 事物是您在ThingGroupName模板参数中指定的事物组的成员。事物组必须存在于您的中Amazon Web Services 账户。

      • 事物的证书上GreengrassV2IoTThingPolicy附有名为的Amazon IoT策略。

      有关更多信息,请参阅《Amazon 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是任意名称,用于标识队列置备模板中的每个资源规范。 Amazon 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 证书,允许设备注册为Amazon IoT事物并检索用于常规操作的唯一 X.509 设备证书。创建索赔证书后,您可以附加一个Amazon IoT策略,允许设备使用该策略来创建唯一的设备证书并使用队列配置模板进行配置。拥有声明证书的设备只能使用您在Amazon IoT策略中允许的配置模板进行配置。

在本节中,您将创建申领证书并对其进行配置,以供设备与您在上一节中创建的队列配置模板一起使用。

重要

供应声称私钥应始终受到保护,包括在 Greengrass 核心设备上。我们建议您使用 Amazon CloudWatch 指标和日志来监控是否存在滥用迹象,例如未经授权使用索赔证书来配置设备。如果您发现滥用,请禁用配置声明证书,使其无法用于设备配置。有关更多信息,请参阅 Amazon IoT Core 开发人员指南 中的 监控Amazon IoT

为了帮助您更好地管理自己在您的设备中注册的设备数量和设备Amazon Web Services 账户,您可以在创建队列配置模板时指定预配置挂钩。预配置挂钩是一种验证设备在注册期间提供的模板参数的Amazon Lambda功能。例如,您可以创建一个预配置挂钩,根据数据库检查设备 ID,以验证设备是否有权进行置备。有关更多信息,请参阅《Amazon IoT Core开发人员指南》中的预置挂钩

创建置备申请证书和私钥
  1. 创建一个文件夹,用于下载索赔证书和私钥。

    mkdir claim-certs
  2. 创建并保存用于置备的证书和私钥。 Amazon 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. 创建并附加一项Amazon IoT策略,允许设备使用该证书创建唯一的设备证书,并使用队列配置模板进行配置。以下策略允许访问设备配置 MQTT API。有关更多信息,请参阅《Amazon IoT Core开发人员指南》中的设备配置 MQTT API

    执行以下操作:

    1. 创建一个包含 Greengrass 核心设备所需的Amazon IoT策略文档的文件。

      例如,在基于 Linux 的系统上,你可以运行以下命令来使用 GNU nano 来创建文件。

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

      将以下 JSON 复制到文件中。

      • 将每个区域实例替换为您设置队列配置Amazon Web Services 区域的实例。

      • 用您Amazon Web Services 账户的 ID 替换每个账户 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. 根据Amazon 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. 将Amazon IoT策略附加到置备声明证书。

    • GreengrassProvisioningClaimPolicy替换为要附加的策略的名称。

    • 将目标 ARN 替换为配置声明证书的 ARN。

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

    如果请求成功,则该命令没有任何输出。

现在,您有了配置声明证书和私钥,设备可以使用这些证书和私钥注册Amazon IoT并配置自己为 Greengrass 核心设备。您可以在制造过程中将索赔证书和私钥嵌入设备中,或者在安装 C Amazon IoT Greengrass ore 软件之前将证书和密钥复制到设备。有关更多信息,请参阅 安装具有 Amazon IoT 队列配置功能的 C Amazon IoT Greengrass ore 软件