AWS IoT Greengrass

​ Greengrass主要是用于边缘计算或者机器学习有关,对于详细了解请阅读结尾处的官方文档,文档内容也较为丰富。

一、AWS IoT Greengrass V1

1. 概述

​ AWS Greengrass 是一种软件,用于将 AWS 云功能扩展到本地设备,使得本地设备可以更靠近信息源来收集和分析数据,同时在本地网络上安全地相互通信。更具体来说,使用 AWS Greengrass 的开发人员可以在云中编写无服务器代码 (AWS Lambda 函数),然后方便地将其部署到设备以在本地执行应用程序。在 AWS Greengrass 中,设备可在本地网络上安全地通信并互相交换消息而不必连接到云。

2. 功能

  • Lambda 运行时:可以将云上创建的 Lambda 函数部署到 Greengrass Core 上并使其运行。Lambda 函数可以和边缘物联网设备,以及云服务进行交互。
  • 影子设备:为边缘物联网设备提供 Device Shadow 服务,类似云上 Device Shadow 服务。可以通过更新和查询设备的影子,来获取和修改设备的状态。
  • 消息管理器:支持 Greengrass 组中的物联网设备之间的通信,以及与 Lambda 函数、设备影子服务之间通信。影子数据可以只保存在本地(Local Shadow),也可以同步到云上。
  • 组管理: 管理 Greengrass Group,一个 group 为一个独立的边缘物联网环境。
  • 发现服务:物联网设备可以通过连接到IoT云服务,然后通过 Discovery 功能来发现 Greengrass Core,从而与之通信。
  • 无线更新代理:可以远程更新 Greengrass Core 软件。
  • 本地资源访问:支持 Greengrass Core 上的 Lambda 函数访问本地资源,比如树莓派的GPIO,本地视频摄像头等。
  • 机器学习推理:支持将云上 ML 机器学习推理功能部署到Greengrass Core。

3. 基本架构

  • 若干本地设备和一个Greengrass Core (GGC)组成一个 Greengrass 组。与 AWS Greengrass Core 通信的所有设备都必须是 Greengrass 组的成员。每个组都必须包含 AWS Greengrass Core (似乎一个组只能有一个 GGC)。Discovery API 使设备能够检索连接到 AWS Greengrass Core (与设备位于同一 Greengrass 组中) 所需的信息。
  • 本地设备和 Greengrass Core 通过本地网络通信,可以不用访问云(Discovery Service 需要设备在启动时连接到云上获取到 GG Core 的连接信息)。设备上必须安装 AWS IoT Device SDK。
  • Greengrass 可以和云通信,需要有互联网访问能力。
  • 可以在 Greengrass Core 上运行 Lambda 函数,这些函数可以和设备之间通信,也可以和云通信。
  • 云上的配置、Lambda 函数以及机器学习模版通过 『Deploy』 被安装到 Greengrass Core 上。Greengrass Core 上有一个部署代理,它在接到通知后,从云上获取待部署材料,然后在 Greengrass Core 上进行部署。
  • 组中设备连接到GGC 的过程:
    • AWS IoT 设备使用其设备证书、私有密钥和 AWS IoT 根 CA 连接到 Greengrass 云服务。
    • 连接后,AWS IoT 设备将使用 Greengrass Discovery Service 查找其 AWS Greengrass 核心设备的 IP 地址。该设备还可下载组的根 CA 证书,该证书可用于对 Greengrass 核心设备进行身份验证。
    • AWS IoT 设备尝试连接到 AWS Greengrass Core,并传递其设备证书和客户端 ID。如果客户端 ID 与设备的事物名称匹配并且证书有效,则将进行连接。否则,将终止连接。

