安装 Amazon IoT Greengrass Core 软件 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon IoT Greengrass Version 12023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅Amazon IoT Greengrass V1维护政策。在此日期之后,Amazon IoT Greengrass V1不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上运行的设备Amazon IoT Greengrass V1不会受到干扰,将继续运行并连接到云端。我们强烈建议你迁移到Amazon IoT Greengrass Version 2,它补充说重要的新功能支持其他平台

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

安装 Amazon IoT Greengrass Core 软件

这些区域有:Amazon IoT GreengrassCore 软件扩展Amazon功能放在Amazon IoT Greengrass核心设备,使本地设备可以在本地设备操作它们生成的数据。

Amazon IoT Greengrass 提供了多种选项用于安装 Amazon IoT Greengrass Core 软件:

Amazon IoT Greengrass 还提供了运行 Amazon IoT Greengrass Core 软件的容器化环境。

 

下载并解压缩 Amazon IoT Greengrass Core 软件包

选择适用于您的平台的 Amazon IoT Greengrass Core 软件,下载 tar.gz 格式的文件并在设备上解压缩。您可以下载软件的最新版本。有关更多信息,请参阅 Amazon IoT Greengrass Core 软件

 

运行 Greengrass 设备设置脚本

运行 Greengrass 设备设置以配置配置您的设备,安装您的设备,安装您的设备,安装您的设备Amazon IoT Greengrass核心软件版本,然后部署 Hello World 函数,几分钟就可以完成。有关更多信息,请参阅 快速入门:Greengrass 设备安装程序

 

从 APT 存储库安装 Amazon IoT Greengrass Core 软件

重要

自 2022 年 2 月 11 日起,您无法再安装或更新Amazon IoT Greengrass来自 APT 存储库的核心软件。在您添加了Amazon IoT Greengrass存储库,你必须从来源列表中移除存储库. 从 APT 存储库运行软件的设备将继续正常运行。建议您更新Amazon IoT GreengrassCore 软件使用tar p 文件.

由 Amazon IoT Greengrass 提供的 APT 存储库包括以下软件包:

  • aws-iot-greengrass-core. 安装Amazon IoT GreengrassCore 软件

  • aws-iot-greengrass-keyring. 安装用于签署 GnuPG (GPG) 密钥以签署Amazon IoT Greengrass程序包存储库。

    一旦下载此软件,即表示您同意Greengrass 核心软件许可协议.

使用 systemd 脚本管理 Greengrass 守护程序生命周期

aws-iot-greengrass-core 软件包还会安装可用于管理 Amazon IoT Greengrass Core 软件(守护程序)生命周期的 systemd 脚本。

  • 要在引导过程中启动 Greengrass 守护程序,请执行以下操作:

    systemctl enable greengrass.service
  • 要启动 Greengrass 守护程序,请执行以下操作:

    systemctl start greengrass.service
  • 要停止 Greengrass 守护程序,请执行以下操作。

    systemctl stop greengrass.service
  • 要检查 Greengrass 守护程序的状态,请执行以下操作:

    systemctl status greengrass.service

卸载Amazon IoT Greengrass使用 APT 存储库的核心软件

卸载Amazon IoT Greengrasscore 软件,你可以选择是保留还是删除Amazon IoT Greengrass核心软件的配置信息,如设备证书、组信息和日志文件。

卸载Amazon IoT Greengrass核心软件并保留配置信息
  • 运行以下命令删除Amazon IoT Greengrass核心软件包,并将配置信息保留在/greengrassfolder。

    sudo apt remove aws-iot-greengrass-core aws-iot-greengrass-keyring
卸载Amazon IoT Greengrass核心软件并删除配置信息
  1. 运行以下命令删除Amazon IoT Greengrass核心软件包并将配置信息从/greengrass folder.

    sudo apt purge aws-iot-greengrass-core aws-iot-greengrass-keyring
  2. 删除Amazon IoT Greengrass源代码列表中的核心软件存储库。有关更多信息,请参阅 删除Amazon IoT Greengrass核心软件库来源

删除Amazon IoT Greengrass核心软件库来源

您可以删除Amazon IoT Greengrass核心软件存储库来源,当你不再需要安装或更新Amazon IoT GreengrassAPT 存储库中的核心软件。2022 年 2 月 11 日之后,您必须从源代码列表中删除仓库,以避免在运行时出错apt update.

