快速入门:Greengrass 设备安装程序 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 2023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅 AWS IoT Greengrass V1 维护策略。在此日期之后,将 AWS IoT Greengrass V1 不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上面运行的设备 AWS IoT Greengrass V1 不会中断,将继续运行并连接到云端。我们强烈建议您迁移到 AWS IoT Greengrass Version 2,这样可以添加重要的新功能支持其他平台

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

快速入门:Greengrass 设备安装程序

Greengrass 设备安装程序是一个脚本,可在几分钟内安装好核心设备,让您快速开始使用 AWS IoT Greengrass。使用此脚本可以:

  1. 配置您的设备并安装 AWS IoT Greengrass 核心软件。

  2. 配置基于云的资源。

  3. 使用 Hello World Lambda 函数有选择地部署 Greengrass 组,该函数会将 MQTT 消息从 AWS IoT Greengrass 核心发送到 AWS IoT。这将设置如下图所示的 Greengrass 环境。

    
                    Hello World Lambda 函数将 MQTT 消息从 AWS IoT Greengrass 核心发送到 AWS IoT。

要求

Greengrass 设备安装程序具有以下要求:

  • 您的核心设备必须使用支持的平台。设备必须安装了适当的软件包管理器: aptyumopkg

     

  • 运行脚本的 Linux 用户必须具有以 sudo 身份运行的权限。

     

  • 您必须提供 AWS 账户 凭证 有关更多信息,请参阅提供 AWS 账户 凭证

    注意

    Greengrass 设备安装程序会在设备上安装最新版本的 AWS IoT Greengrass 核心软件。安装 AWS IoT Greengrass 核心软件即表示您同意 Greengrass 核心软件许可协议

运行 Greengrass 设备安装程序

您只需几个步骤即可运行 Greengrass 设备安装程序。提供 AWS 账户 证书后,脚本会预置您的 Greengrass 核心设备,并在几分钟内部署 Greengrass 组。在目标设备上的终端窗口中运行以下命令。

注意

以下步骤介绍如何在交互模式下运行脚本,这会提示您输入或接受每个输入值。有关如何以无提示方式运行脚本的信息,请参阅 在无提示模式下运行 Greengrass 设备安装程序

 

  1. 提供凭证。在此过程中,我们假定您提供临时安全凭证作为环境变量。

    export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
    注意

    如果您在 Raspbian 或 OpenWrt 平台上运行 Greengrass 设备安装程序,请复制这些命令。重新启动设备后,必须再次提供它们。

  2. 下载并启动脚本。您可以使用 curlwget 下载脚本。

    wget:

    wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass-interactive

    curl:

    curl https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh > gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass-interactive
  3. 在命令提示符下继续输入值。您可按 Enter 键使用默认值,也可键入自定义值,然后按 Enter

    该脚本将如下所示的状态消息写入终端。

    
                    终端中的输出消息。
  4. 如果您的核心设备正在运行 Raspbian 或 OpenWrt,请在提示时重新启动设备,提供凭证,然后重新启动脚本。

    1. 当提示重新启动设备时,请运行以下命令之一。

      对于 Raspbian 平台:

      sudo reboot

      对于 OpenWrt 平台:

      reboot
    2. 设备重新启动后,打开终端并提供您的凭证作为环境变量。

      export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
    3. 重新启动脚本。

      sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass-interactive
    4. 当提示是使用上一个会话中的输入值还是启动新安装时,输入 yes 以重复使用输入值。

      注意

      在需要重新启动的平台上,上一个会话中的输入值(凭证除外)将临时存储在 GreengrassDeviceSetup.config.info 文件中。

    安装完成后,终端会显示如下所示的状态消息。

    
                    终端输出中的成功消息。
  5. 检查该脚本使用您提供的输入值配置的新 Greengrass 组。

    1. 在您的计算机上登录 AWS Management Console 并打开 AWS IoT 控制台。

      注意

      确保在控制台中选择的 AWS 区域 与您用于配置 Greengrass 环境的区域相同。默认情况下,区域为美国西部(俄勒冈州)。

    2. 在导航窗格中,展开 Greengrass 设备,然后选择组 (V1) 以查找新创建的组。

  6. 如果您包含了 Hello World Lambda 函数,则 Greengrass 设备安装程序会将 Greengrass 组部署到您的核心设备。要测试 Lambda 函数,或者要了解如何从组中移除 Lambda 函数的信息,请继续学习入门教程模块 3-1 中的 验证 Lambda 函数是否在核心设备上运行

    注意

    确保在控制台中选择的 AWS 区域 与您用于配置 Greengrass 环境的区域相同。默认情况下,区域为美国西部(俄勒冈州)。

    如果您没有包含 Hello World Lambda 函数,可以创建自己的 Lambda 函数或尝试其他 Greengrass 功能。例如,您可以将 Docker 应用程序部署连接器添加到组,并使用它将 Docker 容器部署到您的核心设备。

     

