欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

什么是 AWS IoT Greengrass

程序员文章站 2022-07-14 22:47:18
...
AWS IoT Greengrass 是将云功能扩展到本地设备的软件。该软件使设备能够收集和分析更靠近信息源的数据,自主应对本地事件,并在本地网络上相互安全地通信。AWS IoT Greengrass 开发人员可以使用 AWS Lambda 函数和预先构建的 connectors来创建可部署到设备中用于本地执行的无服务器应用程序。

下图演示了 AWS IoT Greengrass 的基本架构。


AWS IoT Greengrass 使客户能够构建 IoT 设备和应用程序逻辑。具体来说,AWS IoT Greengrass 对设备上运行的应用程序逻辑提供基于云的管理。在本地部署的 Lambda 函数和 connectors 通过本地事件以及来自云或其他来源的消息触发。

在 AWS IoT Greengrass 中,设备可在本地网络上安全地通信并互相交换消息而不必连接到云。AWS IoT Greengrass 提供了一个本地发布/订阅消息管理器,该管理器可在丢失连接的情况下智能地缓冲消息,使云的入站和出站消息得到保留。

AWS IoT Greengrass 保护用户数据:

通过安全的设备身份验证和授权。

通过本地网络中的安全连接。

在本地设备与云之间。

设备安全凭证在撤销之前一直在组中有效,即使到云的连接中断,设备可以继续在本地安全地进行通信。

AWS IoT Greengrass 提供了 Lambda 函数的安全、无线的软件更新。

AWS IoT Greengrass 包含以下内容:

软件分发

AWS IoT Greengrass Core 软件

AWS IoT Greengrass Core 开发工具包

云服务

AWS IoT Greengrass API

功能

Lambda 运行时

影子实施

消息管理器

组管理

发现服务

无线更新代理

本地资源访问

机器学习推理

本地密钥管理器

AWS IoT Greengrass 核心软件
AWS IoT Greengrass Core软件提供了以下功能:

connectors 和 Lambda 函数的部署与本地执行。

本地密钥的安全、加密的存储以及 connectors 和 Lambda 函数进行的受控访问。

使用托管订阅通过本地网络在设备、connectors 和 Lambda 函数之间进行的 MQTT 消息传递。

使用托管订阅在 AWS IoT 与设备、connectors 和 Lambda 函数之间进行的 MQTT 消息传递。

使用设备身份验证和授权确保设备和云之间的安全连接。

设备的本地影子同步。影子可配置为与云同步。

对本地设备和卷资源的受控访问。

用于运行本地推理的云训练机器学习模型的部署。

使设备能够发现 Greengrass 核心设备的自动 IP 地址检测。

全新的或更新的组配置的集中部署。下载配置数据后,核心设备将自动重启。

用户定义的 Lambda 函数的安全、无线的软件更新。

AWS IoT Greengrass Core实例通过可创建和更新存储在云中的 AWS IoT Greengrass 组定义的 AWS IoT Greengrass API 进行配置。

AWS IoT Greengrass 核心版本
以下选项卡介绍了 AWS IoT Greengrass Core软件版本的新增功能和更改。

GGC v1.7.0GGC v1.6.0GGC v1.5.0GGC v1.3.0GGC v1.1.0GGC v1.0.0
当前版本。

新功能:

Greengrass 连接器提供与本地基础设施、设备协议、AWS 以及其他云服务的内置集成。有关更多信息,请参阅 使用 Greengrass Connectors 与服务和协议集成。

AWS IoT Greengrass 将 AWS Secrets Manager 扩展到核心设备,从而使密码、令牌和其他密钥可用于连接器和 Lambda 函数。传输和静态中的密钥均经过加密。有关更多信息,请参阅将密钥部署到 AWS IoT Greengrass 核心。

支持可信硬件根安全选项。有关更多信息,请参阅 硬件安全性集成。

隔离和权限设置,允许 Lambda 函数在无 Greengrass 容器的情况下运行,并允许使用指定用户和组的权限。有关更多信息,请参阅使用组特定配置控制 Greengrass Lambda 函数的执行。

您可以通过将 Greengrass 组配置为在不进行容器化的情况下运行,来在 Docker 容器(在 Windows、macOS 或 Linux 上)中运行 AWS IoT Greengrass。有关更多信息,请参阅在 Docker 容器中运行 AWS IoT Greengrass。

