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

AWS IoT Greengrass Version 12023 年 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 Core 软件。

  2. 配置您的基于云的资源。

  3. (可选)部署一个带有 Hello World Lambda 函数的 Greengrass 组,该函数AWS IoT从AWS IoT Greengrass核心向其发送 MQTT 消息。这将设置下图所示的 Greengrass 环境。

    
                    你好 World Lambda 函数AWS IoT从AWS IoT Greengrass内核向发送 MQTT 消息。

要求

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 函数的信息,请继续验证 Lambda 函数是否在核心设备上运行阅读入门教程的模块 3-1。

    注意

    确保在控制台中AWS 区域选择的与配置 Greengrass 环境时使用的相同。区域默认为美国西部(俄勒冈)。

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

     

排查问题

您可以使用以下信息来解决AWS IoT Greengrass设备设置问题。

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

解决方案:在使用 Amazon EC2 实例时,您可能会看到此错误。当 Python 未安装在/usr/bin/python3.7文件夹中时,会出现此错误。要解决此错误,请在安装 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 的故障或查看 r AWS IoT GreengrasseAWS: post 上的标签

Greengrass 设备安装程序配置选项

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

提供AWS 账户凭证

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

首先,获取您的凭证。

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

     

  • 要使用临时安全凭证(推荐),请提供假设 IAM 角色的访问密钥 ID、秘密访问密钥和会话令牌。有关从AWS STSassume-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 区域

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

默认值: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 消息。

该脚本在中创建并发布此用户定义的 Lambda 函数,AWS 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 函数的信息,请继续验证 Lambda 函数是否在核心设备上运行阅读入门教程的模块 3-1。

    注意

    确保在控制台中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 函数的信息,请继续验证 Lambda 函数是否在核心设备上运行阅读入门教程的模块 3-1。

    注意

    确保在控制台中AWS 区域选择的与配置 Greengrass 环境时使用的相同。区域默认为美国西部(俄勒冈)。

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