速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

利用 AWS IoT Device Management 服务轻松部署设备组

  • 2019-09-25
  • 本文字数:6854 字

    阅读完需:约 22 分钟

利用 AWS IoT Device Management 服务轻松部署设备组

简介

物联网 (IoT) 提供了前所未有的规模在先前无法触及的领域采集数据、执行数字化交互。这种机会的重要性以多种不同的方式影响着个人、组织和政府机构。例如,在制造业中,许多现有产品制造商正在竞相将互连功能集成到他们的产品中,并将大量此类产品投入市场。初创公司和其他组织正在围绕连接能力和基于云的服务集成打造全新产品线。


为了解决预配置和管理互连事物的复杂难题,制造商需要设法简化各类任务并实现自动化,例如预配置设备标识,并将这些标识提供给安全且可重复的方式制造的设备。AWS IoT Device Management 服务提供了一项批量预配置互连事物的新功能,为这项艰巨任务提供了有力支持。


这一新功能允许客户一次性注册大量设备。AWS IoT Core 中每个事物的主体和权限配置均由证书、事物和策略资源构成。无论您的业务是什么性质,在使用 AWS IoT 服务开发解决方案时,您都需要创建一个“事物”来存储有关各设备的信息,创建证书来为“事物”提供安全凭证,并通过将证书附加到“事物”的适当策略来设置权限。AWS IoT 批量预配置功能可以简化注册流程并实现流程自动化。


以下是来自 AWS 客户 Trimble 的真实示例。Trimble 素以 GPS 技术而闻名,它将各种定位技术(包括 GPS、激光、光学和惯性技术)与应用程序软件、无线通信和服务相集成,以提供完整的商业解决方案。 “AWS IoT Device Management 帮助我们简化了设备注册过程,这使我们能够满足互连设备的生产吞吐量计划,”Trimble 高级工程师 Jim Coleman 这样说道。[1] Coleman 先生在 AWS reInvent 2017 大会的演讲中还分享了他的团队使用 AWS IoT 批量预配置功能将设备预配置吞吐量提高了 4 倍的故事。[2]


有关 AWS IoT 证书、事物、策略以及 AWS IoT 安全模型其余部分的更多详细信息,请参阅这篇文章。

IoT 队组预配置使用案例

在 AWS,我们一切从客户出发,在设计服务时立足客户视角反推工作。在考虑预配置使用案例时,我们自然也应采用这样的工作方法。我们的客户将如何与互连设备进行交互? 这种设备是否会有用户界面? 客户是否需要将其与移动设备配对? 是否有可供此设备连接、可通过浏览器配置的 WiFi 接入点? 它是否需要进行配置? 是否会有与该设备相关的服务订阅?


虽然我们不会尝试在此博文中回答上述所有问题,但我们将利用这些问题的影响范围,指导我们确定如何探索批量预配置解决方案的设计。让我们考虑这样一种情景:我们的客户从零售店购买了一台设备,通过蓝牙将其与运行用于配置设备的应用程序的移动设备配对。配置好设备后,通常设备的常规操作不再需要用到移动应用程序。该设备基本上采用独立运作方式,并具有自己的“身份”。


在工厂制造设备时,设备预配置有一组证书、一个事物名称,以及一项或多项 AWS IoT 策略。在设备开机并配置了移动应用程序的互联网访问权限后,设备可以直接连接到 AWS IoT Core 服务,提供凭证,并通过提供有效证书进行身份验证。已连接的设备有权根据预配置的策略与 AWS IoT Core 服务进行交互。

查看选项

虽然本文重点介绍的是 AWS IoT Device Management 批量预配置功能,但 AWS IoT Core 中还有其他选项可用于批量预配置设备。AWS IoT Core 包含一个名为“即时注册 (JITR)”的功能集,允许在首次连接设备时,向 AWS IoT Core 注册由客户提供的证书颁发机构 (CA) 签署的预配置及设备部署证书。可以在这篇文章中找到有关 AWS IoT JITR 功能的更多详细信息。

探索 AWS IoT Device Management 批量预配置功能

为了有效利用 AWS IoT Device Management 批量预配置功能,您需要在开始预配置任务之前准备好一些 AWS 资源。这些资源包括预配置模板、S3 存储桶位置、服务角色和数据文件。此外,您还需要创建 X.509 证书并生成证书签名请求 (CSR)。接下来,我们将进一步深入介绍这些资源。

创建预配置模板

预配置模板包含在使用模板预配置设备时需要替换的变量。词典(映射)用于为模板中使用的变量提供值。批量预配置任务将在任务运行时使用 JSON 数据文件作为替换变量值。


