- 物联网›
- AWS IoT Greengrass›
- 常见问题
AWS IoT Greengrass 常见问题
一般性问题
什么是 AWS IoT Greengrass?
AWS IoT Greengrass 是一个物联网 (IoT) 开源边缘运行时和云服务,可帮助您构建、部署和管理设备软件。客户利用 AWS IoT Greengrass 在家庭、工厂、车辆和企业的数百万台设备上进行其物联网应用。您可以对设备进行编程,使其在本地操作所生成的数据,基于机器学习模型执行预测,筛选和聚合设备数据,并仅将所需信息传输到云。
AWS IoT Greengrass 可让您快速轻松地构建智能设备软件。AWS IoT Greengrass 支持本地处理、消息收发、数据管理、机器学习推理,并提供预构建组件以加速应用程序开发。AWS IoT Greengrass 还提供一种安全的方法,可将边缘设备无缝连接到任何 AWS 服务以及第三方服务。
软件开发完成后,AWS IoT Greengrass 让您可以在现场远程管理和操作设备上的软件,而无需进行固件更新。AWS IoT Greengrass 可帮助您的设备保持最新状态,并随着时间的推移使其更加智能。
如何开始使用 AWS IoT Greengrass?
请点击此处参阅 AWS IoT Greengrass 入门指南。您可以在 AWS IoT 合作伙伴设备目录中查阅合格设备列表。
AWS IoT Greengrass 服务已在哪些 AWS 区域推出?
如需了解与 AWS IoT Greengrass 已推出区域有关的最新信息,请参阅 AWS 区域表。
AWS IoT Greengrass 包括哪些主要组件? 每个组件的作用是什么?
AWS IoT Greengrass 由一种云服务和两个适用于 IoT 设备的软件发行版组成:AWS IoT Greengrass Core、AWS IoT 设备软件开发工具包和 AWS IoT Greengrass 软件开发工具包。一旦在您的设备上安装了软件发行版,您就可以使用 AWS IoT Greengrass 进一步添加或删除功能、组件,并管理您的物联网设备应用程序。
下表介绍了主要组件。AWS IoT Greengrass 还可与 FreeRTOS 一起使用。有关 AWS IoT Greengrass 和 FreeRTOS 的更多信息,请参阅“常见问题”部分:将 FreeRTOS 和其他设备连接到 AWS IoT Greengrass。
目的 | 运行位置 |
|
---|---|---|
AWS IoT Greengrass Core | 提供本地服务(计算、消息收发、状态、安全),并在本地与运行 AWS IoT 设备开发工具包的设备通信 | 运行通用操作系统(如 Linux)、基于 CPU 的 64 位设备(x86 或 Arm)。 |
AWS IoT 设备开发工具包 | 允许设备与 AWS IoT Greengrass Core 在本地交互 | 几乎所有支持 C++、Node.js、Java 或 Python 2.7、3.7 和 3.8 的设备。 |
AWS IoT Greengrass 软件开发工具包* | 允许 Lambda 函数与 AWS IoT Greengrass Core 中的本地服务进行交互 | 在部署到 AWS IoT Greengrass Core 的 Lambda 函数中 |
*仅 AWS IoT Greengrass 版本 1 需要
什么是 AWS IoT Greengrass Core 设备? 这类设备必须达到哪些最低硬件规格?
AWS IoT Greengrass Core 软件可在 IoT 设备、网络集线器或网关上运行,能够自动与云同步和交互。AWS IoT Greengrass Core 旨在在配备通用处理器的设备上运行,这种处理器非常强大,能够运行 Linux 等通用操作系统。AWS IoT Greengrass 需要至少 1 GHz 的计算频率(Arm 或 x86)、96MB* RAM(v2.0 边缘运行时或更高版本)以及其他资源,才能根据使用案例满足所需操作系统、消息吞吐量和 AWS Lambda 执行的要求。从 Raspberry Pi 到服务器级设备,AWS IoT Greengrass Core 可在各种设备上运行。
*基于使用以下 JDK 的 AWS 研究:用于测试的 JDK 版本:openjdk 版本“1.8.0_275”、OpenJDK Runtime Environment(内部版本 1.8.0_275-8u275-b01-0ubuntu1~18.04-b01),以及 OpenJDK 64 位 Server VM(内部版本 25.275-b01,混合模式)。使用不同的输入,内存使用率可能会更高。
AWS IoT Greengrass 支持哪些 AWS Lambda 开发语言?
AWS IoT Greengrass 支持使用以下语言编写的 Lambda 函数:
- Python 2.7、3.7 和 3.8
- Node v8.10 和 v12.x
- Java 8 或更高版本
- C
- C++
- 支持导入 C 库的任何语言
哪些 Lambda 可以部署到 AWS IoT Greengrass?
使用 Python 2.7、3.7 或 3.8、Node v8.10 或 v12.x,或 Java 8 Lambda Runtime 的任何 Lambda 都可以部署到 AWS IoT Greengrass Core。部署到 AWS IoT Greengrass 的 Lambda 必须与 AWS IoT Greengrass Core 软件开发工具包打包在一起。此外,您还可以选择将 AWS 开发工具包添加到您的 Lambda 软件包中,以便轻松与 Amazon DynamoDB 等 AWS 服务进行交互。
请注意:当 AWS IoT Greengrass Core 处于脱机模式时,您的 Lambda 所依赖的一些云服务(例如,DynamoDB)将不能供您的 Lambda 函数使用,并且这些服务在脱机模式下无法调用 API。此外,如果您在同一软件包中同时包含 AWS IoT Greengrass Core SDK 和 AWS SDK,则您的 Lambda 函数需要为每种 SDK 使用相应的命名空间。
我可以在 Docker 容器中使用 AWS IoT Greengrass 吗?
是的,您可以在 AWS IoT Greengrass 设备上运行 Docker 容器,或者在 Docker 容器环境中运行 AWS IoT Greengrass。
您可以使用 AWS IoT Greengrass 部署、运行和管理 Docker 容器。您可以使用任何第三方工具构建 Docker/Open Container Initiative (OCI) 映像,且 Docker 镜像可以存储在 Docker 容器注册表中,如 Amazon Elastic Container Registry (Amazon ECR)、Docker Hub 或私有 Docker Trusted Registry (DTR)。
您可以通过将 AWS IoT Greengrass 组配置为在不进行 Lambda 容器化的情况下运行,以在 Docker 容器中运行 AWS IoT Greengrass。首先,您可以在此处访问 AWS IoT Greengrass Docker 文件,并且您可以在此处查看文档,了解如何从 Amazon ECR 拉取 AWS IoT Greengrass Docker 镜像。您还可以将 AWS IoT Greengrass 部署为快照,这是一种可在各种 Linux 发行版上运行的容器化软件包。首先,您可以在此处访问 AWS IoT Greengrass 快照,并点击此处开始使用。
我可以在 Mac OS 或 Windows 上运行 AWS IoT Greengrass 吗?
可以。您可以通过在 Docker 容器组级别运行 AWS IoT Greengrass 而不进行 Greengrass Lambda 容器化,来在 Mac OS 或 Windows 上运行 AWS IoT Greengrass。您可以查看我们的文档详细了解该功能。
什么是 AWS IoT Greengrass SLA?
适用于云管理的 AWS IoT Greengrass SLA 规定,如果 AWS IoT Greengrass 的月度正常运行时间百分比低于 99.9%,您将有资格获得 AWS IoT Greengrass 云服务提供的可用于部分月度服务费的积分。
如需了解 SLA 的所有条款与条件的完整详细信息,以及如何提交索赔的详细信息,请参阅 AWS IoT Greengrass SLA 详细信息页面。
AWS IoT Greengrass 的哪些组件是开源的?
是否可为我的项目更改 AWS IoT Greengrass 边缘运行时源代码?
符合。AWS IoT Greengrass 开源边缘运行时是在 Apache 2.0 许可证下所分发,因此可以针对应用程序或项目的具体需求进行修改,无需获得 AWS 的批准。
当我使用不同版本的 AWS IoT Greengrass 时,定价是否会有所不同?
不会。不同版本之间的定价没有差异。有关定价的更多信息,请参阅定价页面。
本地资源访问
什么是 AWS IoT Greengrass 本地资源?
“本地资源”是指 AWS IoT Greengrass 主机上物理存在的总线和外围设备,或 AWS IoT Greengrass 主机操作系统上的文件系统卷。例如,若要与通过 Modbus/CANbus 连接的设备进行通信,AWS IoT Greengrass Lambda 函数需要访问该设备上的串行端口。本地资源是在 AWS IoT Greengrass 组范围内定义的,AWS IoT Greengrass 组中所有 Lambda 都可以使用已定义的本地资源。
什么时候可以访问本地资源?
AWS IoT Greengrass 本地资源允许 Lambda 函数与硬件(如传感器和执行器)安全交互。例如,您的 Lambda 函数可以从设备上的相机读取视频流,或将命令和控制发送到 GPIO。
安全性
什么是硬件可信根?为什么需要硬件可信根?
硬件可信根提供防篡改可信执行环境,真随机数生成器可在该环境中生产用于加密功能的私钥。这些硬件“安全元件”能够抵御恶意软件篡改,可物理连接到给定的 IoT 设备,建立一个可以安全部署软件的强大可信根。
如何在 AWS IoT Greengrass 架构中引入硬件可信根安全性?
首先,您必须在具有安全元件的边缘设备上运行 AWS IoT Greengrass Core 软件。按照硬件供应商的指示,在该安全元件上生成密钥。然后,按照我们文档中的说明更新 config.json 文件设置以使用安全元件私钥。
哪个合作伙伴提供具有安全元件的硬件?
有关集成硬件的当前列表,请访问 AWS 合作伙伴设备目录。
什么样的安全元件能够使用硬件安全集成功能?
安全元件供应商已将其安全元件配置为使用一组 PKCS#11 标准 API,以便集成 AWS IoT Greengrass。供应商使用一组测试工具来确定其硬件配置是否正确。
ML Inference
如何使用 Amazon SageMaker Neo 编译的 ML 模型?
在 AWS IoT Greengrass 设备上,您可以使用 Amazon SageMaker Neo 优化的模型针对本地生成的数据执行 ML Inference。要为推理准备设备,您可以按照在设备上安装 Neo DLR 运行时的说明进行操作。有关更多信息,请参阅安装 DLR。
您可以在 Amazon SageMaker Neo 中为您的目标硬件平台编译一个模型,并将其存储在 Amazon Simple Storage Service (Amazon S3) 存储桶中。然后,您可以配置 AWS IoT Greengrass,以使用 Amazon S3 存储桶在设备上部署 Neo 优化的模型进行本地推理。
如何使用不在 Amazon SageMaker 中训练的 ML 模型?
您可将经过训练的机器学习模型以 .tar.gz 和 .zip 格式放入 Amazon S3 中,以将其带到其他地方。然后,让 AWS IoT Greengrass 知道 Amazon S3 URI 和 AWS IoT Greengrass 将部署到目标设备。
AWS IoT Greengrass ML Inference 在哪些 AWS 区域可用?
AWS IoT Greengrass ML Inference 目前在已推出 AWS IoT Greengrass 的所有区域可用。如需了解与 AWS IoT Greengrass 已推出区域有关的最新信息,请参阅 AWS 区域表。
不论您所处的地理位置如何,只要您能够访问这些 AWS 区域之一,就可以使用 AWS IoT Greengrass ML Inference。
AWS IoT Greengrass 组件
什么是 AWS IoT Greengrass 组件?
AWS IoT Greengrass 组件是构建块,可轻松创建复杂的工作流,例如机器学习推理、本地处理、消息收发和数据管理。AWS IoT Greengrass 还提供预构建组件,例如流管理器,它支持将数据导出到本地和云目标。这些组件可帮助加速应用程序开发,因此您不必担心了解设备协议、管理凭证或与外部 API 交互,并且无需编写代码即可与 AWS 服务和第三方应用程序进行交互。此外,您还可以在 AWS IoT Greengrass 之上构建自己的组件。所有组件均旨在实现易用性,因为它们可通过 AWS Greengrass 控制台进行配置和管理。这些组件使您能够在不同 AWS IoT Greengrass 设备上重复使用常见业务逻辑,因为您可以在边缘轻松发现、导入、配置和部署组件。
如何能够将 AWS IoT Greengrass 组件添加到我的设备配置或我的设备中?
可在 AWS IoT Greengrass 控制台中通过每个组的“components”(组件)部分添加 AWS IoT Greengrass 组件。添加后,您可以配置 AWS IoT Greengrass 组件的参数并部署组,以将它们添加到您的 AWS IoT Greengrass Core 设备中。
谁可以使用 AWS IoT Greengrass 组件?
任何 AWS IoT Greengrass 客户都可以在 AWS IoT Greengrass 控制台中使用 AWS IoT Greengrass 组件,该控制台可通过 AWS 管理控制台进行访问。
有哪些可用的 AWS IoT Greengrass 组件?
您可以参阅我们的文档,了解可用的 AWS IoT Greengrass 组件。
协议适配器
如何使用 AWS IoT Greengrass 实施替代协议?
由于在 AWS IoT Greengrass Core 上运行的 Lambda 函数可以访问网络资源,因此您可以使用 Lambda 实施在 TCP/IP 之上实施的任何协议支持。另外,您还可以利用 AWS IoT Greengrass 本地资源访问来实现对需要访问硬件适配器/驱动程序的协议的支持。
AWS IoT Greengrass 还提供 Modbus-RTU、Modbus-TCP 和以太网/IP 协议适配器连接器,可以帮助您连接到边缘设备。有关更多信息,请点击此处参阅连接器文档。
如何能够将工业设备数据数据摄取到 AWS IoT Greengrass 中?
您可以使用 IoT SiteWise 连接器从 OPC UA 服务器提取设备数据,使用 Modbus-TCP 连接器从 Modbus-TCP 服务器提取设备数据,以及使用以太网/IP 连接器从以太网/IP 服务器提取设备数据。默认情况下,将数据导出到 AWS IoT SiteWise 处于启用状态,您可以使用自定义流将数据导出到 AWS IoT Analytics、Amazon Kinesis 和 Amazon S3。您还可以使用自定义流将数据发送到 Lambda 函数,以便在导出数据之前进行本地处理。或者,您可以创建自定义实施机制,使用本地部署的 Lambda 函数来摄取和处理设备数据,然后将数据交付给本地或云目标。
无线 (OTA) 更新
什么是 AWS IoT Greengrass 无线 (OTA) 更新?
AWS 将不时发布 AWS IoT Greengrass Core 软件的更新版本以提供下列优势:
- 引入新的或改进的功能
- 漏洞修复
- 提高安全性
借助 AWS IoT Greengrass 无线(OTA)更新,客户可以获得所有这些优势,无需手动下载并重新安装 AWS IoT Greengrass Core 软件。
我必须使用 AWS IoT Greengrass OTA 更新吗?
不。您始终都可以选择手动下载和安装更新,或者执行其他的软件部署过程。
我将如何获知有新的 AWS IoT Greengrass Core 版本可用?
当 AWS IoT Greengrass Core 的新版本可用时,我们将在 AWS IoT Greengrass 软件开发人员论坛公布。可以在此处找到该论坛的链接。
适用于 AWS IoT Greengrass 的 AWS IoT 设备测试器
什么是适用于 AWS IoT Greengrass 的 AWS IoT 设备测试器?
适用于 AWS IoT Greengrass 的 AWS IoT 设备测试器是一个测试自动化工具,可让您在基于 Linux 的设备上自行测试和验证 AWS IoT Greengrass 配置是否正确。AWS IoT 设备测试器提供一组自动化测试,让您可以确认设备是否可运行 AWS IoT Greengrass 并通过 AWS IoT 服务进行身份验证和互操作。
从哪里获取适用于 AWS IoT Greengrass 的 AWS IoT 设备测试器?
您可以点击此处获取适用于 AWS IoT Greengrass 的 AWS IoT 设备测试器。
适用于 AWS IoT Greengrass 的 AWS IoT 设备测试器可测试什么?
适用于 AWS IoT Greengrass 的 AWS IoT 设备测试器可通过测试以下内容,验证设备的 CPU 架构、Linux 内核配置及驱动程序组合是否可与 AWS IoT Greengrass 兼容:
- 所需软件包是否已安装
- Linux 内核是否包含 AWS IoT Greengrass 所需内核配置(例如为 CGroups 配置的内核)
- 无线更新
- 设备可连接 AWS IoT 服务且能够运行 AWS Lambda 函数
- 本地资源访问功能
- 设备影子功能
如何获取适用于 AWS IoT Greengrass 的 AWS IoT 设备测试器的技术支持?
如何将我的设备添加到 AWS Partner Device Catalog 中?
如果您是 AWS 合作伙伴,AWS 设备资格鉴定计划定义了在该目录中列出您设备的流程。大致流程如下:
- 通过适用于 AWS IoT Greengrass 的 AWS IoT 设备测试器的测试
- 登录 AWS 合作伙伴网络门户
- 上传 AWS IoT 设备测试器报告。在 AWS 验证报告并提交其他设备相关的项目(例如图片、数据表等)之后,该设备将在 AWS 合作伙伴设备目录中列出。
适用于 AWS IoT Greengrass 的 AWS IoT 设备测试器在哪些区域可用?
适用于 AWS IoT Greengrass 的 AWS IoT 设备测试器在已推出 AWS IoT Greengrass 的所有区域可用。
适用于 AWS IoT Greengrass 的 AWS IoT 设备测试器如何收费?
适用于 AWS IoT Greengrass 的 AWS IoT 设备测试器免费供您使用。不过,您需要承担测试过程中与 AWS 使用相关的所有费用。在单个 AWS IoT Greengrass 设备上运行一次 AWS IoT 设备测试器测试所需费用将不到 20 美分。
哪些 CPU 架构和操作系统与 AWS IoT Greengrass 兼容?
哪些设备与 AWS IoT Greengrass Core 兼容?如何才能快速开始体验?
您可以在满足最低硬件和软件要求的设备上运行 AWS IoT Greengrass Core。您也可以使用 AWS IoT 设备测试器对设备进行自行测试,看看它们是否能与 AWS IoT Greengrass 及其他 AWS 服务以最佳方式运行。您还可以在 AWS 合作伙伴设备目录中发现和评估与 AWS IoT Greengrass 兼容的设备。
将 AWS IoT Greengrass 连接到 FreeRTOS 和其他设备
如何在本地将设备连接到 AWS IoT Greengrass Core?
您可以使用 FreeRTOS 或 AWS IoT 设备软件开发工具包,在本地将设备连接到 AWS IoT Greengrass Core。AWS IoT Greengrass 发现可通过 C++、Node.js、Java 以及 Python 2.7、3.7 和 3.8 在 AWS IoT 设备 SDK 上使用。有关更多信息,请参阅 AWS IoT Greengrass 开发人员指南。您可在您的 FreeRTOS 源代码中使用 AWS IoT Greengrass 发现库,查找并连接 AWS IoT Greengrass Core 设备。
哪些语言通过 AWS IoT 设备软件开发工具包支持 AWS IoT Greengrass?
AWS IoT Greengrass 发现可通过 C++、Node.js、Java 以及 Python 2.7、3.7 和 3.8 在 AWS IoT 设备软件开发工具包上使用。有关更多信息,请参阅 AWS IoT Greengrass 开发人员指南。
FreeRTOS 可以与 AWS IoT Greengrass 一起使用吗?
符合。FreeRTOS 设备可以直接连接到云或连接到 AWS IoT Greengrass。FreeRTOS 在 IoT 终端上运行,通常负责 IoT 拓扑中的“感知”和“行为”。
AWS IoT Greengrass 和 FreeRTOS 有何区别?
AWS IoT Greengrass 软件允许您以安全方式在互联设备上运行本地计算、消息收发、数据缓存、同步和机器学习推理功能。借助 AWS IoT Greengrass,互联设备可以运行 AWS Lambda 函数、Docker 容器,或同时运行两者,同步设备数据,以及与其他设备安全通信 – 甚至无需连接 Internet。通过使用 AWS Lambda,AWS IoT Greengrass 可以确保您的 IoT 设备能够快速响应本地事件,使用在 AWS IoT Greengrass Core 上运行的 Lambda 函数与本地资源进行交互,执行间歇性连接,通过无线更新保持更新状态,最大限度地降低将 IoT 数据传输到云的成本。
FreeRTOS 是用于微控制器的开源实时操作系统,在边缘站点运行,一般不支持可运行 AWS IoT Greengrass 的芯片组。这些微控制器设备可用于各种 IoT 终端,如健身追踪器、起搏器、电表、汽车传动设备和传感器网络。FreeRTOS 设备无法运行 AWS IoT Greengrass Core,但可以连接、发送和接收来自 AWS IoT Greengrass Core 设备的消息,并在边缘进行本地处理。
这两个设备的硬件要求和操作系统是不同的。
FreeRTOS | AWS IoT Greengrass | |
---|---|---|
软件 | 在微控制器上运行的实时操作系统 | Linux 设备的运行时和 AWS IoT Greengrass 感知设备的开发工具包 |
硬件要求 | >64 KB 的 RAM | >96MB* 的 RAM(v2.0 边缘运行时或更高版本) >128MB 的 RAM(v1.11 边缘运行时或更低版本) |
类别 | 嵌入式系统、IoT 终端 | 边缘设备、本地网关 |
使用案例 | 基于微控制器的设备 | 工业自动化系统、无线路由器、摄像机、网关 |
*基于使用以下 JDK 的 AWS 研究:用于测试的 JDK 版本:openjdk 版本“1.8.0_275”、OpenJDK Runtime Environment(内部版本 1.8.0_275-8u275-b01-0ubuntu1~18.04-b01),以及 OpenJDK 64 位 Server VM(内部版本 25.275-b01,混合模式)。使用不同的输入,内存使用率可能会更高。