4. 相关角色功能

  • AWS IoT Core

    • AWS IoT Core 是一款托管的云服务,让互联设备与云应用程序及其他设备交互。AWS IoT Core 可以支持数十亿台设备和数万亿条消息,并且可以对这些消息进行处理并将其安全可靠地路由至 AWS 终端节点和其他设备。借助 AWS IoT Core,应用程序可以随时跟踪所有设备并与其通信。

    • 借助 AWS IoT Core,还可以使用一系列 Amazon 服务来构建 IoT 应用程序,以便收集、处理和分析互联设备生成的数据并据之采取行动。

    • 同时也提供控制台配置 Greengrass,从而简化开发和部署过程。Greengrass组内本地设备Lambda等初始化时需要先与云连接获取Greengrass Core的信息,之后可以通过本地网络通信可与云网络断开。

    • 远程监控的作用

  • AWS IoT Greengrass

    ​ GreenGrass则弥补上了AWS云和IoT设备之间的中间段,主要处理的就是边缘计算这一部分,尤其在和AWS云服务中断同时也能够继续运行,甚至可以在边缘设别上继续执行Lambda应用

    • AWS IoT Greengrass Core

      • 可以执行AMS Lambda,进行消息传输,设备遮蔽(device shadows),安全性保护以及和云端进行通讯
    • Lambda
      • Greengrass 可将 Lambda 函数扩展到边缘站点。Lambda 函数是按需运行或者无限运行的小应用程序。可以使用本地 Lambda 函数脱机响应设备
      • Lambda 函数使用 AWS IoT Greengrass Core 开发工具包与 AWS IoT Greengrass Core 进行本地交互。允许已部署的 Lambda 函数与 AWS IoT Core 交换 MQTT 消息、与 Greengrass 组中的连接器、设备及其他 Lambda 函数交换 MQTT 消息等
      • 也可以处理筛选设备数据,然后再将数据传输到云
    • Device
      • 设备通过AWS IoT 设备开发工具包用于和Greengrass Core通讯,发布和接受Greengrass的消息。
      • 通常IoT设备都不是独立工作,各个设备之间能够通讯和协作,同时不同的Greengrass Core之间也可以协作

5. 主要组件

​ AWS IoT Greengrass 由一种云服务和三个适用于 IoT 设备的软件发行版组成:AWS IoT Greengrass Core、AWS IoT 设备开发工具包和 AWS IoT Greengrass 开发工具包

用途 运行位置
AWS IoT Greengrass Core 提供本地服务(计算、消息收发、状态、安全),并在本地与运行 AWS IoT 设备开发工具包的设备通信 运行通用操作系统(如 Linux)、基于 CPU 的 64 位设备(x86 或 Arm)。
AWS IoT 设备开发工具包(aws-iot-device-sdk) 允许设备与 AWS IoT Greengrass Core 在本地交互 几乎所有支持 C++ 或 Python 2.7 和 3.7 的设备。同时包含在 FreeRTOS 中
AWS IoT Greengrass 开发工具包(aws-greengrass-core-sdk) 允许 Lambda 函数与 AWS IoT Greengrass Core 中的本地服务进行交互 在部署到 AWS IoT Greengrass Core 的 Lambda 函数中

二、AWS IoT Greengrass V2

1. 概述

​ AWS IoT Greengrass V2是开源的物联网边缘运行时和云服务,可帮助您在设备上构建,部署和管理IoT应用程序。AWS IoT Greengrass使您的设备可以在更接近数据生成位置的地方收集和分析数据,对本地事件进行自动响应,并与局域网上的其他设备进行安全通信。Greengrass设备还可以与AWS IoT Core安全通信,并将IoT数据导出到AWS Cloud。您可以使用AWS IoT Greengrass使用称为组件的预构建软件模块来构建边缘应用程序,这些模块可以将边缘设备连接到AWS服务或第三方服务。您还可以使用AWS IoT Greengrass使用Lambda函数、Docker容器、本地操作系统进程、或者自定义运行时等。

2. 基本架构

  • AWS IoT Greengrass client software(aws-greengrass-nucleus),运行在基于 linux 的发行版上。通过 AWS IoT Greengrass,你可以编程设备对它们产生的数据进行本地操作,运行基于机器学习模型的预测,过滤和聚合设备数据。可以在本地执行 AWS Lambda 函数、 Docker 容器、本地操作系统进程或自定义运行时。
  • AWS IoT Greengrass 提供了预先构建的软件模块,称为组件,可以轻松扩展边缘设备功能。AWS 的 IoT Greengrass 组件能够连接到 AWS 服务和边缘的第三方应用程序。在开发完物联网应用程序之后,AWS IoT Greengrass 可以远程部署、配置和管理这些应用程序。

