本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS 提供 Dockerfile,您可以下载和使用该 Dockerfile 以在 Docker 容器中运行 AWS IoT Greengrass Core 软件。Dockerfile 包含用于构建 AWS IoT Greengrass 容器映像的源代码。
在构建 AWS IoT Greengrass 容器映像之前,您必须配置 Dockerfile 以选择要安装的 AWS IoT Greengrass Core 软件的版本。您还可以配置环境变量以选择在安装过程中如何配置资源,并自定义其他安装选项。本部分介绍如何通过 Dockerfile 配置和构建 AWS IoT Greengrass Docker 映像。
下载 Dockerfile 包
您可以从 GitHub 下载 AWS IoT Greengrass Dockerfile 包:
下载包后,将内容解提取到计算机上的
文件夹。Dockerfile 使用的是旧版本的 Greengrass。您应该更新文件,以使用您需要的 Greengrass 版本。download-directory/
aws-greengrass-docker-nucleus-version
指定 AWS IoT Greengrass Core 软件版本
在 Dockerfile 中使用以下构建参数,以指定要在 Docker AWS IoT Greengrass 映像中使用的 AWS IoT Greengrass Core 软件的版本。默认情况下,Docker 映像使用 AWS IoT Greengrass Core 软件的最新版本。
GREENGRASS_RELEASE_VERSION
-
AWS IoT Greengrass Core 软件的版本。默认情况下,Dockerfile 会下载 Greengrass Nucleus 的最新可用版本。将值设置为您要下载的 Nucleus 的版本。
设置环境变量
通过环境变量,您可以自定义 AWS IoT Greengrass Core 软件在 Docker 容器中的安装方式。您可以通过多种方式为 AWS IoT Greengrass Docker 映像设置环境变量。
您可以为 AWS IoT Greengrass Docker 映像配置以下环境变量。
注意
不要修改 Dockerfile 中的 TINI_KILL_PROCESS_GROUP
变量。此变量允许将 SIGTERM
转发到 PID 组中的所有 PID,以便在 Docker 容器停止时 AWS IoT Greengrass Core 软件可以正确关闭。
GGC_ROOT_PATH
-
(可选)容器内作为 AWS IoT Greengrass Core 软件根目录的文件夹路径。
默认:
/greengrass/v2
PROVISION
-
(可选)确定 AWS IoT Greengrass Core 是否预置 AWS 资源。
-
如果您指定
true
,AWS IoT Greengrass Core 软件会将容器映像注册为 AWS IoT 事物,并预置 Greengrass 核心设备所需的 AWS 资源。AWS IoT Greengrass Core 软件会预置一个 AWS IoT 事物、(可选)一个 AWS IoT 事物组、一个 IAM 角色和一个 AWS IoT 角色别名。有关更多信息,请参阅 AWS IoT Greengrass 在具有自动资源配置功能的 Docker 容器中运行。 -
如果您指定
false
,那么您必须创建一个配置文件以提供给 AWS IoT Greengrass Core 安装程序,指定为使用您手动创建的 AWS 资源和证书。有关更多信息,请参阅 通过手动资源预置在 Docker 容器中运行 AWS IoT Greengrass。
默认值:
false
-
AWS_REGION
-
(可选)AWS IoT Greengrass Core 软件用来检索或创建其所需 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 事物组的名称。如果部署以该事物组为目标,则该设备和该组中的其他核心设备在连接到 AWS IoT Greengrass 时会收到该部署。如果您的 AWS 账户 中不存在具有该名称的事物组,则 AWS IoT Greengrass Core 软件会自行创建。
您必须指定
PROVISION=true
才能应用此参数。 TES_ROLE_NAME
-
(可选)用于获取允许 Greengrass 核心设备与 AWS 服务交互的 AWS 凭证的 IAM 角色的名称。如果您的 AWS IoT Greengrass 中不存在具有该名称的角色,则 AWS 账户 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_group
或ggc_user
。-
如果您以根用户身份运行,则默认为配置文件定义的用户和组。如果配置文件未定义用户和组,则默认为
ggc_user:ggc_group
。如果ggc_user
或ggc_group
不存在,则软件将自行创建。 -
如果您以非根用户身份运行,则 AWS IoT Greengrass Core 软件会使用该用户来运行组件。
-
如果您未指定组,则 AWS IoT Greengrass Core 软件会使用系统用户的主要组。
有关更多信息,请参阅 配置运行组件的用户。
-
DEPLOY_DEV_TOOLS
-
定义是否在容器映像中下载和部署 Greengrass CLI 组件。您可以使用 Greengrass CLI 在本地开发和调试组件。
重要
我们建议您仅在开发环境中使用此组件,不要在生产环境中使用。此组件允许访问您在生产环境中通常不需要的信息和操作。遵循最低权限原则,将此组件仅部署到有需求的核心设备。
默认:
false
INIT_CONFIG
-
(可选)用于安装 AWS IoT Greengrass Core 软件的配置文件的路径。例如,您可以使用此选项来设置具有特定内核配置的新 Greengrass 核心设备,或者指定手动预置的资源。您必须将配置文件装载到此参数中指定的路径。
TRUSTED_PLUGIN
-
此功能适用于 Greengrass Nucleus 组件的 v2.4.0 及更高版本。
(可选)要作为可信插件加载的 JAR 文件的路径。使用此选项可提供预置插件 JAR 文件,例如使用队列预置或自定义预置进行安装。
THING_POLICY_NAME
-
此功能适用于 Greengrass Nucleus 组件的 v2.4.0 及更高版本。
(可选)要附加到此核心设备的 AWS IoT 事物证书的 AWS IoT 策略的名称。如果您的 AWS 账户 中不存在具有该名称的 AWS IoT 策略,则 AWS IoT Greengrass Core 软件会自行创建。
您必须指定
PROVISION=true
才能应用此参数。注意
默认情况下,AWS IoT Greengrass Core 软件会创建宽松的 AWS IoT 策略。您可以缩小此策略的范围,也可以创建自定义策略来限制使用案例的权限。有关更多信息,请参阅 AWS IoT Greengrass V2 核心设备的最低 AWS IoT 策略。
指定要安装的依赖关系
AWS IoT Greengrass Dockerfile 中的 RUN 指令会准备容器环境以运行 AWS IoT Greengrass Core 软件安装程序。在 AWS IoT Greengrass Core 软件安装程序在 Docker 容器中运行之前,您可以自定义安装的依赖关系。
构建 AWS IoT Greengrass 映像
使用 AWS IoT Greengrass Dockerfile 构建 AWS IoT Greengrass 容器映像。您可以使用 Docker CLI 或 Docker Compose CLI 来构建映像并启动容器。您还可以使用 Docker CLI 来构建映像,然后使用 Docker Compose 从该映像启动您的容器。
-
在主机上,运行以下命令以切换到包含已配置 Dockerfile 的目录。
cd
download-directory/
aws-greengrass-docker-nucleus-version
-
运行以下命令,通过 Dockerfile 构建 AWS IoT Greengrass 容器映像。
sudo docker build -t "
platform
/aws-iot-greengrass:nucleus-version
" ./
您已成功创建 AWS IoT Greengrass 容器映像。Docker 映像已安装 AWS IoT Greengrass Core 软件。现在,您可以在 Docker 容器中运行 AWS IoT Greengrass Core 软件。