排查问题

您可以使用以下信息帮助解决 AWS IoT Greengrass 设备安装的问题。

错误:找不到 Python (python3.7)。正在尝试安装…

解决方案:在操作 Amazon EC2 实例时,您可能会看到此错误。如果 /usr/bin/python3.7 文件夹中没有安装 Python,则会发生此错误。要解决这个错误,请在安装 Python 后将其移到正确的目录中:

sudo ln -s /usr/local/bin/python3.7 /usr/bin/python3.7

其他故障排除

要解决AWS IoT Greengrass 设备安装程序时遇到的其他问题,您可以在日志文件中查找调试信息:

  • 有关 Greengrass 设备安装程序配置的问题,请查阅 /tmp/greengrass-device-setup-bootstrap-epoch-timestamp.log 文件。

  • 有关 Greengrass 组或核心环境安装的问题,请查阅与 gg-device-setup-latest.sh 目录相同或指定位置中的 GreengrassDeviceSetup-date-time.log 文件。

有关问题排查的更多帮助,请参阅 故障排除 AWS IoT Greengrass 或查看 AWS re:Post 的 AWS IoT Greengrass 标签

Greengrass 设备安装程序配置选项

您可以配置 Greengrass 设备安装程序以访问您的 AWS 资源并设置您的 Greengrass 环境。

提供 AWS 账户 凭证

Greengrass 设备安装程序使用您的 AWS 账户 凭证访问您的 AWS 资源。它支持 IAM 用户的长期凭证或 IAM 角色的临时安全凭证。

首先,获取您的凭证。

  • 要使用长期凭证,请为 IAM 用户提供访问密钥 ID 和秘密访问密钥。有关创建访问长期凭证密钥的信息,请参阅 IAM 用户指南 中的管理 IAM 用户的访问密钥

     

  • 要使用临时安全凭证(推荐),请提供假定的 IAM 角色的访问密钥 ID、秘密访问密钥和会话令牌。有关从 AWS STS assume-role 命令提取临时安全凭证的信息,请参阅 IAM 用户指南中的将临时安全凭证用于 AWS CLI

注意

在本教程中,我们假定 IAM 用户或 IAM 角色具有管理员访问权限。

然后,通过以下两种方式之一为 Greengrass 设备设置提供您的凭证:

  • 作为环境变量。在启动脚本之前设置 AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN(如果需要)环境变量,如运行 Greengrass 设备安装程序中的步骤 1 所示。

     

  • 作为输入值。启动脚本后,直接在终端中输入访问密钥 ID、秘密访问密钥和会话令牌(如果需要)值。

Greengrass 设备安装程序不会保存或存储您的凭证。

 

提供输入值

在交互模式下,Greengrass 设备安装程序会提示您提供输入值。您可按 Enter 键使用默认值,也可键入自定义值,然后按 Enter。在无提示模式下,您可以在启动脚本后提供输入值。

AWS访问密钥 ID

长期或临时安全凭证中的访问密钥 ID。仅当您不提供凭证作为环境变量时,才将此选项指定为输入值。有关更多信息,请参阅提供 AWS 账户 凭证

无提示模式的选项名称:--aws-access-key-id

AWS私有访问密钥

长期或临时安全凭证中的秘密访问密钥。仅当您不提供凭证作为环境变量时,才将此选项指定为输入值。有关更多信息,请参阅提供 AWS 账户 凭证

无提示模式的选项名称:--aws-secret-access-key

AWS会话令牌

临时安全凭证中的会话令牌。仅当您不提供凭证作为环境变量时,才将此选项指定为输入值。有关更多信息,请参阅提供 AWS 账户 凭证

无提示模式的选项名称:--aws-session-token

AWS 区域

您想要创建 Greengrass 组的 AWS 区域。有关支持的 AWS 区域,请参见 Amazon Web Services 一般参考 中的 AWS IoT Greengrass