4. 相关角色功能

  • Greengrass core device

    • 一个运行AWS IoT Greengrass Core软件的设备。Greengrass core device是 AWS 的物联网事物。可以将多个核心设备添加到 AWS 的物联网事物组中,创建 Greengrass core设备组
  • AWS IoT Greengrass Core software

    • 安装在核心设备上的所有 AWS 物联网软件的超集。Greengrass Core software由以下几部分组成:

      • Nucleus

        所需的组件包括 Greengrass Core software的最低功能。该核心管理其他组件的部署、编制和生命周期管理。它也促进了 AWS 物联网组件之间的进程间通信

      • Optional components

        AWS 提供的可配置组件,可以在边缘设备上增加额外功能。根据自身需求可以选择要部署到设备的可选组件,例如数据流、本地机器学习推理或本地命令行界面等

  • Greengrass component

    • 部署在 Greengrass 核心设备上并在其上运行的软件模块。所有与 AWS IoT Greengrass一起开发和部署的软件都是作为一个组件建模的。AWS IoT Greengrass 提供了预先构建的公共组件,它们提供可以在应用程序中使用的特性和功能。还可以在本地设备或云中开发自己的定制组件。在开发了一个定制组件之后,可以使用 AWS IoT Greengrass云服务将其部署到单核或多核设备上。您可以创建自定义组件并将该组件部署到核心设备

三、AWS IoT Greengrass V1-V2相异点

1. V2 New

  • 开源,github:https://github.com/aws-greengrass
  • 模块化,可根据实际资源用途等添加/删除预构建的软件组件
  • 新的本地开发工具,可本地开发和调试应用程序
  • 改进的应用部署

2. 差异

  • 组和部署方式

    • V1中,一个组定义了一个核心设备,该核心设备的设置和软件以及连接到该核心设备的AWS IoT列表
    • V2中,可以使用部署来定义在核心设备上运行的软件组件和配置,每个部署都针对单个核心设备或可以包含多个核心设备的AWS IoT事物组
  • Core software和连接器
    • V1中,AWS IoT Greengrass Core软件是一个软件包,其中包含该软件及其所有功能。AWS IoT Greengrass连接器是您部署到AWS IoT Greengrass V1核心设备的模块
    • V2中,AWS IoT Greengrass Core软件是模块化的,因此可以选择安装内容以控制内存占用量。Greengrass nucleus component是处理其他组件的部署,业务流程和生命周期管理的AWS IoT Greengrass Core软件的最低必需安装。流管理器,秘密管理器和日志管理器等功能是仅在需要这些功能时才部署的组件。AWS IoT Greengrass V2还提供了一些AWS IoT Greengrass V1连接器作为组件
  • Lambda函数
    • V1中,Lambda 函数定义了在核心设备上运行的软件。在每个 Greengrass 组中,定义该函数使用的订阅和本地资源
    • V2中,组件是在核心设备上运行的软件。组件可以由任何软件组成,每个组件都有一个配方,定义组件的元数据、参数、依赖项和脚本,以便在组件生命周期的每个步骤中运行
  • Subscriptions
    • V1中,订阅指定 Lambda 函数接收事件消息的位置作为函数有效负载。功能订阅本地发布/订阅消息和 AWS 物联网核心 MQTT 消息
    • V2中,组件管理自己对本地发布/订阅和 AWS 的 IoT Core MQTT 消息的订阅。在组件配方中,定义授权策略以指定组件可以使用哪些主题进行通信。在组件代码中,您可以为本地发布/订阅消息和 AWS IoT Core MQTT 消息使用进程间通信(IPC)
  • 本地资源
    • V1中,Lambda 函数运行在容器中,可以配置这些容器来访问核心设备文件系统中的卷和设备
    • V2中,组件运行在容器之外,因此不需要指定组件可以访问哪些本地资源。可以开发直接使用核心设备上的本地资源的组件。还可以开发运行 Docker 容器的组件

四、官方文档