端口 443 上使用应用程序层协议协商 (ALPN) 或网络代理连接的 MQTT 消息收发。有关更多信息,请参阅 通过端口 443 或网络代理进行连接。

Amazon SageMaker Neo 深度学习运行时,支持经过 Amazon SageMaker Neo 深度学习编译器优化的机器学习模型。有关 Neo 深度学习运行时的信息,请参阅ML 推理的运行时和预编译框架库。

支持在 Raspberry Pi 核心设备上使用 Raspbian Stretch (2018-06-27)。

错误修复和改进:

一般的性能改进和缺陷修复。

此外,此版本还提供以下功能:

适用于 AWS IoT Greengrass 的 AWS IoT Device Tester,可用来验证 CPU 架构、内核配置和 AWS IoT Greengrass 使用的驱动器。有关更多信息,请参阅 适用于 AWS IoT Greengrass 的 AWS IoT Device Tester 用户指南。

通过 Amazon CloudFront 可下载 AWS IoT Greengrass Core 软件、AWS IoT Greengrass Core 开发工具包和 AWS IoT Greengrass Machine Learning SDK软件包。有关更多信息,请参阅AWS IoT Greengrass 下载。

AWS IoT Greengrass 组
AWS IoT Greengrass 组 是一系列设置和组件,例如 AWS IoT Greengrass Core、设备和订阅。组用于定义交互范围。例如,一个组可能表示建筑物的一层、一辆卡车或整个采矿场所。下图显示了可以构成 Greengrass 组的组件。


在上图中:

A:AWS IoT Greengrass 组定义
有关 AWS IoT Greengrass 组的一组信息。

B:AWS IoT Greengrass 组设置
包括:

AWS IoT Greengrass 组 角色。

证书颁发机构和本地连接配置。

AWS IoT Greengrass Core连接信息。

默认 Lambda 运行时环境。有关更多信息,请参阅在组中设置 Lambda 函数的默认容器化。

CloudWatch 和本地日志配置。有关更多信息,请参阅利用 AWS IoT Greengrass 日志进行监控。

C:AWS IoT Greengrass Core
表示 AWS IoT Greengrass Core的 AWS IoT 事物。有关更多信息,请参阅配置 AWS IoT Greengrass 核心。

D:Lambda 函数定义
核心上本地运行的 Lambda 函数的列表,包含关联的配置数据。有关更多信息,请参阅在 AWS IoT Greengrass 核心上运行 Lambda 函数。

E:订阅定义
允许使用 MQTT 消息进行通信的订阅列表。订阅定义了:

消息源和消息目标。这些可能是设备、Lambda 函数、connectors、AWS IoT 和本地阴影服务

主题,这是 MQTT 主题或用于筛选消息数据的主题筛选条件。

有关更多信息,请参阅Greengrass 消息收发工作流程。

F:Connector 定义
核心上本地运行的 connectors 的列表,包含关联的配置数据。有关更多信息,请参阅使用 Greengrass Connectors 与服务和协议集成。

G:设备定义
作为 AWS IoT Greengrass 组 的成员的 AWS IoT 事物(设备)以及关联的配置数据的列表。有关更多信息,请参阅AWS IoT Greengrass 中的设备。

H:资源定义
AWS IoT Greengrass Core 上的本地资源、机器学习资源和密钥资源的列表,包含关联的配置数据。有关更多信息,请参阅使用 Lambda 函数访问本地资源、执行机器学习推理和将密钥部署到 AWS IoT Greengrass 核心。

部署后,AWS IoT Greengrass 组定义、Lambda 函数、connectors、资源和订阅表将复制到 AWS IoT Greengrass Core设备中。

AWS IoT Greengrass 中的设备
设备有两种类型:

AWS IoT Greengrass 核心
Greengrass 核心是运行 AWS IoT Greengrass Core 软件的 AWS IoT 设备,该软件使设备能够直接与 AWS IoT 和 AWS IoT Greengrass 云服务进行通信。核心具有自己的证书,用于在 AWS IoT 中进行身份验证。它具有设备影子并存在于 AWS IoT 设备注册表中。AWS IoT Greengrass 核心运行本地 Lambda 运行时、部署代理和 IP 地址跟踪器(用于将 IP 地址信息发送到 AWS IoT Greengrass 云服务以允许 Greengrass 设备自动发现其组和核心连接信息)。有关更多信息,请参阅 配置 AWS IoT Greengrass 核心。