默认值:us-west-2

无提示模式的选项名称:--region

Group name

Greengrass 组的名称。

默认值:GreengrassDeviceSetup_Group_guid

无提示模式的选项名称:--group-name

核心名称

Greengrass 核心的名称。核心是运行 AWS IoT Greengrass 核心软件的 AWS IoT 设备(事物)。核心被添加到 AWS IoT 注册表和 Greengrass 组。如果您提供了名称,则该名称在 AWS 账户和 AWS 区域中必须是唯一的。

默认值:GreengrassDeviceSetup_Core_guid

无提示模式的选项名称:--core-name

AWS IoT Greengrass 核心软件安装路径

设备文件系统中您想要在安装 AWS IoT Greengrass 核心软件的位置。

默认值:/

无提示模式的选项名称:--ggc-root-path

Hello World Lambda 函数

指示是否在 Greengrass 组中包含 Hello World Lambda 函数。该函数每五秒钟向 hello/world 主题发布一条 MQTT 消息。

该脚本在 AWS Lambda 中创建并发布此用户定义的 Lambda 函数,并将其添加到您的 Greengrass 组中。该脚本还会在组中创建一个订阅,该订阅允许函数向 AWS IoT 发送 MQTT 消息。

注意

这是一个 Python 3.7 Lambda 函数。如果设备上未安装 Python 3.7 且脚本无法安装,则脚本会在终端中输出一条错误消息。要将该 Lambda 函数包含在组中,必须手动安装 Python 3.7 并重新启动脚本。要创建不包含该 Lambda 函数的 Greengrass 组,请重新启动脚本,并在提示是否包含该函数时输入 no

默认值:no

无提示模式的选项名称:--hello-world-lambda - 此选项没有值。如果要创建函数,请将其包含在命令中。

部署超时

Greengrass 设备安装程序停止检查 Greengrass 组部署状态之前的秒数。仅当组包含 Hello World Lambda 函数时才使用此功能。否则,不会部署该组。

部署时间取决于您的网速。如果网速较慢,您可以增加此值。

默认值:180

无提示模式的选项名称:--deployment-timeout

日志路径

包含 Greengrass 组和核心设置操作相关信息的日志文件的位置。使用此日志可对 Greengrass 组和核心设置过程中遇到的部署和其他问题进行故障排除。

默认值:./

无提示模式的选项名称:--log-path

详细程度

指示在脚本运行时是否在终端中打印详细的日志信息。您可以使用此信息对设备安装程序进行故障排除。

默认值:no

无提示模式的选项名称:--verbose - 此选项没有值。如果要打印详细日志信息,请将其包含在命令中。

 

在无提示模式下运行 Greengrass 设备安装程序

您可以在无提示模式下运行 Greengrass 设备安装程序,以便脚本不会提示您输入任何值。要在无提示模式下运行,请在启动脚本后指定 bootstrap-greengrass 模式和输入值。如果要使用输入值的默认值,则可以省略输入值。

