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. Spring Cloud 入门教程(二): 服务消费者(rest+ribbon)

    在上一篇文章,讲了服务的注册和发现.在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的.Spring cloud有两种服务调用方式,一种是ribbon+r ...

  2. 图解 IP 基础知识!

    我把自己以往的文章汇总成为了 Github ,欢迎各位大佬 star https://github.com/crisxuan/bestJavaer IP 协议 路由器对分组进行转发后,就会把数据包传到 ...

  3. 这可能是目前最轻量级、最支持MVVM、可定制性最高的开源Chart控件!

    由于项目中经常用到Series Chart,而目前市面又实在找不到既支持MVVM,又轻量级的开源Chart控件,于是干脆就花了两周时间随手写了一个.昨天感觉还比较满意,就发布到了Github上:htt ...

  4. C#获取时间戳的几种方式

    Console.WriteLine(Convert.ToDouble(DateTime.UtcNow.Ticks - 621355968000000000) / (10 * 1000 * 1000)) ...

  5. 浅析Python装饰器

    1.什么是装饰器 在介绍装饰器之前,我们先来思考一个问题:使用Python语言进行程序设计时,如果我们想扩展一个函数的功能,一般会怎么做呢? 比如,有一个名为print_info函数,当前该函数内只做 ...

  6. RxHttp 完美适配Android 10/11 上传/下载/进度监听

    1.前言 随着Android 11的正式发布,适配Android 10/11 分区存储就更加的迫切了,因为Android 11开始,将强制开启分区存储,我们就无法再以绝对路径的方式去读写非沙盒目录下的 ...

  7. @Transient 注解

    使用 @Transient 表示该属性并非是一个要映射到数据库表中的字段,只是起辅助作用.ORM框架将会忽略该属性

  8. Java优雅停机

    Java的优雅停机通常通过注册JDK的ShootDownHook实现,当系统接受到退出指令后,首先标记系统处于退出状态,不再接受新的消息,然后将积压的消息处理完,最后调用资源回收接口将资源销毁,最后各 ...

  9. Daphile FAQ -- 官方文档译文 [原创]

    Daphile FAQ 英文原文:https://www.daphile.com/download/FAQ.txt 采集日期:2021-01-03 常见问题解答:(FAQ) Q1:没有声音.Daphi ...

  10. 第十九章节 BJROBOT 安卓手机 APP 导航【ROS全开源阿克曼转向智能网联无人驾驶车】

    导航前说明:一定要确保你小车在构建好地图的基础上进行! 1.把小车平放在你想要构建地图区域的地板上,打开资料里的虚拟机,打开一个终端, ssh 过去主控端启动roslaunch znjrobot br ...