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

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

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

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

Greengrass 设备设置是一个可以在几分钟内设置核心设备的脚本,这样你就可以开始使用了。 Amazon IoT Greengrass使用此脚本可以:

  1. 配置您的设备并安装 Amazon IoT Greengrass Core 软件。

  2. 配置基于云的资源。

  3. (可选)部署 Greengrass 群组,其中包含从核心向其发送消息的 Hello World Lambda 函数。MQTT Amazon IoT Amazon IoT Greengrass 这将设置如下图所示的 Greengrass 环境。

    Hello World Lambda 函数 Amazon IoT 从核心向发送MQTT消息。 Amazon IoT Greengrass

要求

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

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

     

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

     

  • 您必须提供您的 Amazon Web Services 账户 凭证。有关更多信息,请参阅 提供 Amazon Web Services 账户 凭证

    注意

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

运行 Greengrass 设备安装程序

您只需几个步骤即可运行 Greengrass 设备安装程序。在您提供 Amazon Web Services 账户 凭据后,该脚本会配置您的 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. 在您的计算机Amazon Web Services Management Console上登录并打开 Amazon IoT 控制台。

      注意

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

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

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

    注意

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

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

     

排查问题

您可以使用以下信息来解决 Amazon 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

其他故障排除

要解决 Amazon IoT Greengrass 设备设置中的其他问题,可以在日志文件中查找调试信息:

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

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

如需更多疑难解答帮助,请参阅故障排除 Amazon IoT Greengrass或查看 re Amazon : Post 上的Amazon IoT Greengrass 标签

Greengrass 设备安装程序配置选项

您可以配置 Greengrass 设备设置以访问 Amazon 您的资源并设置 Greengrass 环境。

提供 Amazon Web Services 账户 凭证

Greengrass 设备设置使用 Amazon Web Services 账户 您的凭据来访问您的资源。 Amazon 它支持IAM用户的长期证书或IAM角色的临时安全证书。

首先,获取您的凭证。

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

     

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

注意

就本教程而言,我们假设IAM用户或IAM角色具有管理员访问权限。

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

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

     

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

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

 

提供输入值

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

Amazon 访问密钥 ID

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

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

Amazon 私有访问密钥

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

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

Amazon 会话令牌

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

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

Amazon Web Services 区域

你想在 Amazon Web Services 区域 哪里创建 Greengrass 群组。有关支持的列表 Amazon Web Services 区域,请参见Amazon IoT Greengrass中的Amazon Web Services 一般参考

默认值:us-west-2

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

组名

Greengrass 组的名称。

默认值:GreengrassDeviceSetup_Group_guid

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

核心名称

Greengrass 核心的名称。核心是运行 Amazon IoT Greengrass 核心软件的 Amazon IoT 设备(东西)。核心已添加到 Amazon IoT 注册表和 Greengrass 组中。如果您提供名称,则该名称在 Amazon Web Services 账户 和中必须是唯一的 Amazon Web Services 区域。

默认值:GreengrassDeviceSetup_Core_guid

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

Amazon IoT Greengrass 核心软件安装路径

设备文件系统中您要安装 Amazon IoT Greengrass Core 软件的位置。

默认值:/

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

Hello World Lambda 函数

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

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

注意

这是一个 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 模式和输入值。如果要使用输入值的默认值,则可以省略输入值。

该过程取决于您是在启动脚本之前以环境变量形式提供 Amazon Web Services 账户 凭证,还是在启动脚本后将其作为输入值提供。

  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 函数是否在核心设备上运行

    注意

    确保在控制台 Amazon Web Services 区域 中选择的与您用于配置 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 函数是否在核心设备上运行

    注意

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

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