本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon IoT Greengrass在 Docker 容器中运行,手动配置资源
本教程向您展示如何使用手动配置的资源在 Docker 容器中安装和运行 C Amazon IoT Greengrass ore 软件。Amazon
主题
先决条件
要完成本教程,您需要:
-
Amazon Web Services 账户。如果没有,请参阅设置一个 Amazon Web Services 账户。
-
一张 Amazon IoT Greengrass Docker 镜像。你可以从 Amazon IoT Greengrass Dockerfile 中生成镜像。
-
运行 Docker 容器的主机必须满足以下要求:
-
基于Linux的操作系统,可连接互联网。
-
Docker Engin
e 版本 18.09 或更高版本。 -
(可选)Docker Compose
版本 1.22 或更高版本。只有当你想使用 Docker Compose CLI 来运行 Docker 镜像时,才需要 Docker Compose。
-
检索Amazon IoT端点
获取您的终Amazon IoT端节点Amazon Web Services 账户,然后将其保存以备后用。您的设备使用这些端点进行连接Amazon IoT。执行以下操作:
-
获取您的Amazon IoT数据端点Amazon Web Services 账户。
aws iot describe-endpoint --endpoint-type iot:Data-ATS
如果请求成功,则响应类似于以下示例。
{ "endpointAddress": "
device-data-prefix
-ats.iot.us-west-2.amazonaws.com" } -
获取您的Amazon IoT凭证端点Amazon Web Services 账户。
aws iot describe-endpoint --endpoint-type iot:CredentialProvider
如果请求成功,则响应类似于以下示例。
{ "endpointAddress": "
device-credentials-prefix
.credentials.iot.us-west-2.amazonaws.com" }
创建 Amazon IoT 事物。
Amazon IoT事物代表连接到的设备和逻辑实体Amazon IoT。Greengrass 的核心设备就是东西。Amazon IoT当您将设备注册为Amazon IoT事物时,该设备可以使用数字证书进行身份验证Amazon。
在本节中,您将创建一个代表您的设备的Amazon IoT东西。
创建 Amazon IoT 事物
-
为你的设备创建Amazon IoT一件东西。在开发计算机上,运行以下命令。
-
MyGreengrassCore
替换为要使用的事物名称。这个名字也是你的 Greengrass 核心设备的名字。注意
事物名称不能包含冒号 (
:
) 字符。
aws iot create-thing --thing-name
MyGreengrassCore
如果请求成功,则响应类似于以下示例。
{ "thingName": "MyGreengrassCore", "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "thingId": "8cb4b6cd-268e-495d-b5b9-1713d71dbf42" }
-
-
(可选)将Amazon IoT事物添加到新的或现有的事物组。您可以使用事物组来管理 Greengrass 核心设备群。将软件组件部署到设备时,可以将单个设备或设备组作为目标。您可以将设备添加到已激活 Greengrass 部署的事物组,以将该事物组的软件组件部署到该设备上。执行以下操作:
-
(可选)创建Amazon IoT事物组。
-
MyGreengrassCoreGroup
替换为要创建的事物组的名称。注意
事物组名称不能包含冒号 (
:
) 字符。
aws iot create-thing-group --thing-group-name
MyGreengrassCoreGroup
如果请求成功,则响应类似于以下示例。
{ "thingGroupName": "MyGreengrassCoreGroup", "thingGroupArn": "arn:aws:iot:us-west-2:123456789012:thinggroup/MyGreengrassCoreGroup", "thingGroupId": "4df721e1-ff9f-4f97-92dd-02db4e3f03aa" }
-
-
将Amazon IoT事物添加到事物组。
-
MyGreengrassCore
用你的Amazon IoT东西的名字替换。 -
MyGreengrassCoreGroup
替换为事物组的名称。
aws iot add-thing-to-thing-group --thing-name
MyGreengrassCore
--thing-group-nameMyGreengrassCoreGroup
如果请求成功,则该命令没有任何输出。
-
-
创建事物证书
当您将设备注册为Amazon IoT事物时,该设备可以使用数字证书进行身份验证Amazon。此证书允许设备与Amazon IoT和通信Amazon IoT Greengrass。
在本节中,您将创建和下载设备可用于连接的证书Amazon。
创建事物证书
-
创建一个文件夹,用于下载Amazon IoT事物的证书。
mkdir greengrass-v2-certs
-
为该Amazon IoT事物创建并下载证书。
aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile greengrass-v2-certs/device.pem.crt --public-key-outfile greengrass-v2-certs/public.pem.key --private-key-outfile greengrass-v2-certs/private.pem.key
如果请求成功,则响应类似于以下示例。
{ "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificatePem": "-----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw 3rrszlaEXAMPLE= -----END CERTIFICATE-----", "keyPair": { "PublicKey": "-----BEGIN PUBLIC KEY-----\ MIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h\ MMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/gHr99VEEXAMPLE5VF13\ 59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE\\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\ hJLXkX3rHU2xbxJSq7D+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\ FQIDAQAB\ -----END PUBLIC KEY-----\ ", "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\ key omitted for security reasons\ -----END RSA PRIVATE KEY-----\ " } }
保存证书的 Amazon 资源名称 (ARN),以便稍后用于配置证书。
配置事物证书
将事物证书附加到您之前创建Amazon IoT的事物,然后向证书添加Amazon IoT策略以定义核心设备的Amazon IoT权限。
配置事物的证书
-
将证书附加到Amazon IoT事物上。
-
MyGreengrassCore
用你的Amazon IoT东西的名字替换。 -
将证书 Amazon 资源名称 (ARN) 替换为您在上一步中创建的证书的 ARN。
aws iot attach-thing-principal --thing-name
MyGreengrassCore
--principalarn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
如果请求成功,则该命令没有任何输出。
-
-
创建并附加用于定义 Greengrass 核心设备Amazon IoT权限的Amazon IoT策略。以下策略允许访问所有 MQTT 主题和 Greengrass 操作,因此您的设备可以处理需要新 Greengrass 操作的自定义应用程序和未来的更改。您可以根据自己的用例限制此政策。有关更多信息,请参阅 Amazon IoT Greengrass V2核心设备的最低Amazon IoT政策。
如果您之前设置过 Greengrass 核心设备,则可以附加Amazon IoT其策略,而不必创建新的策略。
执行以下操作:
-
创建一个包含 Greengrass 核心设备所需的Amazon IoT策略文档的文件。
例如,在基于 Linux 的系统上,你可以运行以下命令来使用 GNU nano 来创建文件。
nano greengrass-v2-iot-policy.json
将以下 JSON 复制到文件中。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:Connect", "greengrass:*" ], "Resource": [ "*" ] } ] }
-
根据Amazon IoT策略文档创建策略。
-
将
GreenGrassv2IoT
替换为要ThingPolicy创建的策略的名称。
aws iot create-policy --policy-name
GreengrassV2IoTThingPolicy
--policy-document file://greengrass-v2-iot-policy.json如果请求成功,则响应类似于以下示例。
{ "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{ \\"Version\\": \\"2012-10-17\\", \\"Statement\\": [ { \\"Effect\\": \\"Allow\\", \\"Action\\": [ \\"iot:Publish\\", \\"iot:Subscribe\\", \\"iot:Receive\\", \\"iot:Connect\\", \\"greengrass:*\\" ], \\"Resource\\": [ \\"*\\" ] } ] }", "policyVersionId": "1" }
-
-
将Amazon IoT策略附加到Amazon IoT事物的证书上。
-
将
GreenGrassv2IoT
替换为要ThingPolicy附加的策略的名称。 -
用你的东西的证书的 ARN 替换目标 ARN。Amazon IoT
aws iot attach-policy --policy-name
GreengrassV2IoTThingPolicy
--targetarn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
如果请求成功,则该命令没有任何输出。
-
-
创建代币交换角色
Greengrass 核心设备使用 IAM 服务角色(称为令牌交换角色)来授权对服务的调用。Amazon设备使用Amazon IoT证书提供者获取此角色的临时Amazon证书,从而允许设备与 Amazon Logs 进行交互Amazon IoT、向 Amazon Logs 发送 CloudWatch 日志以及从 Amazon S3 下载自定义组件项目。有关更多信息,请参阅 授权核心设备与 Amazon 服务交互。
您可以使用Amazon IoT角色别名为 Greengrass 核心设备配置令牌交换角色。角色别名允许您更改设备的令牌交换角色,但设备配置保持不变。有关更多信息,请参阅《Amazon IoT Core开发人员指南》中的授权直接调用Amazon服务。
在本节中,您将创建一个令牌交换 IAM 角色和一个指向该Amazon IoT角色的角色别名。如果您已经设置了 Greengrass 核心设备,则可以使用其代币交换角色和角色别名,而不必创建新的代币交换角色和角色别名。然后,您将设备配置为Amazon IoT使用该角色和别名。
创建代币交换 IAM 角色
-
创建您的设备可用作令牌交换角色的 IAM 角色。执行以下操作:
-
创建包含令牌交换角色所需的信任策略文档的文件。
例如,在基于 Linux 的系统上,你可以运行以下命令来使用 GNU nano 来创建文件。
nano device-role-trust-policy.json
将以下 JSON 复制到文件中。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
使用信任策略文档创建令牌交换角色。
-
将
GreenGrassV2 TokenExchangeRole
替换为要创建的 IAM 角色的名称。
aws iam create-role --role-name
GreengrassV2TokenExchangeRole
--assume-role-policy-document file://device-role-trust-policy.json如果请求成功,则响应类似于以下示例。
{ "Role": { "Path": "/", "RoleName": "GreengrassV2TokenExchangeRole", "RoleId": "AROAZ2YMUHYHK5OKM77FB", "Arn": "arn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole", "CreateDate": "2021-02-06T00:13:29+00:00", "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } }
-
-
创建包含令牌交换角色所需的访问策略文档的文件。
例如,在基于 Linux 的系统上,你可以运行以下命令来使用 GNU nano 来创建文件。
nano device-role-access-policy.json
将以下 JSON 复制到文件中。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
注意
此访问策略不允许访问 S3 存储桶中的组件项目。要在 Amazon S3 中部署定义构件的自定义组件,您必须向该角色添加权限以允许您的核心设备检索组件工件。有关更多信息,请参阅 允许访问组件工件的 S3 存储桶。
如果您还没有用于组件工件的 S3 存储桶,则可以在创建存储桶后添加这些权限。
-
根据策略文档创建 IAM 策略。
-
将
GreenGrassV2 TokenExchangeRoleAccess
替换为要创建的 IAM 策略的名称。
aws iam create-policy --policy-name
GreengrassV2TokenExchangeRoleAccess
--policy-document file://device-role-access-policy.json如果请求成功,则响应类似于以下示例。
{ "Policy": { "PolicyName": "GreengrassV2TokenExchangeRoleAccess", "PolicyId": "ANPAZ2YMUHYHACI7C5Z66", "Arn": "arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "PermissionsBoundaryUsageCount": 0, "IsAttachable": true, "CreateDate": "2021-02-06T00:37:17+00:00", "UpdateDate": "2021-02-06T00:37:17+00:00" } }
-
-
将 IAM 策略附加到令牌交换角色。
-
将
GreenGrassV2
替换为 IA TokenExchangeRole M 角色的名称。 -
将策略 ARN 替换为您在上一步中创建的 IAM 策略的 ARN。
aws iam attach-role-policy --role-name
GreengrassV2TokenExchangeRole
--policy-arnarn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess
如果请求成功,则该命令没有任何输出。
-
-
-
创建Amazon IoT指向代币交换角色的角色别名。
-
GreengrassCoreTokenExchangeRoleAlias
替换为要创建的角色别名的名称。 -
将角色 ARN 替换为您在上一步中创建的 IAM 角色的 ARN。
aws iot create-role-alias --role-alias
GreengrassCoreTokenExchangeRoleAlias
--role-arnarn:aws:iam::123456789012:role/GreengrassV2TokenExchangeRole
如果请求成功,则响应类似于以下示例。
{ "roleAlias": "GreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias" }
注意
要创建角色别名,您必须有权将令牌交换 IAM 角色传递给Amazon IoT。如果您在尝试创建角色别名时收到错误消息,请检查您的Amazon用户是否具有此权限。有关更多信息,请参阅《用户指南》中的授予Amazon Identity and Access Management用户向Amazon服务传递角色的权限。
-
-
创建并附加Amazon IoT允许您的 Greengrass 核心设备使用角色别名担任令牌交换角色的策略。如果您之前设置过 Greengrass 核心设备,则可以附加其角色Amazon IoT别名策略,而不必创建新的角色别名策略。执行以下操作:
-
(可选)创建一个包含角色别名所需的Amazon IoT策略文档的文件。
例如,在基于 Linux 的系统上,你可以运行以下命令来使用 GNU nano 来创建文件。
nano greengrass-v2-iot-role-alias-policy.json
将以下 JSON 复制到文件中。
-
将资源 ARN 替换为角色别名的 ARN。
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "
arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias
" } ] } -
-
根据Amazon IoT策略文档创建策略。
-
GreengrassCoreTokenExchangeRoleAliasPolicy
替换为要创建的Amazon IoT策略的名称。
aws iot create-policy --policy-name
GreengrassCoreTokenExchangeRoleAliasPolicy
--policy-document file://greengrass-v2-iot-role-alias-policy.json如果请求成功,则响应类似于以下示例。
{ "policyName": "GreengrassCoreTokenExchangeRoleAliasPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassCoreTokenExchangeRoleAliasPolicy", "policyDocument": "{ \\"Version\\":\\"2012-10-17\\", \\"Statement\\": [ { \\"Effect\\": \\"Allow\\", \\"Action\\": \\"iot:AssumeRoleWithCertificate\\", \\"Resource\\": \\"arn:aws:iot:us-west-2:123456789012:rolealias/GreengrassCoreTokenExchangeRoleAlias\\" } ] }", "policyVersionId": "1" }
-
-
将Amazon IoT策略附加到Amazon IoT事物的证书上。
-
GreengrassCoreTokenExchangeRoleAliasPolicy
替换为角色别名Amazon IoT策略的名称。 -
用你的东西的证书的 ARN 替换目标 ARN。Amazon IoT
aws iot attach-policy --policy-name
GreengrassCoreTokenExchangeRoleAliasPolicy
--targetarn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
如果请求成功,则该命令没有任何输出。
-
-
将证书下载到设备
之前,您已将设备的证书下载到开发计算机上。在本节中,您将下载亚马逊根证书颁发机构 (CA) 证书。然后,如果您计划在 Docker 中与开发计算机不同的计算机上运行 C Amazon IoT Greengrass ore 软件,则可以将证书复制到该主机。C Amazon IoT Greengrass ore 软件使用这些证书连接到Amazon IoT云服务。
将证书下载到设备
-
在您的开发计算机上,下载 Amazon 根证书颁发机构 (CA) 证书。 Amazon IoT默认情况下,证书与亚马逊的根 CA 证书相关联。
-
如果您计划在 Docker 中与开发计算机不同的设备上运行 C Amazon IoT Greengrass ore 软件,请将证书复制到主机。如果在开发计算机和主机上启用了 SSH 和 SCP,则可以在开发计算机上使用
scp
命令来传输证书。device-ip-address
替换为主机的 IP 地址。scp -r greengrass-v2-certs/
device-ip-address
:~
创建配置文件
-
在主机上,创建一个用于存放配置文件的文件夹。
mkdir ./greengrass-v2-config
-
使用文本编辑器在
./greengrass-v2-config
文件夹config.yaml
中创建名为的配置文件。例如,你可以运行以下命令来使用 GNU nano 来创建。
config.yaml
nano ./greengrass-v2-config/config.yaml
-
将以下 YAML 内容复制到文件中。此部分配置文件指定了系统参数和 Greengrass 核参数。
--- system: certificateFilePath: "
/tmp/certs
/device.pem.crt" privateKeyPath: "/tmp/certs
/private.pem.key" rootCaPath: "/tmp/certs
/AmazonRootCA1.pem" rootpath: "
" thingName: "/greengrass/v2
MyGreengrassCore
" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "nucleus-version
" configuration: awsRegion: "region
" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias
" iotDataEndpoint: "device-data-prefix
-ats.iot.region
.amazonaws.com" iotCredEndpoint: "device-credentials-prefix
.credentials.region
.amazonaws.com"然后,替换以下值:
-
/tmp/certs。
Docker 容器中的目录,您在启动容器时将下载的证书挂载到该目录。 -
。 要用于安装的 Greengrass 根文件夹。您可以使用/greengrass/v2
GGC_ROOT
环境变量来设置此值。 -
MyGreengrassCore
。Amazon IoT 事物的名称。 -
原子核版本。
要安装的Amazon IoT Greengrass核心软件的版本。此值必须与您下载的 Docker 镜像或 Dockerfile 的版本相匹配。如果你下载了带有标签的 Greengrass Docker 镜像,latest
docker inspect
请使用查看镜像版本。image-id
-
区域
。您创建Amazon IoT资源Amazon Web Services 区域的位置。您还必须在环境文件中为AWS_REGION
环境变量指定相同的值。 -
GreengrassCoreTokenExchangeRoleAlias
。代币交换角色别名。 -
device-data-prefix
。您的Amazon IoT数据端点的前缀。 -
device-credentials-prefix
。您的Amazon IoT凭证端点的前缀。
-
创建环境文件
本教程使用环境文件来设置环境变量,这些变量将传递给 Docker 容器内的 C Amazon IoT Greengrass ore 软件安装程序。您还可以在docker run
命令中使用-e
或--env
参数docker-compose.yml
文件中的某个environment
块
-
使用文本编辑器创建名为的环境文件
.env
。例如,在基于 Linux 的系统上,您可以运行以下命令以使用 GNU nano 在当前目录
.env
中创建。nano .env
-
将以下内容复制到文件中。
GGC_ROOT_PATH=
AWS_REGION=/greengrass/v2
region
PROVISION=false COMPONENT_DEFAULT_USER=ggc_user:ggc_group INIT_CONFIG=/tmp/config/
config.yaml然后,替换以下值。
-
。 用于安装 C Amazon IoT Greengrass ore 软件的根文件夹路径。/greengrass/v2
-
区域
。您创建Amazon IoT资源Amazon Web Services 区域的位置。您必须在配置文件中为awsRegion
配置参数指定相同的值。 -
/tmp/config/。
启动 Docker 容器时用于挂载配置文件的文件夹。
注意
您可以将
DEPLOY_DEV_TOOLS
环境变量设置为true
以部署 Greengrass CLI 组件,这样您就可以在 Docker 容器内开发自定义组件。我们建议您仅在开发环境中使用此组件,而不是在生产环境中使用。此组件提供对生产环境中通常不需要的信息和操作的访问。遵循最低权限原则,将此组件仅部署到需要的核心设备。 -
在容器中运行 Amazon IoT Greengrass Core 软件
本教程向您展示如何启动在 Docker 容器中构建的 Docker 镜像。你可以使用 Docker CLI 或 Docker Compose CLI 在 Docker Amazon IoT Greengrass 容器中运行核心软件镜像。
后续步骤
Amazon IoT Greengrass核心软件现在在 Docker 容器中运行。运行以下命令以检索当前正在运行的容器的容器 ID。
docker ps
然后,您可以运行以下命令来访问容器并浏览容器内运行的 Amazon IoT Greengrass Core 软件。
docker exec -it
container-id
/bin/bash
有关创建简单组件的信息,请参见第 4 步:在设备上开发和测试组件中的 教程:Amazon IoT Greengrass V2 入门
注意
当你使用docker exec
在 Docker 容器内运行命令时,这些命令不会记录在 Docker 日志中。要将您的命令记录在 Docker 日志中,请将交互式外壳附加到 Docker 容器。有关更多信息,请参阅 将交互式外壳附加到 Docker 容器。
C Amazon IoT Greengrass ore 日志文件被调用greengrass.log
,位于中
。组件日志文件也位于同一目录中。要将 Greengrass 日志复制到主机上的临时目录,请运行以下命令:
/logs/greengrass/v2
docker cp
container-id
:/greengrass/v2/logs/tmp/logs
如果您想在容器退出或移除后保留日志,我们建议您仅将该目录绑定到主机上的临时日志
目录,而不是挂载整个 Greengrass 目录。有关更多信息,请参阅 在 Docker 容器之外保存 Greengrass 日志。
/logs/greengrass/v2
要停止正在运行的 Amazon IoT Greengrass Docker 容器,请运行docker
stop
或docker-compose -f docker-compose.yml stop
。此操作发送SIGTERM
到 Greengrass 进程,并关闭容器中启动的所有关联进程。Docker 容器使用docker-init
可执行文件作为进程 PID 1 进行初始化,这有助于删除所有剩余的僵尸进程。有关更多信息,请参阅 Docker 文档中的指定初始化进程
有关在 Docker 容器Amazon IoT Greengrass中运行时遇到的问题疑难解答的信息,请参阅对 Docker 容器中的 Amazon IoT Greengrass 执行问题排查。