运行 AWS IoT Greengrass 资格套件的先决条件 - AWS IoT Greengrass
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

运行 AWS IoT Greengrass 资格套件的先决条件

本节介绍使用适用于 AWS IoT AWS IoT Greengrass IoT Device Tester (IDT) 的先决条件。

下载适用于的适用于 AWS IoT Greengrass 的最新版本的 AWS IoT Device Tester

下载最新版本,然后将软件解压到一个位置(<device-tester-extract-location>),您具有读取/写入权限的文件系统中。

注意

IDT 不支持由多个用户从共享位置(如 NFS 目录或 Windows 网络共享文件夹)运行。建议您将 IDT 包解压缩到本地驱动器,并在本地工作站上运行 IDT 二进制文件。

Windows 的路径长度限制为 260 个字符。如果您使用的是 Windows,请将 IDT 提取到根目录(如 C:\ D:\)以使路径长度不超过 260 个字符的限制。

下载 AWS IoT Greengrass 软件

适用于的 IDT 适用于的 Greengrass 将测试设备是否与特定版本的 AWS IoT Greengrass 的兼容。运行以下命令,将 AWS IoT Greengrass 核心软件下载到名为aws.greengrass.nucleus.zip。Replace version 使用支持的核心组件版本为 IDT 版本。

curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip > aws.greengrass.nucleus.zip

将下载的aws.greengrass.nucleus.zip文件中的<device-tester-extract-location>/products/folder。

注意

对于相同的操作系统和架构,请勿在此目录中放置多个文件。

创建和配置 AWS 账户

您必须执行以下步骤,然后才能使用适用于 AWS IoT 绿色草的 AWS IoT 设备测试程序:

  1. 设置 AWS 账户。 如果您已有一个 AWS 账户,请跳至步骤 2。

  2. 为 IDT 配置权限。

这些账户权限允许 IDT 代表您访问 AWS 服务和创建 AWS 资源,例如 AWS IoT 事物和 AWS IoT Greengrass 组件。

为了创建这些资源,适用于的 IDT 适用于 AWS IoT Greengrass 使用在config.json文件来代表您进行 API 调用。这些资源将在测试过程的不同时间进行预置。

注意

尽管大多数测试都符合 AWS 免费套餐的要求,但您在注册 AWS 账户时必须提供信用卡。有关更多信息,请参阅我的账户使用的是免费套餐,为什么还需要提供付款方式?

步骤 1: 设置 AWS 账户

在此步骤中,将创建并配置 AWS 账户。如果您已有 AWS 账户,请跳到步骤 2: 为 IDT 配置权限

如果您还没有 AWS 账户,请完成以下步骤创建一个账户。

注册 AWS 账户

  1. 打开 https://portal.aws.amazon.com/billing/signup

  2. 按照屏幕上的说明进行操作。

    在注册时,您将接到一通电话,要求您使用电话键盘输入一个验证码。

自行创建管理员用户并将该用户添加到管理员组(控制台)

  1. 登录到IAM 控制台作为帐户所有者,方法是选择根用户并输入您的 AWS 账户电子邮件地址。在下一页上,输入您的密码。

    注意

    强烈建议您遵守使用Administrator跟随并安全锁定根用户凭证的 IAM 用户。只在执行少数账户和服务管理任务时才作为根用户登录。

  2. 在导航窗格中,选择用户,然后选择添加用户

  3. 对于 User name (用户名),输入 Administrator

  4. 选中 AWS Management Console access (AWS 管理控制台访问) 旁边的复选框。然后选择自定义密码,并在文本框中输入新密码。

  5. (可选)默认情况下,AWS 要求新用户在首次登录时创建新密码。您可以清除 User must create a new password at next sign-in (用户必须在下次登录时创建新密码) 旁边的复选框以允许新用户在登录后重置其密码。

  6. 选择后续:权限。

  7. 设置权限下,选择将用户添加到组

  8. 选择创建组

  9. Create group (创建组) 对话框中,对于 Group name (组名称),输入 Administrators

  10. 选择筛选策略,然后选择AWS 托管-工作职能来过滤表格内容。

  11. 在策略列表中,选中 AdministratorAccess 的复选框。然后选择 Create group (创建组)

    注意

    您必须先激活 IAM 用户和角色对账单的访问权限,然后才能使用 AdministratorAccess 权限访问 AWS 账单和成本管理控制台。为此,请按照“向账单控制台委派访问权限”教程第 1 步中的说明进行操作。

  12. 返回到组列表中,选中您的新组所对应的复选框。如有必要,选择 Refresh 以在列表中查看该组。

  13. 选择后续:Tags

  14. (可选)通过以键值对的形式附加标签来向用户添加元数据。有关在 IAM 中使用标签的更多信息,请参阅标记 IAM 实体中的IAM 用户指南

  15. 选择后续:审核以查看要添加到新用户的组成员资格的列表。如果您已准备好继续,请选择 Create user

