蚌埠网站建设费用,wordpress 404代码,虹口北京网站建设,信誉好的顺德网站建设1.概述
亚马逊云科技提供了完备的IoT服务能力#xff0c;涵盖设备服务、连接和控制服务以及云端分析服务#xff0c;是快速构建安全可靠、可扩展的 IoT 平台的常见选择。Amazon IoT Greengrass 边缘运行时和云服务#xff0c;可帮助您在设备上构建、部署和管理 IoT 应用。A…1.概述
亚马逊云科技提供了完备的IoT服务能力涵盖设备服务、连接和控制服务以及云端分析服务是快速构建安全可靠、可扩展的 IoT 平台的常见选择。Amazon IoT Greengrass 边缘运行时和云服务可帮助您在设备上构建、部署和管理 IoT 应用。Amazon ECS Anywhere提供的混合云容器服务。
亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术观点和项目并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏看到这里请一定不要匆匆划过点这里让它成为你的技术宝库
本文将提出一种基于 ECS Anywhere 构建容器化云边统一管理的IoT平台参考架构介绍了如何利用 ECS Anywhere 在边缘设备上容器化部署 Greengrass并在 Greengrass 上部署组件帮助用户简化 IoT 设备管理从而构建云边一体的 IoT 平台。
2.ECS Anywhere
Amazon Elastic Container Service (ECS) Anywhere 是亚马逊云科技自研的容器管理平台 ECS 的扩展功能将云端的容器管理能力延伸到本地数据中心和边缘端是利用容器技术构建云边一体 IoT 平台的理想选择。ECS Anywhere 为用户提供了一个完全托管的容器编排服务使客户能够使用与目前在 Amazon ECS 中所用的相同 API、集群管理、工作负载计划、监控和部署流水线在本地运行和管理容器化应用程序。通过将服务器或实例连接到托管 Amazon ECS 控制平面客户可以在自己的基础设施上使用 Amazon ECS Anywhere。使用 Amazon ECS Anywhere客户可以在任何客户管理的实例上部署和管理容器化应用程序而无需在本地手动安装、操作和管理容器编排软件。
3.IoT Greengrass
Amazon IoT Greengrass 边缘运行时和云服务可帮助您在设备上构建、部署和管理 IoT 应用。使用 IoT Greengrass 来构建软件使设备能够对其生成的数据进行本地操作基于机器学习模型运行预测以及过滤和聚合设备数据。可将 Amazon 服务扩展至物理设备以便在边缘侧操作生成的数据同时仍可将云用于管理、分析和持久存储。可确保设备不仅可以快速响应本地事件还能在连接不稳定时正常运行。可以编写自定义软件可在本地设备上运行的 Amazon Lambda 函数和容器应用。Amazon IoT Greengrass 也可运行在容器中。
4.基于 ECS Anywhere 的 IoT 平台参考架构
在 ECS 中统一管理服务端和边缘端的设备和容器任务通过 ECS Anywhere 在边缘端容器中部署 Greengrass 和其他边缘应用通过云端 IoT 控制台管理连接 Greengrass管理 Greengrass 中的组件和应用。 5.构建步骤
本文将用一台 EC2 服务器模拟边缘服务器操作系统为 ubuntu20,机型为 T3.large ,磁盘 EBS50G。
使用 ECS Anywhere 在边缘部署 IoT Greengrass 及应用, 具体构建步骤如下
部署 ECS Anywhere部署 Greengrass部署应用
5.1部署 ECS Anywhere
ECS Anywhere 部署架构图如下所示。 5.1.1 创建 ECS 集群
进入 ECS 服务点击创建集群。 选择 EC2 Linux 联网模版。 输入集群名可以选择创建空集群或者创建有实例的集群。 如果为非空集群实例数量输入 2网络设置可选已有 VPC 和子网也可以新建 VPC 。其他设置默认点击创建集群。 5.1.2 注册边缘服务器
进入新创建的 ECS 集群选择 ECS 实例子页签点击注册 External 实例。 选择实例数量实例角色新建点击生成注册命令。 复制注册命令。 以 root 身份运行脚本将在边缘服务器上安装ECS代理和SSM代理。 执行完毕后SSM 代理和 ECS 代理将在边缘服务器上运行在 Amazon 控制台 ECS 服务界面的 ECS 示例标签可以看到注册成功的外部实例。 5.2 部署 Greengrass
5.2.1创建访问凭证
SSH登录到边缘服务器创建 greengrass 容器中访问 Amazon IoT Core 的访问凭证
vi /root/.aws/credentials
输入以下内容其中 AWS_ACCESS_KEY_ID和 AWS_SECRET_ACCESS_KEY需要替换为访问 AK、SK如果为临时凭证还需要替换AWS_SESSION_TOKEN
aws_access_key_id AWS_ACCESS_KEY_ID
aws_secret_access_key AWS_SECRET_ACCESS_KEY
aws_session_token AWS_SESSION_TOKEN
5.2.2定义任务
进入控制台 ECS 服务界面从左侧导航菜单原则任务定义选择创建新任务定义 进入控制台 ECS 服务界面选择 EXTERNAL。 选择创建的任务角色网络模式选择主机。 内存和 CPU 设置为 1024。 点击添加卷。 在弹出页面中添加 Amazon 访问凭证的径/root/.aws/credentials。 点击添加容器进入容器添加画面。 输入容器名和映像地址 public.ecr.aws/q3k3q7c1/aws-iot-greengrass-v2:latest。 输入访问 Amazon 凭证及 PROVISION 环境变量值为 true。 设置存储挂载点选择挂载卷输入容器中 Amazon 凭证的挂载路径 /root/.aws/credentials完成任务定义。 也可以通过 JSON 文件配置任务代码如下。
{requiresCompatibilities: [EXTERNAL],containerDefinitions: [{name: greengrassv2,image: public.ecr.aws/q3k3q7c1/aws-iot-greengrass-v2:latest,resourceRequirements: null,essential: true,portMappings: [],environment: [{name: AWS_ACCESS_KEY_ID,value: AWS_ACCESS_KEY_ID},{name: AWS_SECRET_ACCESS_KEY,value: AWS_SECRET_ACCESS_KEY},{name: AWS_SESSION_TOKEN,value: AWS_SESSION_TOKEN},{name: AWS_REGION,value: AWS_REGION},{name: PROVISION,value: true}],environmentFiles: [],secrets: null,mountPoints: [{sourceVolume: aws-credentials,containerPath: /root/.aws/credentials,readOnly: }],volumesFrom: null,hostname: null,user: null,workingDirectory: null,extraHosts: null,logConfiguration: null,ulimits: null,dockerLabels: null,dependsOn: null,repositoryCredentials: {credentialsParameter: }}],volumes: [{host: {sourcePath: /root/.aws/credentials},name: aws-credentials}],networkMode: host,memory: 1024,cpu: 1024,placementConstraints: [],family: greengrassv2,taskRoleArn: arn:aws:iam::804077508687:role/ECSTaskRole,executionRoleArn: arn:aws:iam::804077508687:role/ECSTaskRole,
tags: []
}
5.2.3 运行任务
在 ECS 服务界面的任务子页签中选择运行新任务。 启动类型选择 EXTERNAL。 修改环境变量参数或保持任务定义的默认设置。 启动任务可以看到任务列表里在边缘服务器上运行新的 greengrass 任务。 在 Amazon 控制台 IOT 的服务界面中点击左侧导航菜单的Greengrass 的核心设备可以看到刚才注册成功的 Greengrass 核心设备。 5.3 部署示例应用
在本地终端编写 Greengrass 组建 hello_world.py 脚本如下
import sys
import datetimemessage Hello, %s! Current time: %s. % (sys.argv[1], datetime.datetime.now())
message Greetings from your first Greengrass component.
# Print the message to stdout.
print(message)# Append the message to the log file.
with open(/tmp/Greengrass_HelloWorld.log, a) as f:print(message, filef)
创建一个 S3存储桶用于存放 Greengrass 组件存储桶名为 GREEGRASS-EXAMPLE-BUCKET。aws s3 mb s3:// GREEGRASS-EXAMPLE-BUCKET
aws s3 cp hello_world.py \s3://GREEGRASS-EXAMPLE-BUCKET/artifacts/com.example.HelloWorld/1.0.0/hello_world.py
设置 IAM 权限允许核心设备的 ECSTaskRole 访问 S3 存储桶中的组件对象。
从 Amazon 控制台进入 IoT 服务页面点击 Greengrass 设备的组件点击创建组件。 在创建组件页面中选择 JSON 格式输入组件配置信息。 配置信息代码如下
{RecipeFormatVersion: 2020-01-25,ComponentName: com.example.HelloWorld,ComponentVersion: 1.0.0,ComponentDescription: My first Greengrass component.,ComponentPublisher: Amazon,ComponentConfiguration: {DefaultConfiguration: {Message: world}},Manifests: [{Platform: {os: linux},Lifecycle: {Run: python3 -u {artifacts:path}/hello_world.py {configuration:/Message}},Artifacts: [{URI: s3://GREENGRASS-DOC-EXAMPLE-BUCKET/artifacts/com.example.HelloWorld/1.0.0/hello_world.py}]}]
}
在 Iot Greengrass 导航菜单点击部署进入部署页面。 输入部署名和目标类型输入创建的 Greengrass 设备名点击下一步。 选择已定义的 helloworld 组件配置策略采用默认完成部署创建。 部署完成后可以在 Greengrass 设置的组件列表中看到已安装的组件。
SSH 登录 Greengrass 设备进入 Greengrass 容器通过以下命令可以查看输出信息。
tail -f /tmp/Greengrass_HelloWorld.log
6. 总结
本文介绍了基于 ECS Anywhere 的 IoT 平台参考架构利用 ECS Anywhere 在边缘设备上容器化部署 Greengrass并在 Greengrass 上部署组件而从简化边缘设备管理和应用部署用户可基于此扩展功能、构建基于容器的云边一体 IoT 平台。
本篇作者 姜可
亚马逊云科技资深解决方案架构师负责协助客户业务系统上云的解决方案架构设计和咨询现致力于 DevOps、IoT、机器学习相关领域的研究。在加入亚马逊云科技之前曾在金融、制造、政府等行业耕耘多年对相关行业解决方案和架构有很深的理解。
文章来源https://dev.amazoncloud.cn/column/article/630a1502d4155422a4610a58?sc_mediumregulartrafficamp;sc_campaigncrossplatformamp;sc_channelCSDN