从来源列表中删除 APT 存储库
  • 运行以下命令删除Amazon IoT Greengrass源代码列表中的核心软件存储库。

    sudo rm /etc/apt/sources.list.d/greengrass.list sudo apt update

在 Docker 容器中运行 Amazon IoT Greengrass

Amazon IoT Greengrass 提供 Dockerfile 和 Docker 映像,使您能够更轻松地在 Docker 容器中运行 Amazon IoT Greengrass Core 软件。有关更多信息,请参阅 Amazon IoT Greengrass Docker 软件

注意

还可以在 Greengrass 核心设备上运行 Docker 应用程序。为此,应使用 Greengrass Docker 应用程序部署连接器

 

在 Snap 中运行 Amazon IoT Greengrass

Amazon IoT Greengrasssnap 1.11.x 使您能够运行受限版本的Amazon IoT Greengrass在容器化环境中通过方便的软件包以及所有必要的依赖关系。

注意

这些区域有:Amazon IoT Greengrasssnap 可用于Amazon IoT GreengrassCore 软件 v1.11.xAmazon IoT Greengrass不提供 1.10.x 的快照。不受支持的版本不会收到错误修复或更新。

这些区域有:Amazon IoT Greengrasssnap 不支持连接器和机器学习 (ML) 推理。

Snap p

以下是基本的快照概念,可帮助您了解如何使用Amazon IoT Greengrasssnapp p

Channel

一个快照组件,用于定义安装和跟踪哪个版本的快照以进行更新。快照会自动更新到当前频道的最新版本。

接口

一个快照组件,用于授予对资源(如网络和用户文件)的访问权限。

运行Amazon IoT Greengrasssnap,则必须连接以下接口。注意greengrass-support-no-container必须先连接并且永远不要断开连接。

- greengrass-support-no-container - hardware-observe - home-for-hooks - hugepages-control - log-observe - mount-observe - network - network-bind - network-control - process-control - system-observe

其他接口是可选的。如果您的 Lambda 函数需要访问特定资源,则可能需要连接到相应的接口。

Refresh(刷新)

快照会自动更新。这些区域有:snapddaemon 是默认情况下每天检查四次更新的快照包管理器。每次更新检查都称为刷新。刷新时,守护进程停止,快照被更新,然后守护进程重新启动。

有关更多信息,请参阅 。斯纳普拉特网站.

中的新增功能Amazon IoT Greengrasssnap v1.11.x

下面介绍了 1.11.x 版的新增功能和更改内容Amazon IoT Greengrasssnap。

  • 此版本仅支持snap_daemon用户,公开为用户 ID (UID) 和组 (GID)584788.

  • 此版本仅支持非容器化的 Lambda 函数。

    重要

    因为非容器化的 Lambda 函数必须共享同一个用户(snap_daemon),Lambda 函数彼此之间没有隔离。有关更多信息,请参阅 。使用组特定的配置控制 Greengrass Lambda 函数的执行.

  • 此版本支持 C、C++、Java 8、Node.js 12.x、Python 2.7、Python 3.7 和 Python 3.8 运行时。

    注意

    为了避免冗余的 Python 运行时,Python 3.7 Lambda 函数实际上运行 Python 3.8 运行时。

Amazon IoT Greengrass Snap 入门

以下步骤帮助您安装和配置Amazon IoT Greengrass扣上你的设备。

要求

运行Amazon IoT Greengrasssnap,您必须执行以下操作:

  • 运行Amazon IoT Greengrass抢购受支持的 Linux 发行版,例如 Ubuntu、Linux Mint、Debian 和 Fedora。

  • 安装snapd设备上的守护进程。这些区域有:snapd守护程序包括snap工具管理设备上的快照环境。

有关受支持的 Linux 发行版本列表和安装说明,请参阅。正在安装 snapd中的Snap p.

安装和配置Amazon IoT Greengrass情绪失控

以下教程介绍如何安装和配置Amazon IoT Greengrass扣上你的设备。

