使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass

这篇具有很好参考价值的文章主要介绍了使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 中的组件和应用。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

5.构建步骤

(本文将用一台 EC2 服务器模拟边缘服务器,操作系统为 ubuntu20,机型为 T3.large ,磁盘 EBS50G。)

使用 ECS Anywhere 在边缘部署 IoT Greengrass 及应用, 具体构建步骤如下:

  • 部署 ECS Anywhere
  • 部署 Greengrass
  • 部署应用
5.1部署 ECS Anywhere

ECS Anywhere 部署架构图如下所示。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

5.1.1 创建 ECS 集群

进入 ECS 服务,点击创建集群。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

选择 EC2 Linux+ 联网模版。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

输入集群名,可以选择创建空集群或者创建有实例的集群。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

如果为非空集群,实例数量输入 2,网络设置可选已有 VPC 和子网,也可以新建 VPC 。其他设置默认,点击创建集群。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

5.1.2 注册边缘服务器

进入新创建的 ECS 集群,选择 ECS 实例子页签,点击注册 External 实例。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

选择实例数量,实例角色新建,点击生成注册命令。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

复制注册命令。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

以 root 身份运行脚本将在边缘服务器上安装ECS代理和SSM代理。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

执行完毕后,SSM 代理和 ECS 代理将在边缘服务器上运行,在 Amazon 控制台 ECS 服务界面的 ECS 示例标签可以看到注册成功的外部实例。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

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 服务界面,从左侧导航菜单原则任务定义,选择创建新任务定义

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

进入控制台 ECS 服务界面,选择 EXTERNAL。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

选择创建的任务角色,网络模式选择主机。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

内存和 CPU 设置为 1024。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

点击添加卷。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

在弹出页面中添加 Amazon 访问凭证的径/root/.aws/credentials。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

点击添加容器,进入容器添加画面。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

输入容器名和映像地址 public.ecr.aws/q3k3q7c1/aws-iot-greengrass-v2:latest。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

输入访问 Amazon 凭证及 PROVISION 环境变量,值为 true。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

设置存储挂载点,选择挂载卷,输入容器中 Amazon 凭证的挂载路径 /root/.aws/credentials,完成任务定义。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

也可以通过 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 服务界面的任务子页签中,选择运行新任务。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

启动类型选择 EXTERNAL。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

修改环境变量参数或保持任务定义的默认设置。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

启动任务,可以看到任务列表里在边缘服务器上运行新的 greengrass 任务。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

在 Amazon 控制台 IOT 的服务界面中,点击左侧导航菜单的Greengrass 的核心设备,可以看到刚才注册成功的 Greengrass 核心设备。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

5.3 部署示例应用

在本地终端,编写 Greengrass 组建 hello_world.py 脚本如下:

import sys
import datetime

message = "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, file=f)
创建一个 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 设备的组件,点击创建组件。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

在创建组件页面中,选择 JSON 格式,输入组件配置信息。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

配置信息代码如下:

{
  "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 导航菜单,点击部署,进入部署页面。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

输入部署名和,目标类型输入创建的 Greengrass 设备名,点击下一步。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

选择已定义的 helloworld 组件,配置策略采用默认,完成部署创建。

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

部署完成后,可以在 Greengrass 设置的组件列表中看到已安装的组件。

SSH 登录 Greengrass 设备,进入 Greengrass 容器,通过以下命令可以查看输出信息。

tail -f /tmp/Greengrass_HelloWorld.log

6. 总结

本文介绍了基于 ECS Anywhere 的 IoT 平台参考架构,利用 ECS Anywhere 在边缘设备上容器化部署 Greengrass,并在 Greengrass 上部署组件,而从简化边缘设备管理和应用部署,用户可基于此扩展功能、构建基于容器的云边一体 IoT 平台。

本篇作者

使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass,物联网,java,kubernetes

姜可

亚马逊云科技资深解决方案架构师,负责协助客户业务系统上云的解决方案架构设计和咨询,现致力于 DevOps、IoT、机器学习相关领域的研究。在加入亚马逊云科技之前,曾在金融、制造、政府等行业耕耘多年,对相关行业解决方案和架构有很深的理解。

文章来源:https://dev.amazoncloud.cn/column/article/630a1502d4155422a4610a58?sc_medium=regulartraffic&amp;sc_campaign=crossplatform&amp;sc_channel=CSDN文章来源地址https://www.toymoban.com/news/detail-629191.html

到了这里,关于使用 Amazon ECS Anywhere 在边缘部署 Amazon IoT Greengrass的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 物联网MQTT通信------部署Easy IoT、SIoT

    在这次的项目开始时,我们使用了ESP32开发板,当然,需要给设备联网,这个在代码中添加, 在 使用Easy IoT时 ,需要连接一个可以访问网络的WiFi, 在使用SIoT时 只需要提供一个WiFi就可以,形成局域网,手机电脑的WiFi都可以 目录 一、MQTT概念 1.基本特点 2.基本概念 MQTT 客户端

    2024年02月04日
    浏览(46)
  • IoT DC3 是一个基于 Spring Cloud 的开源的、分布式的物联网(IoT)平台本地部署步骤

    ​​ 必要软件环境 进入原网页# 务必保证至少需要给 docker 分配:1 核 CPU 以及 4G 以上的运行内存! JDK : 推荐使用 Oracle JDK 1.8 或者 OpenJDK8 ,理论来说其他版本也行; Maven : 推荐使用 Maven 3.8 ,理论来说其他版本也行; IDE : IntelliJ IDEA 或者 Eclipse ,理论来说其他 Java IDE 也行;

    2024年02月11日
    浏览(50)
  • IoT DC3 是一个基于 Spring Cloud 全开源物联网平台 linux docker部署傻瓜化步骤

    如有不了解可先参考我的另一篇文章本地部署:IoT DC3 是一个基于 Spring Cloud 的开源的、分布式的物联网(IoT)平台本地部署步骤 如有不了解可先参考我的另一篇文章本地部署: 1 环境准备: JDK 8 以上 docker 安装好 下载docker-compose-dev.yml 文件 执行基础环境docker安装 测试前要修改本地

    2024年01月19日
    浏览(53)
  • 【小白】使用 Amazon SageMaker 构建机器学习应用【附全程部署视频】

    全程部署视频看这里,原视频30分钟左右为了观看体验剪掉了等待时间: 小白使用Amazon SageMaker 构建机器学习应用 Amazon SageMaker: https://aws.amazon.com/cn/sagemaker/ 输入名称、选择实例类型、配置磁盘大小,具体如下图 创建新角色,选择任意S3存储桶,点击创建角色 配置VPC网络,选

    2023年04月18日
    浏览(49)
  • 什么是云服务器ECS及其优势、购买、使用方式和部署建议

    阿里云服务器ECS英文全程Elastic Compute Service,云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务,阿里云提供多种云服务器ECS实例规格,如经济型e实例、通用算力型u1、ECS计算型c7、通用型g7、GPU实例等,阿里云百科aliyunbaike.com分享阿里云服务器ECS详细介绍、官网、使用教

    2024年02月02日
    浏览(44)
  • 基于阿里云ECS使用docker部署并运行开源视频会议jitsi服务

    公司有个项目,需要能够在线上课,调研了几家平台,价格偏贵,声网基于用户量给的报价是一年要50万人民币,所以就想着研究一个开源项目 Ubuntu 18.04 64位系统 使用apt-get安装docker 安装nginx https://github.com/jitsi/docker-jitsi-meet/releases/tag/stable-7439-2链接下载压缩包 tar -zxvf stable-

    2023年04月09日
    浏览(43)
  • Amazon Linux2使用kubeadm部署安装K8S集群

    在AWS上启动3台Amazon Linux2的服务器,服务器配置为2vcpu 和2GB内存 1. 修改主机名(可选步骤) 2.导入k8s的yum仓库密钥 3. 配置kubernetes源 4. 部署安装kubeadm、kubectl、docker,并且启动docker 5. 在master节点上执行初始化 具体初始化过程如下 [init] Using Kubernetes version: v1.27.1 [preflight] Runni

    2024年02月06日
    浏览(50)
  • GraalVM(云原生时代的Java)和IoT在边缘侧落地与实践

    云时代的掉队者,由于Java启动的高延时、对资源的高占用、导致在Serverless及FaaS架构下力不从心,在越来越流行的边缘计算、IoT方向上也是难觅踪影; Java语言在业务服务开发中孤独求败,但在系统级应用领域几乎是C、C++、搅局者Go、黑天鹅Rust的天下; 移动应用、敏捷应用的追

    2023年04月25日
    浏览(43)
  • 如何基于Akamai IoT边缘平台打造一个无服务器的位置分享应用

    与地理位置有关的应用相信大家都很熟悉了,无论是IM软件里的位置共享或是电商、外卖应用中的配送地址匹配,我们几乎每天都在使用类似的功能与服务。不过你有没有想过,如何在自己开发的应用中嵌入类似的功能? 本文Akamai将为大家提供一个思路,借助边缘计算技术在

    2024年02月20日
    浏览(42)
  • 【Python百宝箱】边缘计算Python库大揭秘:构建高效、智能的IoT系统

    随着边缘计算在物联网和分布式系统中的广泛应用,寻找适用于边缘设备的Python库变得愈发重要。本文将探索多个Python库,涵盖了边缘计算的各个方面,从设备管理、分布式计算到通信模块,为开发人员提供了在边缘环境中构建智能、高效分布式应用的工具和技术。 【数字图

    2024年02月20日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包