AWS IoT Greengrass是什么?V1和V2版本及其差异的更多相关文章

  1. 云中树莓派(5):利用 AWS IoT Greengrass 进行 IoT 边缘计算

    云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 云中树莓派(3):通过 AWS IoT 控制树莓派上的Led 云中树莓派(4):利用声音传感 ...

  2. 使用mitmproxy嗅探双向认证ssl链接——嗅探AWS IoT SDK的mqtts

    亚马逊AWS IoT使用MQTTS(在TLS上的MQTT)来提供物联网设备与云平台直接的通信功能.出于安全考虑,建议给每个设备配备了证书来认证,同时,设备也要安装亚马逊的根证书:这样,在使用8883端 ...

  3. Andriod Studio两种签名机制V1和V2的区别

    Android Studio 2.2以上版本打包apk的时候,我们会发现多了个签名版本(v1.v2)选择,如下图红色方框所示 问题描述(v1和v2) Android 7.0中引入了APK Signat ...

  4. 云中树莓派(3):通过 AWS IoT 控制树莓派上的 Led

    云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 云中树莓派(3):通过 AWS IoT 控制树莓派上的Led 云中树莓派(4):利用声音传感 ...

  5. 云中树莓派(2):将传感器数据上传到 AWS IoT 并利用Kibana进行展示

    云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 1. 传感器安装及配置 1.1 DHT22 安装 DHT22 是一款温度与湿度传感器,它有3 ...

  6. Android Studio 打包时 Signature Version 选择V1还是V2 ?

    只勾选V2会导致 7.0 以下的安卓机出现 INSTALL_PARSE_FAILED_NO_CERTIFICATES 的问题 ,推荐全选. 解决方案一v1和v2的签名使用1)只勾选v1签名并不会影响什 ...

  7. 国外物联网平台(1):亚马逊AWS IoT

    国外物联网平台(1)——亚马逊AWS IoT 马智 平台定位 AWS IoT是一款托管的云平台,使互联设备可以轻松安全地与云应用程序及其他设备交互. AWS IoT可支持数十亿台设备和数万亿条消息,并 ...

  8. Atitit jquery  1.4--v1.11  v1.12  v2.0  3.0 的新特性

    Atitit jquery  1.4--v1.11  v1.12  v2.0  3.0 的新特性 1.1. Jquery1.12  jQuery 2.2 和 1.12 新版本发布 - OPEN资讯.h ...

  9. ESP8266文档阅读2A-SDK-Espressif IoT SDK 使用手册v1.0.1.pdf

    2A-SDK-Espressif IoT SDK 使用手册v1.0.1.pdf 1.前言 本⽂文主要介绍基于ESP8266物联⺴⽹网模块的SDK相关使⽤用⽅方法,包括开发⼯工具使⽤用以及SDK软件包架 ...

随机推荐

  1. 容器编排系统之ReplicaSet和Deployment控制器

    前文我们了解了k8s上的Pod资源的生命周期.健康状态和就绪状态探测以及资源限制相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14143610.htm ...

  2. 拒绝造轮子!如何移植并使用Linux内核的通用链表(附完整代码实现)

    在实际的工作中,我们可能会经常使用链表结构来存储数据,特别是嵌入式开发,经常会使用linux内核最经典的双向链表 list_head.本篇文章详细介绍了Linux内核的通用链表是如何实现的,对于经常使 ...

  3. [WPF] 在 ViewModel 中让数据验证出错(Validation.HasError)的控件获得焦点

    1. 需求 在 MVVM 中 ViewModel 和 View 之间的交互通常都是靠 Icommand 和 INotifyPropertyChanged,不过有时候还会需要从 MVVM 中控制 Vie ...

  4. 【实时渲染】实时3D渲染如何加速汽车线上体验应用推广

    在过去,一支优秀的广告片足以让消费者对一辆汽车产生兴趣.完美的底盘线条或引擎的轰鸣声便会让潜在买家跑到经销商那里试驾.现在,广告还是和往常一样,并没有失去其特性,但86%的买家在与销售交流之前会在网上 ...

  5. CentOS7下常用安装服务软件yum方式的介绍

    简介:介绍yum软件包的管理并配置本地yum源 yum安装:基于 C/S 架构,yum安装称之为傻瓜式安装 yum安装优点:方便快捷,不用考虑包依赖,自动下载软件包. yum安装缺点:人为无法干预,无 ...

  6. Raft算法系列教程4:日志不一致的解决

    网络不可能一直处于正常情况,因为Leader或者某个Follower有可能会崩溃,从而导致日志不能一直保持一致.因此存在以下三种情况: (1)Follower缺失当前Leader上存在的日志条目.(2 ...

  7. JavaDailyReports10_17

    学习JavaWeb第一天 输出我的第一个HelloWorld! 1 <%@ page language="java" import="java.util.*&quo ...

  8. Spring IOC 笔记

    什么是IOC与DI IOC(inversion of control) 它描述的其实是一种面向对象编程中的设计原则,用来降低代码之间的耦合度, 而DI(dependency Injection)依赖注 ...

  9. Win10下mysql5.5和mysql8.0.19共存

    Win10下mysql5.5和mysql8.0.19共存 需求:由于之前做的项目用的是mysql5.5,而新接的项目指定用mysql8,需要myql5..5和8同时存在运行. 前提:电脑已经安装mys ...

  10. 如何下载youtube的视频?

    导言 当youtube视频需要下载时,发现需要会员等其他限制 别急,下面就是比较稳定的方法 准备 gitub链接 youtube-dl github 官网链接 官网 按照官网提示下载对应版本 我这里是 ...