注意
  • 尽管本教程使用的是 Amazon EC2 实例 (x86 t2.micro Ubuntu 20.04),但你可以运行Amazon IoT Greengrass使用诸如树莓派之类的物理硬件,如 Raspberry Pi。

  • 这些区域有:snapd守护程序预安装在 Ubuntu 上。

  1. 安装core18通过在设备的终端中运行以下命令来完成 snap:

    sudo snap install core18

    这些区域有:core18snap p p psnap p它提供了一个包含常用库的运行时环境。这个快照是从Ubuntu 18.04 LTS.

  2. 升级snapd通过运行以下命令:

    sudo snap install --channel=edge snapd; sudo snap refresh --channel=edge snapd
  3. 运行snap list命令来检查你是否有Amazon IoT Greengrasssnap p p p

    以下示例响应显示了snapd已安装,但是aws-iot-greengrass不是。

    Name Version Rev Tracking Publisher Notes amazon-ssm-agent 3.0.161.0 2996 latest/stable/… aws✓ classic core 16-2.48 10444 latest/stable canonical✓ core core18 20200929 1932 latest/stable canonical✓ base lxd 4.0.4 18150 4.0/stable/… canonical✓ - snapd 2.48+git548.g929ccfb 10526 latest/edge canonical✓ snapd
  4. 请选择以下选项之一安装Amazon IoT Greengrasssnap p p p p p p

    • 安装Amazon IoT Greengrasssnap,运行以下命令:

      sudo snap install aws-iot-greengrass

      响应示例:

      aws-iot-greengrass 1.11.5 from Amazon Web Services (aws) installed
    • 要从早期版本迁移到 v1.11.x 或更新到最新的可用修补程序版本,请运行以下命令:

      sudo snap refresh --channel=1.11.x aws-iot-greengrass

    像其他快照一样,Amazon IoT Greengrasssnap 使用频道来管理次要版本。快照会自动更新到当前频道的最新可用版本。例如,如果您指定--channel=1.11.x,你的Amazon IoT Greengrass快照已更新到 v1.11.5。

    您可以运行snap info aws-iot-greengrass命令以获取可用的频道列表Amazon IoT Greengrass.

  5. 要访问您的 Lambda 函数所需的特定资源,您可以连接到其他接口。

    运行以下命令以获取Amazon IoT Greengrasssnap 支持的接口:

    snap connections aws-iot-greengrass

    响应示例:

    Interface Plug Slot Notes camera aws-iot-greengrass:camera - - dvb aws-iot-greengrass:dvb - - gpio aws-iot-greengrass:gpio - - gpio-memory-control aws-iot-greengrass:gpio-memory-control - - greengrass-support aws-iot-greengrass:greengrass-support-no-container :greengrass-support - hardware-observe aws-iot-greengrass:hardware-observe :hardware-observe manual hardware-random-control aws-iot-greengrass:hardware-random-control - - home aws-iot-greengrass:home-for-greengrassd - - home aws-iot-greengrass:home-for-hooks :home manual hugepages-control aws-iot-greengrass:hugepages-control :hugepages-control manual i2c aws-iot-greengrass:i2c - - iio aws-iot-greengrass:iio - - joystick aws-iot-greengrass:joystick - - log-observe aws-iot-greengrass:log-observe :log-observe manual mount-observe aws-iot-greengrass:mount-observe :mount-observe manual network aws-iot-greengrass:network :network - network-bind aws-iot-greengrass:network-bind :network-bind - network-control aws-iot-greengrass:network-control :network-control - opengl aws-iot-greengrass:opengl :opengl - optical-drive aws-iot-greengrass:optical-drive :optical-drive - process-control aws-iot-greengrass:process-control :process-control - raw-usb aws-iot-greengrass:raw-usb - - removable-media aws-iot-greengrass:removable-media - - serial-port aws-iot-greengrass:serial-port - - spi aws-iot-greengrass:spi - - system-observe aws-iot-greengrass:system-observe :system-observe -

    如果您在 “插槽” 列中看到连字符 (-),则表示相应的接口未连接。

  6. 跟随安装Amazon IoT GreengrassCore 软件来创建Amazon IoTthing,一个 Greengrass 集团,提供安全资源,可以与Amazon IoT,以及Amazon IoT Greengrass核心软件配置文件。配置文件config.json,包含特定于 Greengrass 核心的配置,例如证书文件的位置和Amazon IoT设备数据终端节点。

    注意

    如果您将文件下载到其他设备,请按照以下步骤操作将文件传输到Amazon IoT GreengrassCore 设备。

  7. 对于Amazon IoT Greengrasssnap,请确保您更新config.json文件,如下所示:

    • 替换的每个实例certificateId证书和密钥文件的名称中包含证书 ID。

    • 如果您下载的 Amazon 根 CA 证书不同于 Amazon 根 CA 1 证书,请替换AmazonRootca1.pem使用亚马逊根 CA 文件的名称。

    { ... "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///snap/aws-iot-greengrass/current/greengrass/certs/certificateId-private.pem.keyy" }, "IoTCertificate" : { "privateKeyPath" : "file:///snap/aws-iot-greengrass/current/greengrass/certs/certificateId-private.pem.key", "certificatePath" : "file:///snap/aws-iot-greengrass/current/greengrass/certs/certificateId-certificate.pem.crt" } }, "caPath" : "file:///snap/aws-iot-greengrass/current/greengrass/certs/AmazonRootCA1.pem" }, "writeDirectory": "/var/snap/aws-iot-greengrass/current/ggc-write-directory", "pidFileDirectory": "/var/snap/aws-iot-greengrass/current/pidFileDirectory" }
  8. 运行以下命令以添加您的Amazon IoT Greengrass证书和配置文件:

    sudo snap set aws-iot-greengrass gg-certs=/home/ubuntu/my-certs