连接到 Greengrass 核心的 AWS IoT 设备
这些 Greengrass 设备 将被添加到 Greengrass 组并运行 Amazon FreeRTOS 或已安装 AWS IoT 设备开发工具包。有关更多信息,请参阅 Amazon FreeRTOS 用户指南 中的 AWS IoT Greengrass Discovery 库 或 AWS IoT 开发人员指南 中的 AWS IoT 开发工具包。

Greengrass 设备将连接到 AWS IoT Greengrass Core。它们还可以配置为与 Lambda 函数、connectors和组中的其他设备进行通信,以及与 AWS IoT 或本地影子服务通信。如果核心设备丢失与云的连接,这些设备可通过本地网络继续进行通信。设备的尺寸可能不同 - 从基于微控制器的小型设备到大型设备。

下表显示了这些设备类型的相关性。


AWS IoT Greengrass Core设备在两个位置存储证书:

/greengrass/certs 中的核心设备证书 - 核心设备证书命名为 hash.cert.pem(例如,86c84488a5.cert.pem)。此证书用于在连接到 AWS IoT 和 AWS IoT Greengrass 服务时对核心进行身份验证。

/greengrass-root/ggc/var/state/server 中的 MQTT 核心服务器证书 - MQTT 核心服务器证书名为 server.crt。此证书用于本地 MQTT 服务 (位于 Greengrass 核心上) 和 Greengrass 设备之间交换消息之前的双向身份验证。

开发工具包
AWS 提供的以下开发工具包可用于 AWS IoT Greengrass:

GGC 1.7.0GGC 1.6.0GGC v1.5.0GGC v1.3.0GGC v1.1.0GGC v1.0.0
AWS 软件开发工具包
使用此 AWS 开发工具包可构建与任何 AWS 服务(包括 Amazon S3、Amazon DynamoDB、AWS IoT、AWS IoT Greengrass 等)交互的应用程序。在 AWS IoT Greengrass 的上下文中,您可以使用已部署的 Lambda 函数中的 AWS 开发工具包对任何 AWS 服务进行直接调用。有关更多信息,请参阅 AWS 开发工具包。

AWS IoT设备软件开发工具包
AWS IoT 设备开发工具包可帮助设备连接到 AWS IoT 或 AWS IoT Greengrass 服务。设备必须知道它们所属的 AWS IoT Greengrass 组以及它们应连接到的 AWS IoT Greengrass Core的 IP 地址。

尽管您可以使用任一 AWS IoT 设备开发工具包平台连接到 AWS IoT Greengrass Core,但只有 C++ 和 Python 开发工具包提供 AWS IoT Greengrass 专用的功能,例如访问 AWS IoT Greengrass Discovery Service 和 AWS IoT Greengrass Core根 CA 下载。有关详细信息,请参阅 AWS IoT 设备开发工具包。

AWS IoT Greengrass 核心开发工具包
AWS IoT Greengrass 核心开发工具包允许 Lambda 函数与 Greengrass 核心交互,将消息发布到 AWS IoT,与本地影子服务交互,调用其他部署的 Lambda 函数和访问密钥资源。此开发工具包由 AWS IoT Greengrass Core上运行的 Lambda 函数使用。有关更多信息,请参阅 AWS IoT Greengrass Core 开发工具包。

AWS IoT Greengrass Machine Learning SDK
AWS IoT Greengrass Machine Learning SDK允许 Lambda 函数使用作为机器学习资源部署到 Greengrass 核心的机器学习模型。此开发工具包由 AWS IoT Greengrass Core上运行的与本地推理服务交互的 Lambda 函数使用。有关更多信息,请参阅AWS IoT Greengrass Machine Learning SDK。

支持的平台和要求
在此处列出的平台上支持 AWS IoT Greengrass Core软件,并且该软件需要使用几个依赖项。

注意

您可以从 AWS IoT Core 控制台的软件页面下载核心软件或从 AWS IoT Greengrass Core 软件下载下载。

GGC v1.7.0GGC v1.6.0GGC v1.5.0GGC v1.3.0GGC v1.1.0GGC v1.0.0
支持的平台:

架构:ARMv7l;操作系统:Linux;发行版:Raspbian Stretch, 2018-06-29。尽管多个版本可与 AWS IoT Greengrass 一起使用,我们还是建议使用此版本,因为这是官方支持的发行版。

架构:x86_64;操作系统:Linux;发行版:Amazon Linux (amzn-ami-hvm-2016.09.1.20170119-x86_64-ebs),Ubuntu 14.04 – 16.04

架构:ARMv8 (AArch64);操作系统:Linux;发行版:Arch Linux

Windows、macOS 和 Linux 平台可以在 Docker 容器中运行 AWS IoT Greengrass。有关更多信息,请参阅在 Docker 容器中运行 AWS IoT Greengrass。

需要以下项目:

最低 128 MB RAM(分配给 AWS IoT Greengrass Core设备)。

Linux 内核 4.4 或更高版本:虽然 AWS IoT Greengrass 可以使用多个版本,但是为了实现最佳安全性和性能,建议使用 4.4 或更高版本。

Glibc 库 2.14 或更高版本。

设备上必须存在 /var/run 目录。

AWS IoT Greengrass 需要在设备上启用硬链接和软链接保护。没有此保护,AWS IoT Greengrass 只能使用 -i 标记在不安全的模式下运行。

设备上必须存在 ggc_user 和 ggc_group 用户和组。

必须在设备上启用以下 Linux 内核配置:

命名空间:CONFIG_IPC_NS、CONFIG_UTS_NS、CONFIG_USER_NS、CONFIG_PID_NS

CGroups:CONFIG_CGROUP_DEVICE、CONFIG_CGROUPS、CONFIG_MEMCG

其他:CONFIG_POSIX_MQUEUE、CONFIG_OVERLAY_FS、CONFIG_HAVE_ARCH_SECCOMP_FILTER、CONFIG_SECCOMP_FILTER、CONFIG_KEYS、CONFIG_SECCOMP

必须已启用 /dev/stdin、/dev/stdout 和 /dev/stderr。

Linux 内核必须支持 cgroups。

必须已启用并挂载内存 cgroup 以允许 AWS IoT Greengrass 为 Lambda 函数设置内存限制。

系统信任存储中必须存在 Amazon S3 和 AWS IoT 的根证书。

以下项目可能是可选的:

如果使用具有本地资源访问权限 (LRA) 的 Lambda 函数打开 AWS IoT Greengrass Core设备上的文件,则必须启用并挂载设备 cgroup。

如果使用 Python Lambda 函数,则需要 Python 版本 2.7。如果是这样,请确保它已添加到您的 PATH 环境变量中。

如果使用 Node.JS Lambda 函数,则需要 NodeJS 6.10 版或更高版本。如果是这样,请确保它已添加到您的 PATH 环境变量中。

如果使用 Java Lambda 函数,则需要 Java 版本 8 或更高版本。如果是这样,请确保它已添加到您的 PATH 环境变量中。

Greengrass OTA 代理 需要以下命令:wget、realpath、tar、readlink、basename、dirname、pidof、df、grep 和 umount。

AWS IoT Greengrass 下载
您可以使用以下信息来查找并下载可与 AWS IoT Greengrass 结合使用的软件。

AWS IoT Greengrass 核心软件
AWS IoT Greengrass 软件将 AWS 功能扩展到 AWS IoT Greengrass Core设备,使本地设备可以在本地操作它们所生成的数据。

v1.7.1 v1.6.1
架构:AArch64;操作系统:Linux。

架构:ARMv7l;操作系统:Linux。

架构:x86_64;操作系统:Linux。

AWS IoT Greengrass 核心开发工具包软件
AWS IoT Greengrass Core 开发工具包可使 Lambda 函数与运行它们的 AWS IoT Greengrass Core进行交互。

v1.3.0 v1.2.0
Java 8。

Node JS 6.10。

Python 2.7。

AWS IoT Greengrass Docker 软件
通过 AWS IoT Greengrass Docker 软件下载,您可以在 Docker 容器中运行 AWS IoT Greengrass。有关说明,请参阅 Docker 文件。

v1.7.1
Docker v1.7.1。

AWS IoT Greengrass ML 开发工具包软件
通过 AWS IoT Greengrass Machine Learning SDK,您编写的 Lambda 函数可以使用设备上可用的机器学习模型。

v1.0.0
Python 2.7。