以下是最简单的预配置模板的完整示例。有关构建这些模板的更多详细信息,请参阅此处的 AWS IoT Core 文档。


将下面的内容粘贴到文件中,并将此文件另存为 provisioning-template.json。


{  "Parameters": {    "ThingName": {      "Type": "String"    },    "SerialNumber": {      "Type": "String"    },    "CSR": {      "Type": "String"    }  },  "Resources": {    "thing": {      "Type": "AWS::IoT::Thing",      "Properties": {        "ThingName": {          "Ref": "ThingName"        },        "AttributePayload": {          "version": "v1",          "serialNumber": {            "Ref": "SerialNumber"          }        }      }    },    "certificate": {      "Type": "AWS::IoT::Certificate",      "Properties": {        "CertificateSigningRequest": {          "Ref": "CSR"        },        "Status": "ACTIVE"      }    },    "policy": {      "Type": "AWS::IoT::Policy",      "Properties": {        "PolicyDocument": "{\"Version\": \"2012-10-17\",\"Statement\": [{\"Effect\": \"Allow\",\"Action\": [\"iot:Publish\"],\"Resource\": [\"*\"]}]}"      }    }  }}

复制代码

创建证书和证书签名请求 (CSR)

接下来,我们将为设备创建证书和签名请求。在本示例中,我们将预配置 3 台使用唯一证书的设备。在本示例中,我们将在运行 Amazon Linux 的 AWS EC2 实例上使用 openssl 命令来创建证书。以下命令将为全部 3 台设备分别创建证书私钥文件和 CSR 文件。


openssl req -new -newkey rsa:2048 -nodes -keyout device_one.key -out device_one.csr -subj "/C=US/ST=WA/L=Seattle/O=MyOrg/CN=MyDept"
复制代码


openssl req -new -newkey rsa:2048 -nodes -keyout device_two.key -out device_two.csr -subj “/C=US/ST=WA/L=Seattle/O=MyOrg/CN=MyDept”


openssl req -new -newkey rsa:2048 -nodes -keyout device_three.key -out device_three.csr -subj "/C=US/ST=WA/L=Seattle/O=MyOrg/CN=MyDept"
复制代码

生成 JSON 数据文件并将其复制到 S3 存储桶

创建好预配置模板和 CSR 文件后,我们就可以构建 JSON 数据文件了。数据文件必须是使用换行符分隔的 JSON 文件。每行均包含预配置一台设备的所有参数值。在本示例中,我们的数据文件应如下所示:


{"ThingName": "device-one", "SerialNumber": "001", "CSR": “*** CSR FILE CONTENT ***"}{"ThingName": "device-two", "SerialNumber": "002", "CSR": “*** CSR FILE CONTENT ***"}{"ThingName": "device-three", "SerialNumber": "003", "CSR": “*** CSR FILE CONTENT ***"}
复制代码


请注意,上面的示例中省略了上文中的 CSR 文件内容。CSR 文件内容应设置为单行格式,并作为 CSR 参数的值包含在在内。格式设置正确的 CSR 文件内容字符串应删除 —–BEGIN CERTIFICATE REQUEST—– 和 —–END CERTIFICATE REQUEST—– 这两行,并将换行符或回车符替换为转义序列 \n,使得内容可以排列在一个字符串内。


以下示例展示了如何将 CSR 文件内容转换为单个字符串。下面是未经修改的示例 CSR 文件内容:


-----BEGIN CERTIFICATE REQUEST-----MIICkjCCAXoCAQAwTTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ4wDAYDVQQKEwVNeU9yZzEPMA0GA1UEAxMGTXlEZXB0MIIBIjANBgkqhkiG9w0BAQEFAAZCAQ8AMIIBCgKCAQEA5F5erQEDXqR0QgwDPlAE8u36c6XrpxA080KyaW8BQl0ZOwrxwZwtO/hpcg86d97DfY1gpw8RqftPEaVJe3451CWoc8a5AKpJg82LQroQI8DNkdHl+wgdkaf9GvYzFiDLIQ3oNGa27Zx58Ve8qh+ymAo6g3+dkdCfbcJhW/XqaJZeF5+lXGDXdrNotRealnm6kVJxMAqxEcJGpxDIRCaTjAESyLcZPyOnEGBuUs68eKT6P2Wiyv8rTaO9E59FaSNcl8AMiK23AJt5sql1ZybBV8o+WCQ3L2+nZnJVK9TME0ZZ+18AnfVKFhZYcoV2/UxXMAa3T6LFzw6DAhrH3QIDAQABoAAwDQYJKoZIhvcNAQEFBQADggEBAKCaWAvRargxBa9k1zZ2nI7y1mpuzTcgoOMjIDR/9DxGjS913AtDfpYm/cM+1x38lNfe3qRQHTmw3UnPUlNJSLTA6rCepllpMQSeXgaG60PTJ6/h0zvPwdUg1JOEE3lxlSJz4pHiT2Sdmyleg1hp7jezFqGEelKd+Xfdbfp7rNBESIq1ymWdagXnsyWjN34JqvWiS6J4NWzO2zlFkHghkbMOwOZJRrZuyOVscjDZVgqYHt9xJD4Rm6U4L6uFQabHElw2IwT6izSCzU50Ahjj89snBCKnLWCe0XTbojVkIg5RofqzP1VwYtx5ORq93/YOxHqrpWDTa7q64BFzp1v7LlQ=-----END CERTIFICATE REQUEST-----
复制代码


如果上面的内容包含在名为 device-one.csr 的文件中,则可以运行以下命令将文件处理为格式正确的字符串。


grep -v REQUEST device-one.csr | awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' > single-string-file.out
复制代码


文件 single-string-file.out 包含格式设置为单个字符串的 CSR 文件,此字符串可在 bulk-provisioning-data.json 文件中使用。


上述命令的示例输出如下所示。请注意,换行符已替换为“\n”,并且 BEGIN 和 END 行已删除。在数据文件中包含指定的各设备的单字符串 CSR 内容。


MIICkjCCAXoCAQAwTTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQH\nEwdTZWF0dGxlMQ4wDAYDVQQKEwVNeU9yZzEPMA0GA1UEAxMGTXlEZXB0MIIBIjAN\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5F5erQEDXqR0QgwDPlAE8u36c6Xr\npxA080KyaW8BQl0ZOwrxwZwtO/hpcg86d97CfY1gpw8RqftPEaVJe3451CWoc8a5\nAKpJg82LQroQI8DNkdHl+wgdkaf9GvYzFiDLIQ3oNGa27Zx58Ve8qh+ymAo6g3+d\nkdCfbcJhW/XqaJZeF5+lXGDXdrPccioASwybogusVJxMAqxEcJGpxDIRCaTjAES\nyLcZPyOnEGBuUs68eKT6P2Wiyv8rTaO9E59FaSNcl8ASillYAJt5sql1ZybBV8o+\nWCQ3L2+nZnJVK9TME0ZZ+18AnfVGFhZYcoV2/UxXMAa3T6LFzw6DAhrH3QIDAQAB\noAAwDQYJKoZIhvcNAQEFBQADNotRealAKCaWAvRargxBa9k1zZ2nI7y1mpuzTwooOMj\nIDR/9DxGjS913AtDfpYm/cM+1x38lNfe3qRQHTmw3UnPUlNJSLTA6rCepllpMQSe\nXgaG60PTJ6/h0zvLwdUg1JOEE3lxlSJz4pHiT2Sdmyleg1hp7jezFqGEelKd+Xfd\nbfp7rNBESIq1ymWdagXnsyWjN34JqvWiS6J4NWzO2zlFkHghkbMOwOZJRrZuyOVs\ncjDZVgqYHt9x
复制代码


将此 JSON 文件另存为 bulk-provisioning-data.json,并将此文件复制到位于您将运行预配置任务的区域内的 S3 存储桶中的某个位置。

创建服务角色

执行预配置任务时,IoT 服务必须能够在某个 S3 存储桶中找到数据文件。您可以使用现有存储桶,也可以创建一个新存储桶,专门用于在 AWS IoT Core 服务中预配置设备。无论选择哪种方式,您都需要创建一个角色,允许 AWS IoT Core 访问存储桶以检索数据文件。


创建角色时,信任策略应如下所示:



{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ]}
复制代码


创建策略以提供您的 S3 存储桶的权限。确保正确输入您的存储桶名称。


可根据以下示例指导您操作:



{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::replace_with_your_bucket_name/*" ] } ]}
复制代码


将该策略附加到角色。


接下来,您可以将 AWS 托管策略附加到该角色,以提供成功执行预配置步骤所需的 AWS IoT Core 服务权限。在 IAM 控制台中,您可以搜索“AWSIoTThings”以查找“AWSIoTThingsRegistration”AWS 托管策略。除了在之前步骤中创建的 S3 权限策略之外,还要将此策略附加到您的角色。


现在您已经创建了角色,请注意记录好角色 ARN,因为您将在后面的步骤中用到它。

运行批量预配置任务

现在就到了大家期盼已久的部分,运行批量预配置任务! 在此之前的所有步骤是为了创建此项活动所需的数据或配置。要运行批量预配置,您需要使用具有适当权限的用户,针对 AWS IoT Core 支持的区域安装和配置 AWS CLI。此示例使用的是附加了 AWS 托管策略 arn:aws:iam::aws:policy/AWSIoTFullAccess 的 IAM 用户。除了这项策略之外,请确保执行命令的 IAM 用户具有 IAM:PassRole 权限。


可以通过内联策略,为 IAM 用户添加 IAM:PassRole 权限。示例策略如下所示:



{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*" } ]}
复制代码


切记将示例命令中的值替换为模板文件、数据文件、数据文件存储桶和角色 ARN 的相应值。


aws iot start-thing-registration-task --template-body file:///home/ec2-user/provisioning-template.json --input-file-bucket replace_with_your_bucket_name --input-file-key bulk-provisioning-data.json --role-arn arn:aws:iam::123456789012:role/iot-bulk-provisioning-role
复制代码


成功运行命令后,您应该会收到如下所示的任务 ID 输出:


{"taskId": "5d111206-093c-4ab3-1234-b2f14b0c208d"}
复制代码


您可以使用 list-thing-registration-tasks 命令检查最近执行的任务,如下所示。


aws iot list-thing-registration-tasks{"taskIds": ["d62ded50-1ac6-4424-5678-84fed7b9f916","5d111206-093c-4ab3-1234-b2f14b0c208d"]}
复制代码


接下来,您可以使用 describe-thing-registration-task 命令查看详细信息并查看注册任务的状态,如下所示。


aws iot describe-thing-registration-task --task-id 5d111206-093c-4ab3-1234-b2f14b0c208d{"status": "Completed","successCount": 3,"creationDate": 1511202602.898,"templateBody": “** removed for readability **","lastModifiedDate": 1511202604.694,"roleArn": "arn:aws:iam::123456789012:role/iot-bulk-provisioning-role","inputFileKey": "bulk-provisioning-data.json","inputFileBucket": "my_bucket","taskId": "5d111206-093c-4ab3-1234-b2f14b0c208d","failureCount": 0,"percentageProgress": 100}
复制代码


最后,您还可以使用 list-thing-registration-task-reports 命令获取更详细的报告,如下所示。


aws iot list-thing-registration-task-reports --task-id eacb0860-e99a-1234-5678-f7a976fc2408 --report-type RESULTS{"resourceLinks": ["https://aws-iot-btp-prod-us-east-1.s3.amazonaws.com/123456789012/a779514e-51f1-4027-beef-73447cafebaca/successful/a779514e-51f1-4027-bd2e-73447efcbaca-1?X-Amz-Security-Token=FQoDYXdzEE4aDOjiGWbWwt7xASULzSLYAb37lzpZBsW7HPpYS0ko8MtWntXCed0QhYKZ0i4hBJZ6JAoqvBE58LcytLTgmxUwg3NS2ZnbYEzH%2FH%2Fxd1XalbertMZCpYg2lF0fpbAjt2B%2FJog%2Fj0FtyflWztC9s0NdaolhFuEj3XNQpL3qHK41jKhITYA3imKdX75Z6x2%2BHRSjCpvvTrQllDLHS3dC1nFOXYXGd1ChjxnkjKkhQGPQlrAoGPR3TMMCpi73fDAtR72yQ0mTF%2FJHEZ4g6umLj%2FAbHlBeiA%2BQ99QhCaUQ3Sco1xL7BpJ7jkuYmCj%2B5ZbRBQ%3D%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20171204T204440Z&X-Amz-SignedHeaders=host&X-Amz-Expires=86400&X-Amz-Credential=ASIAIOE5MA3ZIRF7WHAT%2F20171204%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=600b27c36c484cb8b3bfa707beefde0fe279d92ccb9f2a4848a13e95442b854"],"reportType": "RESULTS"}
复制代码


导航到“resourceLinks”中返回的链接,以获取包含新预配置的事物的对应签名证书值、事物 ARN 和策略 ARN 的 JSON 文件。


如果报告类型为 RESULTS 的 list-thing-registration-task-reports 返回空列表,则可能在处理数据文件时出现了错误。执行 —report-type 参数值设置为 ERRORS 的 list-thing-registration-task-reports 命令可以检索错误详情。返回的链接为错误报告链接,有助于进行故障排查。


至此,我们的 IoT 事物预配置已经完成,接下来即可将证书文件提供给制造部门,以便在事物离开组装生产线之前将其复制到设备中。然后即可将我们的产品打包并运送到零售商处,供客户购买和使用。

总结

使用 AWS IoT 批量预配置功能,设备制造商和供应商可以简化并自动执行多项任务,例如以安全且可重复的方式预配置设备标识,如本文示例中所示。本文的示例仅仅是入门级功能,AWS IoT Device Management 为组织部署和管理庞大的互连事物队组提供了更多功能。希望这篇博文能为您提供实用的帮助信息,我建议您了解有关 AWS IoT Core 新功能的更多信息,以帮助您的组织充分利用这些技术以及 AWS 提供的其他新技术。

了解更多

有关 AWS IoT Device Management 的更多信息


https://aws.amazon.com/iot-device-management


AWS IoT Device Management – 功能


https://aws.amazon.com/iot-device-management/features/


AWS IoT 设备预配置


http://docs.aws.amazon.com/iot/latest/developerguide/iot-provision.html


相关文章


[1] AWS 宣布推出一系列全新 IoT 服务;将机器学习带到网络边缘


http://www.businesswire.com/news/home/20171129006079/en/AWS-Announces-Slew-New-IoT-Services-Brings


[2] AWS re:Invent 2017:AWS IoT Device Management (IOT330)


https://youtu.be/Qi1FVPXDPQc?t=1065


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/deploy-fleets-easily-with-aws-iot-device-management-services/


2019-09-25 15:49883
用户头像

发布了 1851 篇内容, 共 119.3 次阅读, 收获喜欢 78 次。

关注

评论

发布
暂无评论
发现更多内容

安全通告:NGINX HTTP/3 QUIC 漏洞

NGINX开源社区

dos nginx 开源版 NGINX PLUS HTTP/3 QUIC CVE 漏洞

连续五次登顶 天翼云再次位居中国专属云服务市场第一

Geek_2d6073

支持M1 /M2 苹果电脑触摸板增强神器:Bettertouchtool破解版下载 附Bettertouchtool使用教程

理理

谷歌访问助手(谷歌浏览器插件)Mac中文版 安装教程

理理

深度剖析集团型企业在新质生产力和数字化转型过程中面临的身份管理问题(一)

芯盾时代

数字化转型 iam 统一身份 新质生产力

「2023最新」idea激活码破解安装教程(附激活工具+激活码)

理理

软件测试学习笔记丨Flask操作数据库-多对多操作

测试人

数据库 软件测试

新一代企业共享服务中心,开启企业智慧管理决策新纪元

中关村科金

人工智能 大模型 企业共享服务中心

简单4步,带你用华为云MetaStudio制作数字人短片

华为云开发者联盟

人工智能 华为云 AIGC 华为云开发者联盟 企业号2024年6月PK榜

钢轨行业的数字化转型:全生命周期管理与智能化决策支持

天津汇柏科技有限公司

数字化转型

文献解读-肿瘤测序-第五期|《局部晚期或转移性儿童及青少年分化型甲状腺癌的基因特征与临床特征及131I疗效的关系》

INSVAST

基因数据分析 生信服务 肿瘤测序

什么是区块链交易所?

dappweb

区块链交易所开发

parallelsdesktop19密钥激活 PD19虚拟机完整图文安装教程

理理

简单易用的Visio文件查看工具:Visio Viewer for Mac免激活版

理理

在线跨平台室内设计工具 Planner 5D for Mac中文直装破解版

理理

SecureCRT for Mac破解版(SecureCRT许可证) 支持m1 SecureCRT Mac详细使用教程

理理

Native Instruments Creator Tools for mac(高 级采样器)v1.5.2.0版

Mac相关知识分享

Mac Mac软件 音频软件 采样器

3CX的介绍

cts喜友科技

通信 通讯 云通讯

[WWW2024]轻量数据依赖的异常检测重训练方法LARA

阿里云大数据AI技术

大数据 阿里云 异常检测 论文 WWW2024

AE/PR插件:Aescripts StyleX (AI高级视频风格化工具) v1.0.1激活版

理理

AI日报|国产大模型迎来新卷王,天工MoE全球首用4090推理,马斯克计划豪掷90亿购买GPU

可信AI进展

#人工智能

推荐一款专业的mac软件资源站:macw网站 提供海量的破解、激活软件

理理

su草图大师破解版 SketchUp Pro 2024 中文直装版下载安装 mac/win

理理

利用 AWS IoT Device Management 服务轻松部署设备组_安全_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章