部署 Lambda 函数

本节介绍如何将客户托管的 Lambda 函数部署到设备Amazon IoT Greengrasssnap。

重要

Amazon IoT Greengrasssnap v1.11 仅支持非容器化的 Lambda 函数。

  1. 运行以下命令启动Amazon IoT Greengrass守护程序:

    sudo snap start aws-iot-greengrass

    响应示例:

    Started.
  2. 运行以下命令以确认守护程序正在运行:

    snap services aws-iot-greengrass.greengrassd

    响应示例:

    Service Startup Current Notes aws-iot-greengrass.greengrassd disabled active -
  3. 跟随模块 3(第 1 部分):LambdaAmazon IoT Greengrass创建和部署 Hello World Lambda 函数。但是,在部署 Lambda 函数之前,请完成下一步。

  4. 确保您的 Lambda 函数以snap_daemon用户并处于无容器模式下。要更新 Greengrass 组的设置,请在Amazon IoT Greengrass控制台:

    1. 登录 Amazon IoT Greengrass 控制台。

    2. 在Amazon IoT控制台导航窗格,Manage中,展开Greengrass中,然后选择组 (V1).

    3. Under Greengrass中,选择目标组。

    4. 在组配置页面上的导航窗格中,选择Lambda 函数选项卡。

    5. Under 默认 Lambda 函数运行时环境,选择编辑中,执行以下操作:

      1. 适用于默认系统用户和组,选择另一个用户 ID/组 ID,然后输入584788代表这两者的系统用户 ID (数字)系统组 ID(编号).

      2. 适用于Lambda 函数容器化,选择无容器.

      3. 选择 Save(保存)。

停止Amazon IoT Greengrass守护进程

您可以使用snap stop命令可停止服务。

停止Amazon IoT Greengrass守护程序,运行以下命令:

sudo snap stop aws-iot-greengrass

该命令应返回Stopped..

要检查您是否成功停止了 Snap,请运行以下命令:

snap services aws-iot-greengrass.greengrassd

响应示例:

Service Startup Current Notes aws-iot-greengrass.greengrassd disabled inactive -

卸载Amazon IoT Greengrass情绪失控

卸载Amazon IoT Greengrasssnap,运行以下命令:

sudo snap remove aws-iot-greengrass

响应示例:

aws-iot-greengrass removed

排查 方面的问题Amazon IoT Greengrass情绪失控

使用以下信息可帮助您解决与相关的问题Amazon IoT Greengrasssnap。

出现权限被拒绝的错误。

解决方案:权限被拒绝的错误通常是由于缺少接口造成的。有关缺失接口的列表和详细的故障排除信息,可以使用snappy-debug工具.

运行以下命令以安装此工具。

sudo snap install snappy-debug

响应示例:

snappy-debug 0.36-snapd2.45.1 from Canonical✓ installed

运行sudo snappy-debug命令在单独的终端会话中。操作将继续,直到出现权限被拒绝的错误。

例如,如果您的 Lambda 函数尝试读取$HOME目录中,您可能会收到以下响应:

INFO: Following '/var/log/syslog'. If have dropped messages, use: INFO: $ sudo journalctl --output=short --follow --all | sudo snappy-debug kernel.printk_ratelimit = 0 = AppArmor = Time: Dec 6 04:48:26 Log: apparmor="DENIED" operation="mknod" profile="snap.aws-iot-greengrass.greengrassd" name="/home/ubuntu/my-file.txt" pid=12345 comm="touch" requested_mask="c" denied_mask="c" fsuid=0 ouid=0 File: /home/ubuntu/my-file.txt (write) Suggestion: * add 'home' to 'plugs'

