本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从 Dockerfile 构建AWS IoT Greengrass容器镜像
AWS提供了一个 Dockerfile,你可以下载并使用它来在 Docker AWS IoT Greengrass 容器中运行核心软件。Dockerfiles 包含用于构建AWS IoT Greengrass容器镜像的源代码。
在构建AWS IoT Greengrass容器镜像之前,必须配置 Dockerfile 以选择要安装的AWS IoT Greengrass核心软件版本。您还可以配置环境变量以选择在安装过程中如何配置资源,并自定义其他安装选项。本节介绍如何从 Dockerfile 配置和构建 AWS IoT Greengrass Docker 镜像。
下载 Dockerfile 软件包
你可以从以下网址下载 AWS IoT Greengrass Dockerfile 软件包: GitHub
下载软件包后,将内容解压缩到计算机上的
文件夹。Dockerfile 使用的是旧版本的 Greengrass。你应该更新文件以使用你想要的 Greengrass 版本。download-directory/
aws-greengrass-docker-nucleus-version
指定AWS IoT Greengrass核心软件版本
在 Dockerfile 中使用以下构建参数来指定要在 Doc AWS IoT Greengrass ker 镜像中使用的AWS IoT Greengrass核心软件的版本。默认情况下,Dockerfile 使用最新版本的AWS IoT Greengrass核心软件。
GREENGRASS_RELEASE_VERSION
-
AWS IoT Greengrass核心软件的版本。默认情况下,Dockerfile 会下载 Greengrass 核心的最新可用版本。将该值设置为要下载的 nucleus 版本。
设置环境变量
环境变量使您可以自定义 C AWS IoT Greengrass ore 软件在 Docker 容器中的安装方式。您可以通过多种方式为 AWS IoT Greengrass Docker 镜像设置环境变量。
您可以为 AWS IoT Greengrass Docker 镜像配置以下环境变量。
注意
不要修改 Dockerfile 中的TINI_KILL_PROCESS_GROUP
变量。此变量允许转发SIGTERM
到 PID 组中的所有 PID,以便在 Docker 容器停止时AWS IoT Greengrass核心软件可以正确关闭。
GGC_ROOT_PATH
-
(可选)容器内用作AWS IoT Greengrass核心软件根目录的文件夹的路径。
默认值:
/greengrass/v2
PROVISION
-
(可选)确定AWS IoT Greengrass核心是否提供AWS资源。
-
如果您指定
true
,AWS IoT GreengrassCore 软件会将容器镜像注册为AWS IoT事物,并配置 Greengrass 核心设备AWS所需的资源。AWS IoT Greengrass核心软件预置AWS IoT事物、(可选)AWS IoT事物组、IAM 角色和AWS IoT角色别名。有关更多信息,请参阅 AWS IoT Greengrass在具有自动资源配置功能的 Docker 容器中运行。 -
如果您指定
false
,则必须创建一个配置文件以提供给 AWS IoT Greengrass Core 安装程序,该文件指定使用您手动创建的AWS资源和证书。有关更多信息,请参阅 AWS IoT Greengrass在 Docker 容器中运行,手动配置资源。
默认值:
false
-
AWS_REGION
-
(可选)AWS IoT Greengrass核心软件用于检索或创建所需AWS资源的。AWS 区域
默认值:
us-east-1
。 THING_NAME
-
(可选)您注册为该核心设备的设备名称。AWS IoT如果你的名字中不存在带有这个名字的东西AWS 账户,AWS IoT GreengrassCore 软件就会创建它。
必须指定
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证书的 IAM 角色名称。AWS如果您的角色中不存在具有此名称的角色AWS 账户,则AWS IoT Greengrass核心软件会使用
GreengrassV2TokenExchangeRoleAccess
策略创建该角色。此角色无权访问托管组件工件的 S3 存储桶。因此,在创建组件时,必须为工件的 S3 存储桶和对象添加权限。有关更多信息,请参阅 授权核心设备与 AWS 服务交互。默认值:
GreengrassV2TokenExchangeRole
TES_ROLE_ALIAS_NAME
-
(可选)指向为 Gre AWS IoT engrass 核心设备提供AWS证书的 IAM 角色的角色别名的名称。如果您的中不存在具有此名称的角色别名AWS 账户,则 AWS IoT Greengrass Core 软件会创建该别名并将其指向您指定的 IAM 角色。
默认值:
GreengrassV2TokenExchangeRoleAlias
COMPONENT_DEFAULT_USER
-
(可选)AWS IoT Greengrass核心软件用于运行组件的系统用户和组的名称或 ID。指定用户和群组,用冒号分隔。组是可选的。举例来说,可以指定
ggc_user:ggc_group
或ggc_user
。-
如果您以 root 身份运行,则默认为配置文件定义的用户和组。如果配置文件未定义用户和群组,则默认为
ggc_user:ggc_group
。如果存在ggc_user
或ggc_group
不存在,则由软件创建它们。 -
如果您以非 root 用户身份运行,则 AWS IoT Greengrass Core 软件将使用该用户来运行组件。
-
如果您未指定组,则 AWS IoT Greengrass Core 软件将使用系统用户的主组。
有关更多信息,请参阅 配置运行组件的用户。
-
DEPLOY_DEV_TOOLS
-
定义是否在容器镜像中下载和部署 Greengrass CLI 组件。您可以使用 Greengrass CLI 在本地开发和调试组件。
重要
我们建议您仅在开发环境中使用此组件,而不是在生产环境中使用。此组件提供对生产环境中通常不需要的信息和操作的访问。遵循最低权限原则,将此组件仅部署到需要的核心设备。
默认值:
false
INIT_CONFIG
-
(可选)用于安装AWS IoT Greengrass核心软件的配置文件的路径。例如,您可以使用此选项来设置具有特定核心配置的新 Greengrass 核心设备,或者指定手动配置的资源。必须将配置文件装载到在此参数中指定的路径上。
TRUSTED_PLUGIN
-
此功能适用于 Greengrass nucleus 组件的 v2.4.0 及更高版本。
(可选)要作为可信插件加载的 JAR 文件的路径。使用此选项提供配置插件 JAR 文件,例如使用队列配置或自定义配置进行安装。
THING_POLICY_NAME
-
此功能适用于 Greengrass nucleus 组件的 v2.4.0 及更高版本。
(可选)要附加到该核心设备AWS IoT的事物证书的AWS IoT策略名称。如果您的 C AWS IoT Greengrass ore 软件中不存在带有此名称的AWS IoT策略,则会创建AWS 账户该策略。
必须指定
PROVISION=true
才能应用此参数。注意
默认情况下,AWS IoT GreengrassCore 软件会创建宽松AWS IoT策略。您可以缩小此策略的范围,也可以创建自定义策略来限制用例的权限。有关更多信息,请参阅 AWS IoT Greengrass V2核心设备的最低AWS IoT政策。
指定要安装的依赖关系
AWS IoT GreengrassDockerfile 中的 RUN 指令为运行AWS IoT Greengrass核心软件安装程序做好了容器环境的准备。您可以自定义在 C AWS IoT Greengrass ore 软件安装程序在 Docker 容器中运行之前安装的依赖项。
构建AWS IoT Greengrass镜像
使用 AWS IoT Greengrass Dockerfile 构建AWS IoT Greengrass容器镜像。你可以使用 Docker CLI 或 Docker Compose CLI 来构建镜像并启动容器。你也可以使用 Docker CLI 来构建镜像,然后使用 Docker Compose 从该镜像启动你的容器。
您已成功创建AWS IoT Greengrass容器镜像。Docker 镜像安装了AWS IoT Greengrass核心软件。现在,您可以在 Docker 容器中运行AWS IoT Greengrass核心软件。