多个 AWS 物联网设备
Multiple AWS IoT Devices
我正在创建一个需要将多个设备连接到 AWS IoT 的应用程序,但我注意到只有最后连接的设备保持连接状态。我看到我对所有设备都使用相同的证书,并且在为每个设备创建证书后问题就解决了,但事实证明这将是多个设备,并且逐个设备继续注册是没有效率的。我想知道是否有解决方案可以让多个设备同时保持连接到aws iot,而不必一个一个地注册证书。
本文主要来自:https://iot-device-management.workshop.aws/en/provisioning-options/bulk-provisioning.html.
上面的 link 还有其他选项(及时等...)。
创建批量事物注册任务
要创建批量注册任务,需要一个角色来授予访问输入文件的权限。此角色已由 CloudFormation 创建,并且角色名称已在研讨会设置期间复制到 shell 变量 $ARN_IOT_PROVISIONING_ROLE.
aws iot start-thing-registration-task \
--template-body file://~/templateBody.json \
--input-file-bucket $S3_BUCKET \
--input-file-key bulk.json --role-arn $ARN_IOT_PROVISIONING_ROLE
当命令成功时returns一个taskId。输出类似于:
{
"taskId": "aaaf0a94-b5a9-4bd6-a1f5-cf188322a111"}
配置模板
https://docs.aws.amazon.com/iot/latest/developerguide/provision-template.html
配置模板是一个 JSON 文档,它使用参数来描述您的设备与 AWS IoT 交互所必须使用的资源。模板包含两个部分:参数和资源。 AWS IoT 中有两种类型的预置模板。一个用于 just-in-time 配置 (JITP) 和批量注册,第二个用于队列配置。
创建供应模板的脚本
https://github.com/aws-samples/aws-iot-device-management-workshop/blob/master/bin/mk-bulk.sh
创建存储桶
aws s3api create-bucket\
--bucket bulk-iot-test\
--region ap-northeast-1
上传bulk.json(如果使用云shell)并复制到S3
通过UI
上传bulk.json
aws s3 cp bulk.json s3://bulk-iot-test
aws s3 ls s3://bulk-iot-test
创建角色注册东西
来自 CloudFormation 模板…这是不完整的,需要进一步完善。
"DMWSIoTServiceRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Statement": [ {
"Effect": "Allow",
"Principal": {
"Service": [ "iot.amazonaws.com" ]
},
"Action": [ "sts:AssumeRole" ]
} ]
},
"ManagedPolicyArns": [
"arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration",
"arn:aws:iam::aws:policy/service-role/AWSIoTLogging",
"arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess"
],
"Path": "/"
}
},
开始事物注册任务
aws iot start-thing-registration-task \
--template-body file://~/templateBody.json \
--input-file-bucket bulk-iot-test \
--input-file-key bulk.json --role-arn "arn:aws:sts::ACCOUNTID:assumed-role/ROLE/USER@DOMAIN.com"
我正在创建一个需要将多个设备连接到 AWS IoT 的应用程序,但我注意到只有最后连接的设备保持连接状态。我看到我对所有设备都使用相同的证书,并且在为每个设备创建证书后问题就解决了,但事实证明这将是多个设备,并且逐个设备继续注册是没有效率的。我想知道是否有解决方案可以让多个设备同时保持连接到aws iot,而不必一个一个地注册证书。
本文主要来自:https://iot-device-management.workshop.aws/en/provisioning-options/bulk-provisioning.html.
上面的 link 还有其他选项(及时等...)。
创建批量事物注册任务 要创建批量注册任务,需要一个角色来授予访问输入文件的权限。此角色已由 CloudFormation 创建,并且角色名称已在研讨会设置期间复制到 shell 变量 $ARN_IOT_PROVISIONING_ROLE.
aws iot start-thing-registration-task \
--template-body file://~/templateBody.json \
--input-file-bucket $S3_BUCKET \
--input-file-key bulk.json --role-arn $ARN_IOT_PROVISIONING_ROLE
当命令成功时returns一个taskId。输出类似于:
{
"taskId": "aaaf0a94-b5a9-4bd6-a1f5-cf188322a111"}
配置模板 https://docs.aws.amazon.com/iot/latest/developerguide/provision-template.html
配置模板是一个 JSON 文档,它使用参数来描述您的设备与 AWS IoT 交互所必须使用的资源。模板包含两个部分:参数和资源。 AWS IoT 中有两种类型的预置模板。一个用于 just-in-time 配置 (JITP) 和批量注册,第二个用于队列配置。
创建供应模板的脚本
https://github.com/aws-samples/aws-iot-device-management-workshop/blob/master/bin/mk-bulk.sh
创建存储桶
aws s3api create-bucket\
--bucket bulk-iot-test\
--region ap-northeast-1
上传bulk.json(如果使用云shell)并复制到S3
通过UI
上传bulk.jsonaws s3 cp bulk.json s3://bulk-iot-test
aws s3 ls s3://bulk-iot-test
创建角色注册东西
来自 CloudFormation 模板…这是不完整的,需要进一步完善。
"DMWSIoTServiceRole": {
"Type": "AWS::IAM::Role",
"Properties": {
"AssumeRolePolicyDocument": {
"Statement": [ {
"Effect": "Allow",
"Principal": {
"Service": [ "iot.amazonaws.com" ]
},
"Action": [ "sts:AssumeRole" ]
} ]
},
"ManagedPolicyArns": [
"arn:aws:iam::aws:policy/service-role/AWSIoTThingsRegistration",
"arn:aws:iam::aws:policy/service-role/AWSIoTLogging",
"arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess"
],
"Path": "/"
}
},
开始事物注册任务
aws iot start-thing-registration-task \
--template-body file://~/templateBody.json \
--input-file-bucket bulk-iot-test \
--input-file-key bulk.json --role-arn "arn:aws:sts::ACCOUNTID:assumed-role/ROLE/USER@DOMAIN.com"