此示例显示创建/home/ubuntu/my-file.txt文件导致权限错误。它还建议你添加homeplugs. 但是,这一建议并不适用。这些区域有:home-for-greengrassdhome-for-hooks插头仅具有只读访问权限。

有关更多信息,请参阅 。snappy-debug 快照中的Snap p.

错误:无法执行以下任务:-对快照的服务 ["greengrassd"] 运行服务命令 “start”aws-iot-greengrass“([start snap。aws-iot-greengrass.greengrassd.service] 失败,退出状态为 1:快照的Job。aws-iot-greengrass.greengrassd.service 失败,因为控制进程退出并显示错误代码。 请参阅 “systemctl 状态快照。aws-iot-greengrass.greengrassd.service” 和 “journalctl-xe” 了解详情。)

解决方案:当出现此错误时,您可能会看到此错误snap start aws-iot-greengrass命令无法启动Amazon IoT GreengrassCore 软件

有关故障排除信息,请运行以下命令:

sudo snap run aws-iot-greengrass.greengrassd

响应示例:

Couldn't find /snap/aws-iot-greengrass/44/greengrass/config/config.json.

这个例子表明Amazon IoT Greengrass找不到config.json文件。您可以检查配置文件和证书文件。

/vnnnnnap p paws-iot-greengrass/publishggc-write-directory/packages/1.11.5/rootfs/merged 不是绝对路径或符号链接。

解决方案:这些区域有:Amazon IoT Greengrasssnap 仅支持非容器化的 Lambda 函数。确保在无容器模式下运行 Lambda 函数。有关更多信息,请参阅 。选择 Lambda 函数容器化时的注意事项中的Amazon IoT Greengrass Version 1开发人员指南.

在你运行 sudo snap refresh snapd 命令后,snapd 守护程序无法重新启动。

解决方案:按照中的步骤 6 到步骤 8 进行操作安装和配置Amazon IoT Greengrass情绪失控添加Amazon IoT Greengrass证书和配置文件到Amazon IoT Greengrasssnap。

将 Amazon IoT Greengrass Core 软件安装存档

当您升级到新版本的 Amazon IoT Greengrass 核心软件时,您可以将当前安装的版本存档。这将保留您当前的安装环境,因此,您可以在同一硬件上测试新的软件版本。这还使您能够出于任何原因轻松回滚到您的存档版本。

存档当前安装并安装新版本
  1. 下载您要升级到的 Amazon IoT Greengrass Core 软件安装程序包。

  2. 将此程序包复制到目标核心设备。有关描述如何传输文件的说明,请参阅此步骤

    注意

    稍后,您将当前的证书、密钥和配置文件复制到新的安装。

    在核心设备终端中,在以下步骤中运行命令。

  3. 确保 Greengrass 守护进程在您的核心设备上停止。

    1. 要检查守护程序是否正在运行,请执行以下操作:

      ps aux | grep -E 'greengrass.*daemon'

      如果输出包含 root/greengrass/ggc/packages/ggc-version/bin/daemon 条目,则表示守护程序正在运行。

      注意

      编写此过程的前提是 Amazon IoT Greengrass 核心软件已安装在 /greengrass 目录中。

    2. 停止 守护程序:

      cd /greengrass/ggc/core/ sudo ./greengrassd stop
  4. 将当前 Greengrass 根目录移至其他目录。

    sudo mv /greengrass /greengrass_backup
  5. 将新的软件解压缩到核心设备上。替换命令中的 os-architectureversion 占位符。

    sudo tar –zxvf greengrass-os-architecture-version.tar.gz –C /
  6. 将存档的证书、密钥和配置文件复制到新的安装。

    sudo cp /greengrass_backup/certs/* /greengrass/certs sudo cp /greengrass_backup/config/* /greengrass/config
  7. 启动守护程序:

    cd /greengrass/ggc/core/ sudo ./greengrassd start

现在,您可以进行一个组部署来测试新的安装。如果出现故障,您可以还原已存档的安装。

还原已存档的安装
  1. 停止守护程序。

  2. 删除新的 /greengrass 目录。

  3. /greengrass_backup 目录移回 /greengrass

  4. 启动守护程序。