从 Docker 文件构建 AWS IoT Greengrass 容器映像 - AWS IoT Greengrass
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

从 Docker 文件构建 AWS IoT Greengrass 容器映像

AWS 提供了 Dockerfile,您可以下载并使用此文件在 Docker 容器中运行 AWS IoT Greengrass Core 软件。Docker 文件包含用于构建 AWS IoT Greengrass 容器映像的源代码。

在构建 AWS IoT 绿色草拉容器映像之前,您必须配置 Docker 文件以选择要安装的 AWS IoT Greengrass 核心软件的版本。您还可以配置环境变量以选择如何在安装期间预配资源,并自定义其他安装选项。本节介绍如何从码头文件配置和构建 AWS IoT Greengrass 拉码头映像。

下载 Dockerfile 软件包。

您可以从 GitHub 下载 AWS IoT Greengrass Docker 文件包:

https://github.com/aws-greengrass/aws-greengrass-docker/releases

下载软件包后,将内容解压缩到download-directory/aws-greengrass-docker-nucleus-version文件夹。

指定 AWS IoT Greengrass 核心软件版本

在 Docker 文件中使用以下构建参数来指定您想要在 AWS IoT Greengrass Docker 映像中使用的 AWS IoT Greengrass 核心软件的版本。默认情况下,Dockerfile 使用 AWS IoT Greengrass 核心软件的最新版本。

GREENGRASS_RELEASE_VERSION

AWS IoT Greengrass 核心软件的版本。默认情况下,Dockerfile 会下载 Greengrass 核心的最新可用版本。将值设置为您要下载的核心版本。

设置环境变量

使用环境变量,您可以自定义 AWS IoT Greengrass Core 软件在 Docker 容器中的安装方式。您可以通过各种方式为您的 AWS IoT Greengrass 码头映像设置环境变量。

  • 要使用相同的环境变量来创建多个图像,请直接在 Docker 文件中设置环境变量。

  • 如果您使用docker run启动容器,在命令中将环境变量作为参数传递,或者在环境变量文件中设置环境变量,然后将文件作为参数传递。有关在 Docker 中设置环境变量的更多信息,请参阅Docker 文档

  • 如果您使用docker-compose up启动容器,在环境变量文件中设置环境变量,然后将该文件作为参数传递。有关在 Compose 中设置环境变量的更多信息,请参阅 Compose 中的Docker 文档

您可以为 AWS IoT Greengrass 码头映像配置以下环境变量。

注意

请勿修改TINI_KILL_PROCESS_GROUP变量中的所有步骤。此变量允许转发SIGTERM添加到 PID 组中的所有 PID,以便在 Docker 容器停止时,AWS IoT Greengrass 核心软件可以正确关闭。

GGC_ROOT_PATH

(可选)容器内用作 AWS IoT Greengrass 核心软件根目录的文件夹的路径。

默认值:/greengrass/v2

PROVISION

(可选)确定 AWS IoT Greengrass 核心是否配置 AWS 资源。

默认值:false

AWS_REGION

(可选)AWS IoT 绿草核心软件用于检索或创建所需 AWS 资源的 AWS 区域。

默认值:us-east-1

THING_NAME

(可选)您注册为此核心设备的 AWS IoT 事物的名称。如果您的 AWS 账户中不存在带有此名称的内容,AWS IoT Greengrass Core 软件将创建该文件。

您必须指定PROVISION=true来应用此参数。

默认值:GreengrassV2IotThing_加上随机 UUID。

THING_GROUP_NAME

(可选)添加此核心设备的 AWS IoT 事物组的名称如果部署以此事物组为目标,则该组中的此核心设备和其他核心设备在连接到 AWS IoT Greengrass 时会收到该部署。如果您的 AWS 账户中不存在具有此名称的事物组,AWS IoT Greengrass Core 软件将创建该组。

您必须指定PROVISION=true来应用此参数。

TES_ROLE_NAME

