本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置 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
除了Amazon凭证外,IDT fo Amazon IoT Greengrass r V2 还需要有关运行测试的设备的信息。示例信息包括 IP 地址、登录信息、操作系统和 CPU 架构。
您必须使用位于
中的
<device_tester_extract_location>
/configs/device.jsondevice.json
模板提供此信息:
[ { "id": "
<pool-id>
", "sku": "<sku>
", "features": [ { "name": "arch", "value": "x86_64 | armv6l | armv7l | aarch64" }, { "name": "ml", "value": "dlr | tensorflowlite | dlr,tensorflowlite | no" }, { "name": "docker", "value": "yes | no" }, { "name": "streamManagement", "value": "yes | no" }, { "name": "hsi", "value": "hsm | no" } ], "devices": [ { "id": "<device-id>
", "operatingSystem": "Linux | Windows", "connectivity": { "protocol": "ssh", "ip": "<ip-address>
", "port": 22, "publicKeyPath": "<public-key-path>
", "auth": { "method": "pki | password", "credentials": { "user": "<user-name>
", "privKeyPath": "/path/to/private/key
", "password": "<password>
" } } } } ] } ]
注意
只有当 method
设置为 pki
时才指定 privKeyPath
。
只有当 method
设置为 password
时才指定 password
。
所有包含值的属性都是必需的,如下所述:
id
-
一个用户定义的字母数字 ID,用于唯一地标识称作设备池的设备集合。属于池的设备必须具有相同的硬件。运行一组测试时,池中的设备将用于对工作负载进行并行化处理。多个设备用于运行不同测试。
sku
-
唯一标识所测试设备的字母数字值。该 SKU 用于跟踪符合条件的主板。
注意
如果您想在设备目录中列出您的Amazon Partner设备,则在此处指定的 SKU 必须与您在发布过程中使用的 SKU 相匹配。
features
-
包含设备支持的功能的数组。所有功能都是必需的。
arch
-
测试运行验证的支持的操作系统架构。有效值为:
-
x86_64
-
armv6l
-
armv7l
-
aarch64
-
ml
-
验证设备是否满足使用Amazon提供的机器学习 (ML) 组件所需的所有技术依赖项。
启用此功能还可以验证设备是否可以使用深度学习运行时和 TensorFlow Lite
ML 框架执行机器学习 推理。 有效值是
dlr
和tensorflowlite
、或的任意组合no
。 docker
-
验证设备是否满足使用Amazon提供的 Docker 应用程序管理器 ()
aws.greengrass.DockerApplicationManager
组件所需的所有技术依赖项。启用此功能还可以验证设备是否可以从 Amazon ECR 下载 Docker 容器映像。
有效值是
yes
或的任意组合no
。 streamManagement
-
验证设备是否可以下载、安装和运行Amazon IoT Greengrass直播管理器。
有效值是
yes
或的任意组合no
。 hsi
-
验证设备是否可以使用存储在硬件安全模块 (HSM) 中的私钥和证书对与和Amazon IoT Greengrass服务的连接进行身份验证。Amazon IoT该测试还验证了提供的 PKCS #11 Amazon 提供者组件是否可以使用供应商提供的 PKCS #11 库与 HSM 接口。有关更多信息,请参阅 硬件安全性集成。
有效值为
hsm
或no
。
注意
IDT v4.2.0 及更高版本支持测试
ml
docker
、和功能。streamManagement
如果您不想测试这些功能,请将相应的值设置为no
。注意
测试
hsi
仅在 IDT v4.5.1 及更高版本中可用。 devices.id
-
用户定义的测试的设备的唯一标识符。
devices.operatingSystem
-
设备操作系统。支持的值为
Linux
和Windows
。 connectivity.protocol
-
用于与此设备通信的通信协议。当前,唯一支持的值
ssh
适用于物理设备。 connectivity.ip
-
测试的设备 IP 地址。
此属性仅在
connectivity.protocol
设置为ssh
时适用。 connectivity.port
-
可选。用于 SSH 连接的端口号。
默认值为 22。
此属性仅在
connectivity.protocol
设置为ssh
时适用。 connectivity.publicKeyPath
-
可选。用于验证待测设备连接的公有密钥的完整路径。
如果指定
publicKeyPath
,IDT 会在与待测设备建立 SSH 连接时验证设备的公有密钥。如果未指定此值,IDT 将创建 SSH 连接,但不验证设备的公有密钥。我们强烈建议您指定公有密钥的路径,并使用安全的方法来获取此公有密钥。对于基于标准命令行的 SSH 客户端,
known_hosts
文件中提供了公有密钥。如果您指定单独的公有密钥文件,则该文件必须使用与known_hosts
文件相同的格式,即ip-address
key-type
public-key
connectivity.auth
-
连接的身份验证信息。
此属性仅在
connectivity.protocol
设置为ssh
时适用。connectivity.auth.method
-
用于通过给定的连接协议访问设备的身份验证方法。
支持的值为:
-
pki
-
password
-
connectivity.auth.credentials
-
用于身份验证的凭证。
connectivity.auth.credentials.password
-
该密码用于登录到正在测试的设备。
此值仅在
connectivity.auth.method
设置为password
时适用。 connectivity.auth.credentials.privKeyPath
-
用于登录所测试设备的私有密钥的完整路径。
此值仅在
connectivity.auth.method
设置为pki
时适用。 connectivity.auth.credentials.user
-
用于登录所测试设备的用户名。
配置 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 Amazonystems Manager 参数存储区获取配置值。 Amazon参数存储允许对配置进行安全和加密的存储。配置后,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云中。