您可使用此相同的流程创建更多的组和用户,并允许您的用户访问 AWS 账户资源。要了解有关使用策略限制用户对特定 AWS 资源的权限的信息,请参阅访问管理示例策略

步骤 2: 为 IDT 配置权限

在此步骤中,配置适用于的适用于 AWS IoT Greengrass 的 IDT 运行测试和收集 IDT 使用情况数据所需的权限。您可以使用AWS 管理控制台或者AWS 命令行界面 (AWS CLI)为 IDT 创建 IAM 策略和测试用户,然后将策略附加到用户。如果您已经为 IDT 创建了测试用户,请跳转至配置设备以运行 IDT 测试

  1. 登录 IAM 控制台

  2. 创建客户托管策略,该策略授权创建具有特定权限的角色。

    1. 在导航窗格中选择 Policies,然后选择 Create policy

    2. JSON 选项卡中,将占位符内容替换为以下策略。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/idt-*", "Condition": { "StringEquals": { "iam:PassedToService": [ "iot.amazonaws.com", "lambda.amazonaws.com", "greengrass.amazonaws.com" ] } } }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:PublishVersion", "iot:DeleteCertificate", "lambda:DeleteFunction", "lambda:GetFunction", "execute-api:Invoke", "iot:UpdateCertificate" ], "Resource": [ "arn:aws:execute-api:us-east-1:098862408343:9xpmnvs5h4/prod/POST/metrics", "arn:aws:lambda:*:*:function:idt-*", "arn:aws:iot:*:*:cert/*" ] }, { "Sid": "VisualEditor3", "Effect": "Allow", "Action": [ "iot:CreateThing", "iot:DeleteThing" ], "Resource": [ "arn:aws:iot:*:*:thing/idt-*", "arn:aws:iot:*:*:cert/*" ] }, { "Sid": "VisualEditor4", "Effect": "Allow", "Action": [ "iot:AttachPolicy", "iot:DetachPolicy", "iot:DeletePolicy" ], "Resource": [ "arn:aws:iot:*:*:policy/idt-*", "arn:aws:iot:*:*:cert/*" ] }, { "Sid": "VisualEditor5", "Effect": "Allow", "Action": [ "iot:CreateJob", "iot:DescribeJob", "iot:DescribeJobExecution", "iot:ListJobs*", "iot:DeleteJob" ], "Resource": [ "arn:aws:iot:*:*:thing/idt-*", "arn:aws:iot:*:*:job/*", "arn:aws:iot:*:*:thinggroup/*" ] }, { "Sid": "VisualEditor6", "Effect": "Allow", "Action": [ "iot:DescribeEndpoint", "greengrass:*", "iam:ListAttachedRolePolicies", "iam:CreateRole", "iam:CreatePolicy", "iam:ListPolicies", "iam:ListRolePolicies", "iam:AttachRolePolicy", "iam:GetRole", "iam:PassRole", "iam:DeleteRole", "iam:DeletePolicy", "iam:DetachRolePolicy", "iot:CreateRoleAlias", "iot:DescribeThingGroup", "iot:CreateThingGroup", "iot:AddThingToThingGroup", "iot:AttachPolicy", "iot:CreateThing", "iot:DescribeRoleAlias", "iot:DescribeEndpoint", "iot:DeleteThing", "iot:DeleteThingGroup", "iot:DeleteRoleAlias", "iot:DeletePolicy", "iot:DetachPolicy", "iot:DetachThingPrincipal", "iot:RemoveThingFromThingGroup", "iot:UpdateCertificate", "iot:DescribeThing", "iot:DeleteCertificate", "iot:CreatePolicy", "iot:GetPolicy", "iot:GetThingShadow", "iot:CreateKeysAndCertificate", "iot:ListThings", "iot:UpdateThingShadow", "iot:Publish", "iot:CreateCertificateFromCsr", "iot-device-tester:SendMetrics", "iot-device-tester:SupportedVersion", "iot-device-tester:LatestIdt", "iot-device-tester:CheckVersion", "iot-device-tester:DownloadTestSuite" ], "Resource": "*" }, { "Sid": "VisualEditor7", "Effect": "Allow", "Action": [ "iot:DetachThingPrincipal", "iot:AttachThingPrincipal" ], "Resource": [ "arn:aws:iot:*:*:thing/idt-*", "arn:aws:iot:*:*:cert/*" ] }, { "Sid": "VisualEditor8", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:DeleteObjectVersion", "s3:ListBucketVersions", "s3:CreateBucket", "s3:DeleteObject", "s3:DeleteBucket", "s3:GetObject" ], "Resource": "arn:aws:s3:::idt*" }, { "Sid": "VisualEditor9", "Effect": "Allow", "Action": [ "iot:CreateThingGroup", "iot:AddThingToThingGroup", "iot:DescribeThingGroup" ], "Resource": "arn:aws:iot:*:*:thinggroup/*" }, { "Sid": "VisualEditor10", "Effect": "Allow", "Action": [ "iot:AddThingToThingGroup" ], "Resource": "arn:aws:iot:*:*:thing/idt-*" }, { "Sid": "VisualEditor11", "Effect": "Allow", "Action": [ "iot:DescribeRoleAlias" ], "Resource": "arn:aws:iot:*:*:rolealias/*" } ] }
    3. 选择查看策略

    4. 对于名称,请输入 IDTGreengrassIAMPermissions。在 Summary (摘要) 下,查看策略授予的权限。

    5. 选择 Create policy

  3. 创建 IAM 用户并附加适用于 AWS IoT Greengrass 的 IDT 所需的权限。

    1. 创建 IAM 用户。按照中的步骤 1 到 5 操作创建 IAM 用户(控制台)中的IAM 用户指南

    2. 将权限附加到您的 IAM 用户:

      1. Set permissions (设置权限) 页面上,选择 Attach existing policies to user directly (直接附加现有策略到用户)

      2. 搜索您在上一步中创建的 IDTGreengrassIAMPermissions 策略。选中复选框。

    3. 选择后续:Tags

    4. 选择后续:审核查看您的选择摘要。

    5. 选择 Create user

    6. 要查看用户的访问密钥(访问密钥 ID 和秘密访问密钥),请选择密码和访问密钥旁边的 Show (显示)。要保存访问密钥,请选择Download.csv (下载 .csv),然后将文件保存到安全位置。稍后您可以使用此信息配置 AWS 凭证文件。

  4. 下一步: 配置物理设备

  1. 在您的计算机上,安装并配置 AWS CLI(如果尚未安装)。按中的步骤操作。安装 AWS CLI中的AWS 命令行界面用户指南

    注意

    AWS CLI 是一种开源工具,您可以使用此工具通过命令行 Shell 与 AWS 服务进行交互。

  2. 创建用于授予管理 IDT 和 AWS IoT Greengrass 角色的权限的客户托管策略。

    1. 打开文本编辑器并将以下策略内容保存到 JSON 文件中。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/idt-*", "Condition": { "StringEquals": { "iam:PassedToService": [ "iot.amazonaws.com", "lambda.amazonaws.com", "greengrass.amazonaws.com" ] } } }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:PublishVersion", "iot:DeleteCertificate", "lambda:DeleteFunction", "lambda:GetFunction", "execute-api:Invoke", "iot:UpdateCertificate" ], "Resource": [ "arn:aws:execute-api:us-east-1:098862408343:9xpmnvs5h4/prod/POST/metrics", "arn:aws:lambda:*:*:function:idt-*", "arn:aws:iot:*:*:cert/*" ] }, { "Sid": "VisualEditor3", "Effect": "Allow", "Action": [ "iot:CreateThing", "iot:DeleteThing" ], "Resource": [ "arn:aws:iot:*:*:thing/idt-*", "arn:aws:iot:*:*:cert/*" ] }, { "Sid": "VisualEditor4", "Effect": "Allow", "Action": [ "iot:AttachPolicy", "iot:DetachPolicy", "iot:DeletePolicy" ], "Resource": [ "arn:aws:iot:*:*:policy/idt-*", "arn:aws:iot:*:*:cert/*" ] }, { "Sid": "VisualEditor5", "Effect": "Allow", "Action": [ "iot:CreateJob", "iot:DescribeJob", "iot:DescribeJobExecution", "iot:ListJobs*", "iot:DeleteJob" ], "Resource": [ "arn:aws:iot:*:*:thing/idt-*", "arn:aws:iot:*:*:job/*", "arn:aws:iot:*:*:thinggroup/*" ] }, { "Sid": "VisualEditor6", "Effect": "Allow", "Action": [ "iot:DescribeEndpoint", "greengrass:*", "iam:ListAttachedRolePolicies", "iam:CreateRole", "iam:CreatePolicy", "iam:ListPolicies", "iam:ListRolePolicies", "iam:AttachRolePolicy", "iam:GetRole", "iam:PassRole", "iam:DeleteRole", "iam:DeletePolicy", "iam:DetachRolePolicy", "iot:CreateRoleAlias", "iot:DescribeThingGroup", "iot:CreateThingGroup", "iot:AddThingToThingGroup", "iot:AttachPolicy", "iot:CreateThing", "iot:DescribeRoleAlias", "iot:DescribeEndpoint", "iot:DeleteThing", "iot:DeleteThingGroup", "iot:DeleteRoleAlias", "iot:DeletePolicy", "iot:DetachPolicy", "iot:DetachThingPrincipal", "iot:RemoveThingFromThingGroup", "iot:UpdateCertificate", "iot:DescribeThing", "iot:DeleteCertificate", "iot:CreatePolicy", "iot:GetPolicy", "iot:GetThingShadow", "iot:CreateKeysAndCertificate", "iot:ListThings", "iot:UpdateThingShadow", "iot:Publish", "iot:CreateCertificateFromCsr", "iot-device-tester:SendMetrics", "iot-device-tester:SupportedVersion", "iot-device-tester:LatestIdt", "iot-device-tester:CheckVersion", "iot-device-tester:DownloadTestSuite" ], "Resource": "*" }, { "Sid": "VisualEditor7", "Effect": "Allow", "Action": [ "iot:DetachThingPrincipal", "iot:AttachThingPrincipal" ], "Resource": [ "arn:aws:iot:*:*:thing/idt-*", "arn:aws:iot:*:*:cert/*" ] }, { "Sid": "VisualEditor8", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:DeleteObjectVersion", "s3:ListBucketVersions", "s3:CreateBucket", "s3:DeleteObject", "s3:DeleteBucket", "s3:GetObject" ], "Resource": "arn:aws:s3:::idt*" }, { "Sid": "VisualEditor9", "Effect": "Allow", "Action": [ "iot:CreateThingGroup", "iot:AddThingToThingGroup", "iot:DescribeThingGroup" ], "Resource": "arn:aws:iot:*:*:thinggroup/*" }, { "Sid": "VisualEditor10", "Effect": "Allow", "Action": [ "iot:AddThingToThingGroup" ], "Resource": "arn:aws:iot:*:*:thing/idt-*" }, { "Sid": "VisualEditor11", "Effect": "Allow", "Action": [ "iot:DescribeRoleAlias" ], "Resource": "arn:aws:iot:*:*:rolealias/*" } ] }
    2. 运行以下命令以创建名为的客户托管策略IDTGreengrassIAMPermissions。Replacepolicy.json使用您在上一步中创建的 JSON 文件的完整路径。

      aws iam create-policy --policy-name IDTGreengrassIAMPermissions --policy-document file://policy.json
  3. 创建 IAM 用户并附加适用于 AWS IoT Greengrass 的 IDT 所需的权限。

    1. 创建 IAM 用户。在此示例设置中,用户被命名为 IDTGreengrassUser

      aws iam create-user --user-name IDTGreengrassUser
    2. 将附加到IDTGreengrassIAMPermissions策略提供给您的 IAM 用户。Replace <account-id> 将命令中的所有步骤与您的 AWS 账户 ID。

      aws iam attach-user-policy --user-name IDTGreengrassUser --policy-arn arn:aws:iam::<account-id>:policy/IDTGreengrassIAMPermissions
  4. 为用户创建私密访问密钥。

    aws iam create-access-key --user-name IDTGreengrassUser

    将输出存储在安全位置。稍后您可以使用此信息配置 AWS 凭证文件。

  5. 下一步: 配置物理设备