本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置 IDT 设置以运行 Amazon IoT Greengrass 资格套件
在运行测试之前,您必须在主机上配置 Amazon 凭据和设备的设置。
在 config.json 中配置 Amazon 凭据
您必须在
文件中配置 IAM 用户凭证。使用中创建的 Amazon IoT Greengrass V2 版 IDT 用户的凭证。创建和配置 Amazon Web Services 账户您可以采用以下两种方法之一来指定凭证:<device_tester_extract_location>
/configs/config.json
-
在凭证文件中
-
作为环境变量
IDT 使用与 Amazon CLI相同的凭证文件。有关更多信息,请参阅配置和凭证文件。
凭证文件的位置因您使用的操作系统而异:
-
macOS、Linux:
~/.aws/credentials
-
Windows:
C:\Users\
UserName
\.aws\credentials
按以下格式将您的 Amazon 凭证添加到credentials
文件中:
[default] aws_access_key_id =
<your_access_key_id>
aws_secret_access_key =<your_secret_access_key>
要将 IDT f Amazon IoT Greengrass or V2 配置为使用credentials
文件中的 Amazon 凭据,请按如下方式编辑您的config.json
文件:
{ "awsRegion": "
region
", "auth": { "method": "file", "credentials": { "profile": "default" } } }
注意
如果您不使用default
Amazon 配置文件,请务必更改文件中的配置config.json
文件名称。有关更多信息,请参阅命名配置文件。
环境变量是由操作系统维护且由系统命令使用的变量。如果您关闭 SSH 会话,则不会保存它们。适用于 Amazon IoT Greengrass V2 的 IDT 可以使用AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
环境变量来存储您的 Amazon 证书。
要在 Linux、macOS 或 Unix 上设置这些变量,请使用 export:
export AWS_ACCESS_KEY_ID=
<your_access_key_id>
export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
要在 Windows 上设置这些变量,请使用 set:
set AWS_ACCESS_KEY_ID=
<your_access_key_id>
set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
要配置 IDT 以使用环境变量,请编辑 config.json
文件中的 auth
部分。示例如下:
{ "awsRegion": "
region
", "auth": { "method": "environment" } }
配置 device.json
注意
IDT v4.9.3 支持测试ml
、docker
和功能。streamManagement
IDT v4.9.4 及更高版本支持测试。docker
如果您不想测试这些功能,请将相应的值设置为no
。
除了 Amazon 凭证外,IDT fo Amazon IoT Greengrass r V2 还需要有关运行测试的设备的信息。示例信息包括 IP 地址、登录信息、操作系统和 CPU 架构。
您必须使用位于
中的
<device_tester_extract_location>
/configs/device.jsondevice.json
模板提供此信息:
配置 userdata.json
IDT fo Amazon IoT Greengrass r V2 还需要有关测试工件和 Amazon IoT Greengrass 软件位置的更多信息。
您必须使用位于
中的
<device_tester_extract_location>
/configs/userdata.jsonuserdata.json
模板提供此信息:
{ "TempResourcesDirOnDevice": "
/path/to/temp/folder
", "InstallationDirRootOnDevice": "/path/to/installation/folder
", "GreengrassNucleusZip": "/path/to/aws.greengrass.nucleus.zip
", "PreInstalled": "yes/no
", "GreengrassV2TokenExchangeRole": "custom-iam-role-name
", "hsm": { "greengrassPkcsPluginJar": "/path/to
/aws.greengrass.crypto.Pkcs11Provider-latest.jar", "pkcs11ProviderLibrary": "/path/to/pkcs11-vendor-library
", "slotId": "slot-id
", "slotLabel": "slot-label
", "slotUserPin": "slot-pin
", "keyLabel": "key-label
", "preloadedCertificateArn": "certificate-arn
" "rootCA": "path/to/root-ca
" } }
所有包含值的属性都是必需的,如下所述:
TempResourcesDirOnDevice
-
被测设备上用于存储测试工件的临时文件夹的完整路径。确保不需要 sudo 权限即可写入此目录。
注意
IDT 在完成测试运行后会删除该文件夹的内容。
InstallationDirRootOnDevice
-
设备上要安装的文件夹的完整路径 Amazon IoT Greengrass。对于 PreInstalled Greengrass 来说,这是 Greengrass 安装目录的路径。
您必须为此文件夹设置所需的文件权限。对安装路径中的每个文件夹运行以下命令。
sudo chmod 755
folder-name
GreengrassNucleusZip
-
主机上 Greengrass nucleus ZIP
greengrass-nucleus-latest.zip
() 文件的完整路径。使用 PreInstalled Greengrass 进行测试时不需要此字段。注意
有关适用于 IDT 的 Greengrass nucleus 支持版本的信息,请参阅。 Amazon IoT Greengrass适用 Amazon IoT Greengrass 于 V2 的最新 IDT 版本要下载最新的 Greengrass 软件,请参阅下载该软件。 Amazon IoT Greengrass
PreInstalled
-
此功能仅适用于 Linux 设备上的 IDT v4.5.8 及更高版本。
(可选)当值为 “
是
” 时,IDT 将假定中提到的路径是InstallationDirRootOnDevice
安装 Greengrass 的目录。有关如何在您的设备上安装 Greengrass 的更多信息,请参阅。安装具有自动资源配置功能的 Amazon IoT Greengrass Core 软件如果使用手动配置进行安装,请在手动创建 Amazon IoT 事物时包含 “将事物添加到新的或现有Amazon IoT 的事物组” 步骤。IDT 假设事物和事物组是在安装设置期间创建的。确保这些值反映在
effectiveConfig.yaml
文件中。IDT 正在检查effectiveConfig.yaml
下<InstallationDirRootOnDevice>/config/effectiveConfig.yaml
方的文件。要使用 HSM 运行测试,请确保在中
effectiveConfig.yaml
更新了该aws.greengrass.crypto.Pkcs11Provider
字段。 -
GreengrassV2TokenExchangeRole
-
(可选)您要用作被测设备假定与 Amazon 资源交互的令牌交换角色的自定义 IAM 角色。
注意
IDT 使用此自定义 IAM 角色,而不是在测试运行期间创建默认的令牌交换角色。如果您使用自定义角色,则可以更新测试用户的 IAM 权限,以排除允许该用户创建和删除 IAM 角色和策略的
iamResourcesUpdate
语句。有关创建自定义 IAM 角色作为令牌交换角色的更多信息,请参阅配置自定义令牌交换角色。
hsm
-
此功能适用于 IDT v4.5.1 及更高版本。
(可选)用于使用 Amazon IoT Greengrass 硬件安全模块 (HSM) 进行测试的配置信息。否则,应忽略
hsm
属性。有关更多信息,请参阅 硬件安全性集成。此属性仅在
connectivity.protocol
设置为ssh
时适用。警告
如果硬件安全模块在 IDT 与其他系统之间共享,则 HSM 配置可能被视为敏感数据。在这种情况下,您可以通过将这些配置值存储在 Paramet Amazon er Stor SecureString e 参数中并配置 IDT 使其在测试执行期间获取它们,从而避免以明文形式保护这些配置值。有关更多信息,请参阅 从 Amazon 参数存储中获取配置。
hsm.greengrassPkcsPluginJar
-
您下载到 IDT 主机的 PKCS #11 提供程序组件的完整路径。 Amazon IoT Greengrass 将此组件作为 JAR 文件提供,您可以下载该文件以在安装过程中将其指定为预配插件。您可以通过以下 URL 下载该组件 JAR 文件的最新版本:https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar
。 hsm.pkcs11ProviderLibrary
-
PKCS #11 库的完整路径,该库由硬件安全模块 (HSM) 供应商提供,用于与 HSM 交互。
hsm.slotId
-
用于识别要加载密钥和证书的 HSM 插槽的插槽 ID。
hsm.slotLabel
-
用于识别要加载密钥和证书的 HSM 插槽的插槽标签。
hsm.slotUserPin
-
IDT 用来向 HSM 验证 Amazon IoT Greengrass 核心软件的用户 PIN。
注意
作为安全最佳实践,请勿在生产设备上使用相同的用户 PIN。
hsm.keyLabel
-
用于标识硬件模块中的键的标签。密钥和证书必须使用相同的密钥标签。
hsm.preloadedCertificateArn
-
云端上传的设备证书的亚马逊资源名称 (ARN)。 Amazon IoT
您之前必须使用 HSM 中的密钥生成此证书,将其导入您的 HSM,然后将其上传到云端。 Amazon IoT 有关生成和导入证书的信息,请参阅您的 HSM 文档。
您必须将证书上传到您在 config.js on 中提供的相同账户和区域。 。有关将证书上传到的更多信息 Amazon IoT,请参阅《Amazon IoT 开发人员指南》中的手动注册客户端证书。
hsm.rootCAPath
-
(可选)IDT 主机上指向签署证书的根证书颁发机构 (CA) 的完整路径。如果您在 HSM 中创建的证书不是由 Amazon 根 CA 签名的,则需要这样做。
从 Amazon 参数存储中获取配置
Amazon IoT 设备测试器 (IDT) 包含一项可选功能,用于从 S Amazon ystems Manager 参数存储区获取配置值。 Amazon Parameter Store 允许对配置进行安全和加密的存储。配置后,IDT 可以从 Paramet Amazon er Store 获取参数,而不是将参数以纯文本形式存储在文件中。userdata.json
这对于任何应加密存储的敏感数据都很有用,例如:密码、PIN 和其他机密。
-
要使用此功能,您必须更新创建 IDT 用户时使用的权限,以允许对 IDT 配置为使用的参数进行 GetParameter 操作。以下是可以添加到 IDT 用户的权限声明的示例。有关更多信息,请参阅Amazon Systems Manager 用户指南。
{ "Sid":"parameterStoreResources", "Effect": "Allow", "Action": [ "ssm:GetParameter" ], "Resource": "arn:aws:ssm:*:*:parameter/IDT*" }
上述权限配置为允许使用通配符获取名称以
IDT
开头的所有参数。*
您应该根据自己的需要对其进行自定义,以便 IDT 可以根据您正在使用的参数的命名来获取任何已配置的参数。 -
你需要将配置值存储在 P Amazon aramater Store 中。这可以通过 Amazon 控制台或 Amazon CLI 完成。 Amazon 参数存储允许您选择加密或未加密的存储。要存储机密、密码和 PIN 等敏感值,应使用加密选项,该选项的参数类型为 SecureString。要使用 Amazon CLI 上传参数,可以使用以下命令:
aws ssm put-parameter --name IDT-example-name --value IDT-example-value --type SecureString
您可以使用以下命令验证参数是否已存储。(可选)使用该
--with-decryption
标志获取解密后的参数。SecureStringaws ssm get-parameter --name IDT-example-name
使用 Amazon CLI 将上传当前 CLI 用户 Amazon 所在区域中的参数,IDT 将从中
config.json
配置的区域获取参数。要 Amazon 通过 CLI 查看您所在的地区,请使用以下命令:aws configure get region
-
在 Amazon 云端拥有配置值后,您可以更新 IDT 配置中的任何值以从 Amazon 云端获取。为此,您可以在表单
{{AWS.Parameter.parameter_name}}
的 IDT 配置中使用占位符从 Parameter Store 中按该名称获取 Amazon 参数。例如,假设您要在 HSM
IDT-example-name
配置中使用步骤 2 中的参数作为 HSM keyLabel。为此,您可以按userdata.json
如下方式更新您的:"hsm": { "keyLabel": "{{AWS.Parameter.IDT-example-name}}", [...] }
IDT 将在运行时获取步骤 2 中设置的此参数
IDT-example-value
的值。此配置与设置类似,"keyLabel": "IDT-example-value"
但相反,该值以加密形式存储在 Amazon 云中。