此过程取决于您是在启动脚本之前提供 AWS 账户 凭证作为环境变量,还是在启动脚本后提供账户凭证作为输入值。

  1. 提供您的凭证作为环境变量。以下示例导出临时凭证,其中包括会话令牌。

    export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
    注意

    如果您在 Raspbian 或 OpenWrt 平台上运行 Greengrass 设备安装程序,请复制这些命令。重新启动设备后,必须再次提供它们。

  2. 下载并启动脚本。根据需要提供输入值。例如:

    • 要使用所有默认值,请执行以下操作:

      wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass
    • 要指定自定义值,请执行以下操作:

      wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass --region us-east-1 --group-name Custom_Group_Name --core-name Custom_Core_Name --ggc-root-path /custom/ggc/root/path --deployment-timeout 300 --log-path /customized/log/path --hello-world-lambda --verbose
    注意

    要使用 curl 下载脚本,请在命令中将 wget -q -O 替换为 curl

  3. 如果您的核心设备正在运行 Raspbian 或 OpenWrt,请在提示时重新启动设备,提供凭证,然后重新启动脚本。

    1. 当提示重新启动设备时,请运行以下命令之一。

      对于 Raspbian 平台:

      sudo reboot

      对于 OpenWrt 平台:

      reboot
    2. 设备重新启动后,打开终端并提供您的凭证作为环境变量。

      export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
    3. 重新启动脚本。

      sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass
    4. 当提示是使用上一个会话中的输入值还是启动新安装时,输入 yes 以重复使用输入值。

      注意

      在需要重新启动的平台上,上一个会话中的输入值(凭证除外)将临时存储在 GreengrassDeviceSetup.config.info 文件中。

    安装完成后,终端会显示如下所示的状态消息。

    
                                        终端输出中的成功消息。
  4. 如果您包含了 Hello World Lambda 函数,则 Greengrass 设备安装程序会将 Greengrass 组部署到您的核心设备。要测试 Lambda 函数,或者要了解如何从组中移除 Lambda 函数的信息,请继续学习入门教程模块 3-1 中的 验证 Lambda 函数是否在核心设备上运行

    注意

    确保在控制台中选择的 AWS 区域 与您用于配置 Greengrass 环境的区域相同。默认情况下,区域为美国西部(俄勒冈州)。

    如果您没有包含 Hello World Lambda 函数,可以创建自己的 Lambda 函数或尝试其他 Greengrass 功能。例如,您可以将 Docker 应用程序部署连接器添加到组,并使用它将 Docker 容器部署到您的核心设备。

     

  1. 下载并启动脚本。提供您的凭证和您要指定的任何其他输入值。以下示例说明如何提供临时凭证,其中包括会话令牌。

    • 要使用所有默认值,请执行以下操作:

      wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass --aws-access-key-id AKIAIOSFODNN7EXAMPLE --aws-secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY --aws-session-token AQoDYXdzEJr1K...o5OytwEXAMPLE=
    • 要指定自定义值,请执行以下操作:

      wget -q -O ./gg-device-setup-latest.sh https://d1onfpft10uf5o.cloudfront.net/greengrass-device-setup/downloads/gg-device-setup-latest.sh && chmod +x ./gg-device-setup-latest.sh && sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass --aws-access-key-id AKIAIOSFODNN7EXAMPLE --aws-secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY --aws-session-token AQoDYXdzEJr1K...o5OytwEXAMPLE= --region us-east-1 --group-name Custom_Group_Name --core-name Custom_Core_Name --ggc-root-path /custom/ggc/root/path --deployment-timeout 300 --log-path /customized/log/path --hello-world-lambda --verbose
    注意

    如果您在 Raspbian 或 OpenWrt 平台上运行 Greengrass 设备安装程序,请复制您的凭证。重新启动设备后,必须再次提供它们。

    要使用 curl 下载脚本,请在命令中将 wget -q -O 替换为 curl

  2. 如果您的核心设备正在运行 Raspbian 或 OpenWrt,请在提示时重新启动设备,提供凭证,然后重新启动脚本。

    1. 当提示重新启动设备时,请运行以下命令之一。

      对于 Raspbian 平台:

      sudo reboot

      对于 OpenWrt 平台:

      reboot
    2. 重新启动脚本。您必须在命令中包含您的凭证,但不包括其他输入值。例如:

      sudo -E ./gg-device-setup-latest.sh bootstrap-greengrass --aws-access-key-id AKIAIOSFODNN7EXAMPLE --aws-secret-access-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY --aws-session-token AQoDYXdzEJr1K...o5OytwEXAMPLE=
    3. 当提示是使用上一个会话中的输入值还是启动新安装时,输入 yes 以重复使用输入值。

      注意

      在需要重新启动的平台上,上一个会话中的输入值(凭证除外)将临时存储在 GreengrassDeviceSetup.config.info 文件中。

    安装完成后,终端会显示如下所示的状态消息。

    
                                        终端输出中的成功消息。
  3. 如果您包含了 Hello World Lambda 函数,则 Greengrass 设备安装程序会将 Greengrass 组部署到您的核心设备。要测试 Lambda 函数,或者要了解如何从组中移除 Lambda 函数的信息,请继续学习入门教程模块 3-1 中的 验证 Lambda 函数是否在核心设备上运行

    注意

    确保在控制台中选择的 AWS 区域 与您用于配置 Greengrass 环境的区域相同。默认情况下,区域为美国西部(俄勒冈州)。

    如果您没有包含 Hello World Lambda 函数,可以创建自己的 Lambda 函数或尝试其他 Greengrass 功能。例如,您可以将 Docker 应用程序部署连接器添加到组,并使用它将 Docker 容器部署到您的核心设备。