本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
运行Amazon IoT Greengrass在 Docker 容器中,并自动配置资源
本教程介绍如何安装和运行Amazon IoT GreengrassDocker 容器中的核心软件,并自动配置Amazon资源和地方发展工具. 您可以使用此开发环境来探索Amazon IoT Greengrass功能。
Prerequisites
要完成本教程,需要满足以下条件。
-
一个 Amazon Web Services 账户。如果没有,请参阅设置Amazon Web Services 账户。
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的AmazonIAM 用户拥有预配置Amazon IoT和 IAM 资源,用于 Greengrass 核心设备。这些区域有:Amazon IoT Greengrass核心软件安装程序使用Amazon凭据来自动置备这些资源。有关自动配置资源的最小 IAM 策略的信息,请参阅安装程序用于配置资源的最小 IAM 策略.
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon IoT GreengrassDocker 镜像。本教程介绍如何将Amazon IoT GreengrassDocker Hub 中的 Docker 镜像。您还可以拉取Amazon IoT GreengrassDocker 镜像从 Amazon Elastic Container Registry (Amazon ECR) 中,或者您可以构建图像Amazon IoT GreengrassDockerfile.
-
具有互联网连接的基于 Linux 的操作系统。
-
Docker 引擎
18.09 或更高版本。 -
(可选)Docker Compose
1.22 或更高版本。仅当您希望使用 Docker 撰写 CLI 运行 Docker 映像时,才需要使用 Docker 撰写。
配置 Amazon 凭证
在此步骤中,您将在主机上创建一个凭据文件,该文件包含您的Amazon安全凭证。当您运行Amazon IoT GreengrassDocker 映像,您必须将包含此凭据文件的文件夹挂载到/root/.aws/
在 Docker 容器中。这些区域有:Amazon IoT Greengrass安装程序使用这些凭据来置备Amazon Web Services 账户. 有关安装程序自动配置资源所需的最小 IAM 策略的信息,请参阅安装程序用于配置资源的最小 IAM 策略.
-
检索以下操作之一。
-
IAM 用户的长期凭证。有关如何检索长期凭证的信息,请参阅管理 IAM 用户的访问密钥中的IAM 用户指南.
-
(推荐)IAM 角色的临时证书。有关如何检索临时凭证的信息,请参阅将临时安全凭证用于Amazon CLI中的IAM 用户指南.
-
-
创建放置凭据文件的文件夹。
mkdir ./greengrass-v2-credentials
-
使用文本编辑器创建名为
credentials
中的./greengrass-v2-credentials
folder。例如,您可以运行以下命令来使用 GNU nano 创建
credentials
文件。nano ./greengrass-v2-credentials/credentials
-
添加您的Amazon凭证到
credentials
文件,格式如下。[default] aws_access_key_id =
AKIAIOSFODNN7EXAMPLE
aws_secret_access_key =wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
aws_session_token =AQoEXAMPLEH4aoAH0gNCAPy...truncated...zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
Include
aws_session_token
仅适用于临时证书。
从主机中删除凭据文件后启动Amazon IoT Greengrass容器。如果您不删除凭据文件,则Amazon凭证将保留在容器内。有关更多信息,请参阅运行Amazon IoT Greengrass容器中的核心软件。
创建环境文件
本教程使用环境文件来设置环境变量,这些变量将传递给Amazon IoT GreengrassDocker 容器中的核心软件安装程序。您还可以使用的-e
或者--env
argumentdocker run
命令在 Docker 容器中设置环境变量,也可以在一个environment
数据块docker-compose.yml
文件。
-
使用文本编辑器创建名为
.env
.例如,在基于 Linux 的系统上,您可以运行以下命令来使用 GNU nano 创建
.env
在当前目录中。nano .env
-
将以下内容复制到文件中。
GGC_ROOT_PATH=
/greengrass/v2
AWS_REGION=region
PROVISION=true THING_NAME=MyGreengrassCore
THING_GROUP_NAME=MyGreengrassCoreGroup
TES_ROLE_NAME=GreengrassV2TokenExchangeRole
TES_ROLE_ALIAS_NAME=GreengrassCoreTokenExchangeRoleAlias
COMPONENT_DEFAULT_USER=ggc_user:ggc_group DEPLOY_DEV_TOOLS=true然后,替换以下值。
-
/绿草/v2
. 要用于安装的 Greengrass 根文件夹。您将GGC_ROOT
环境变量来设置此值。 -
区域
. 这些区域有:Amazon Web Services 区域您创建了资源。 -
我的绿色草原
. Amazon IoT 事物的名称。如果事物不存在,安装程序将创建它。安装程序将下载证书以作为Amazon IoT事物。 -
我的绿色草原
. 的名称Amazon IoT事物组。如果事物组不存在,安装程序会创建它并将事物添加到它中。如果事物组存在并且具有活动部署,则核心设备会下载并运行部署指定的软件。 -
绿草 V2 代码交换器
. 替换为允许 Greengrass 核心设备获取临时的 IAM 令牌交换角色的名称Amazon凭证。如果角色不存在,安装程序将创建该角色并创建并附加名为绿草 V2 代码交换器
访问。有关更多信息,请参阅授权核心设备与Amazon服务。 -
绿色草芯代币交换别名
. 令牌交换角色别名。如果角色别名不存在,安装程序将创建该别名并将其指向您指定的 IAM 令牌交换角色。有关更多信息,请参阅 。
注意 设置
DEPLOY_DEV_TOOLS
环境变量true
部署了本地开发工具,这些工具可以在 Docker 容器内部启用自定义组件开发。不要将此环境变量用于生产设备。 -
运行Amazon IoT Greengrass容器中的核心软件
本教程介绍如何将最新的Amazon IoT GreengrassDocker Hub 中的 Docker 镜像,并启动 Docker 容器。您可以使用 Docker CLI 或 Docker 编写 CLI 运行Amazon IoT GreengrassDocker 容器中的核心软件映像。
后续步骤
Amazon IoT Greengrass核心软件现在正在 Docker 容器中运行。运行以下命令以检索当前运行的容器的容器 ID。
docker ps
然后,可运行以下命令访问容器并浏览Amazon IoT Greengrass在容器内运行的核心软件。
docker exec -it
container-id
/bin/bash
有关创建简单组件的信息,请参阅创建您的第一个组件在开始使用 Amazon IoT Greengrass V2
当您使用docker exec
在 Docker 容器内运行命令,那么这些命令不会记录在 Docker 日志中。要将命令记录到 Docker 日志中,请将交互式 shell 附加到 Docker 容器。有关更多信息,请参阅将交互式 Shell 附加到 Docker 容器。
这些区域有:Amazon IoT Greengrass核心日志文件称为greengrass.log
并位于
. 组件日志文件也位于同一个目录中。要将 Greengrass 日志复制到主机上的临时目录中,请运行以下命令:/greengrass/v2
/logs
docker cp
container-id
:/greengrass/v2/logs/tmp/logs
如果要在容器退出或被删除后保留日志,我们建议您只绑定装载
目录添加到主机上的临时日志目录,而不是挂载整个 Greengrass 目录。有关更多信息,请参阅将 Greengrass 日志保留在 Docker 容器之外。/greengrass/v2
/logs
停止运行中的Amazon IoT GreengrassDocker 容器,运行docker
stop
或者docker-compose -f docker-compose.yml stop
. 此操作发送SIGTERM
添加到 Greengrass 进程,并关闭容器中启动的所有关联进程。Docker 容器使用docker-init
可执行文件作为进程 PID 1,这有助于删除剩余的僵尸进程。有关更多信息,请参阅 Docker 文档
有关解决运行Amazon IoT Greengrass在 Docker 容器中,请参阅对 Docker 容器中的 Amazon IoT Greengrass 执行问题排查.