(可选)用于获取允许 Greengrass 核心设备与 AWS 服务交互的 AWS 凭证的 IAM 角色的名称。如果您的 AWS 账户中不存在带此名称的角色,AWS IoT Greengrass Core 软件将使用GreengrassV2TokenExchangeRoleAccess策略。此角色无权访问您托管组件工件的 S3 存储桶。因此,在创建组件时,您必须向对象的 S3 存储桶和对象添加权限。有关更多信息,请参阅 授权核心设备与 AWS 服务交互

默认值:GreengrassV2TokenExchangeRole

TES_ROLE_ALIAS_NAME

(可选)指向为 Greengrass 核心设备提供 AWS 证书的 IAM 角色的 AWS IoT 角色别名的名称。如果您的 AWS 账户中不存在具有此名称的角色别名,则 AWS IoT Greengrass Core 软件会创建该别名并将其指向您指定的 IAM 角色。

默认值:GreengrassV2TokenExchangeRoleAlias

COMPONENT_DEFAULT_USER

(可选)AWS IoT Greengrass Core 软件用于运行组件的系统用户和组的名称或 ID。指定用户和组,用冒号分隔。该组是可选的。举例来说,可以指定 ggc_user:ggc_groupggc_user

  • 如果以 root 用户身份运行,则默认为配置文件定义的用户和组。如果配置文件未定义用户和组,则默认为ggc_user:ggc_group。如果ggc_user或者ggc_group不存在,则软件将创建它们。

  • 如果您以非 root 用户身份运行,AWS IoT Greengrass Core 软件将使用该用户来运行组件。

  • 如果您没有指定组,则 AWS IoT Greengrass 核心软件将使用系统用户的主要组。

有关更多信息,请参阅 配置运行组件的用户和组

DEPLOY_DEV_TOOLS

(可选)定义是否在容器映像中下载和部署 Greengrass CLI 组件。您可以使用 Greengrass CLI 在本地开发和调试组件。

默认值:false

注意

仅在开发环境中使用本地开发工具。不要在生产设备上指定此选项。

INIT_CONFIG

(可选)用于安装 AWS IoT Greengrass 核心软件的配置文件路径。例如,您可以使用此选项来设置具有特定核心配置的新 Greengrass 核心设备,或者指定手动配置的资源。您必须将配置文件挂载到您在此参数中指定的路径。

指定要安装的依赖关系

AWS IoT Greengrass 码头文件中的 RUN 指令可以准备容器环境以运行 AWS IoT 绿色草核心软件安装程序。您可以自定义 AWS IoT Greengrass Core 软件安装程序在 Docker 容器中运行之前安装的依赖关系。

构建 AWS IoT Greengrass 映像

使用 AWS IoT Greengrass 码头文件构建 AWS IoT Greengrass 容器映像。您可以使用 Docker CLI 或 Docker 撰写 CLI 来构建映像并启动容器。您还可以使用 Docker CLI 构建映像,然后使用 Docker Compose 从该映像启动容器。

Docker
  1. 在主机上运行以下命令来切换到包含所配置 Dockerfile 的目录。

    cd download-directory/aws-greengrass-docker-nucleus-version
  2. 运行以下命令以通过 Docker 文件构建 AWS IoT Greengrass 容器映像。

    sudo docker build -t "platform/aws-iot-greengrass:nucleus-version" ./
Docker Compose
  1. 在主机上运行以下命令来切换到包含 Dockerfile 和 Compose 文件的目录。

    cd download-directory/aws-greengrass-docker-nucleus-version
  2. 运行以下命令来使用 Compose 文件构建 AWS IoT Greengrass 容器映像。

    docker-compose -f docker-compose.yml build

您已成功创建 AWS IoT Greengrass 容器映像。Docker 映像安装了 AWS IoT Greengrass 核心软件。现在,您可以在 Docker 容器中运行 AWS IoT Greengrass 核心软件。