本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用手动资源配置来安装 Amazon IoT Greengrass Core 软件
Amazon IoT Greengrass 核心软件包括一个安装程序,可将您的设备设置为 Greengrass 核心设备。要手动设置设备,您可以创建设备要使用的必需IAM资源 Amazon IoT 和资源。如果您手动创建这些资源,则无需向安装程序提供 Amazon 凭据。
手动安装 Amazon IoT Greengrass Core 软件时,也可以将设备配置为使用网络代理或通过端口 443 Amazon 进行连接。例如,如果您的设备在防火墙或网络代理后面运行,则可能需要指定这些配置选项。有关更多信息,请参阅 通过端口 443 或网络代理进行连接。
您也可以通过 PKCS#11 接口
重要
在下载 Amazon IoT Greengrass 核心软件之前,请检查您的核心设备是否满足安装和运行 Amazon IoT Greengrass 酷睿软件 v2.0 的要求。
主题
检索 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 一件东西。在开发计算机上,运行以下命令。
-
Replace(替换)
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 事物组。
-
Replace(替换)
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 事物添加到事物组。
-
Replace(替换)
MyGreengrassCore
用你的 Amazon IoT 东西的名字。 -
Replace(替换)
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 Greengrass Core 软件配置为使用硬件安全模块 (HSM) 来安全存储私钥和证书,请按照步骤使用中的私钥创建证书HSM。否则,请按照步骤在 Amazon IoT 服务中创建证书和私钥。硬件安全功能仅在 Linux 设备上可用。有关硬件安全性及其使用要求的更多信息,请参阅硬件安全性集成。
在 Amazon IoT 服务中创建证书和私钥
创建事物证书
-
创建一个文件夹,用于下载 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),以便稍后用于配置证书。
使用中的私钥创建证书 HSM
注意
此功能适用于 Greengrass nucleus 组件的 2.5.3 及更高版本。 Amazon IoT Greengrass 目前不支持在 Windows 核心设备上使用此功能。
创建事物证书
-
在核心设备上,在中初始化 PKCS #11 令牌HSM,然后生成私钥。私钥必须是密RSA钥大小为 RSA -2048(或更大)的密钥或密钥。ECC
注意
要使用带ECC密钥的硬件安全模块,必须使用 Greengrass nucleus v2.5.6 或更高版本。
要使用硬件安全模块和密钥管理器,必须使用带密RSA钥的硬件安全模块。
请查看您的文档HSM,了解如何初始化令牌并生成私钥。如果您HSM支持对象IDs,请在生成私钥时指定对象 ID。保存您在初始化令牌并生成私钥时指定的插槽 ID PIN、用户、对象标签、对象 ID(如果您HSM使用一个)。稍后将事物证书导入HSM并配置 C Amazon IoT Greengrass ore 软件时,将使用这些值。
-
使用私钥创建证书签名请求 (CSR)。 Amazon IoT 使用它CSR为你在中生成的私钥创建事物证书HSM。有关如何使用私钥创建CSR的信息,请参阅您的文档HSM。CSR是一个文件,例如
iotdevicekey.csr
。 -
将其CSR从设备复制到您的开发计算机。如果SSHSCP在开发计算机和设备上启用了和,则可以使用开发计算机上的
scp
命令来传输CSR。Replace(替换)device-ip-address
使用您设备的 IP 地址,然后替换~/iotdevicekey.csr
包含设备上CSR文件的路径。scp
device-ip-address
:~/iotdevicekey.csr
iotdevicekey.csr -
在开发计算机上,创建一个文件夹,用于下载该 Amazon IoT 事物的证书。
mkdir greengrass-v2-certs
-
使用该CSR文件创建 Amazon IoT 事物的证书并将其下载到您的开发计算机。
aws iot create-certificate-from-csr --set-as-active --certificate-signing-request=file://iotdevicekey.csr --certificate-pem-outfile greengrass-v2-certs/device.pem.crt
如果请求成功,则响应类似于以下示例。
{ "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-----" }
保存证书,ARN以备日后配置证书时使用。
配置事物证书
将事物证书附加到您之前创建 Amazon IoT 的事物,然后向证书添加 Amazon IoT 策略以定义核心设备的 Amazon IoT 权限。
配置事物的证书
-
将证书附加到 Amazon IoT 事物上。
-
Replace(替换)
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 策略文档创建策略。
-
Replace(替换)
GreengrassV2IoTThingPolicy
并附上要创建的策略的名称。
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 事物的证书上。
-
Replace(替换)
GreengrassV2IoTThingPolicy
并附上要附加的策略的名称。 -
将目标ARN替换为你的 Amazon IoT 东西ARN的证书的目标。
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" } ] }
-
使用信任策略文档创建令牌交换角色。
-
Replace(替换)
GreengrassV2TokenExchangeRole
使用要创建的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策略文档创建策略。
-
Replace(替换)
GreengrassV2TokenExchangeRoleAccess
并附上要创建的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策略附加到令牌交换角色。
-
Replace(替换)
GreengrassV2TokenExchangeRole
用IAM角色的名字。 -
将该策略ARN替换ARN为您在上一步中创建的IAM策略。
aws iam attach-role-policy --role-name
GreengrassV2TokenExchangeRole
--policy-arnarn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess
如果请求成功,则该命令没有任何输出。
-
-
-
创建 Amazon IoT 指向代币交换角色的角色别名。
-
Replace(替换)
GreengrassCoreTokenExchangeRoleAlias
使用要创建的角色别名的名称。 -
将该角色ARN替换ARN为您在上一步中创建的IAM角色。
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 策略文档创建策略。
-
Replace(替换)
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 事物的证书上。
-
Replace(替换)
GreengrassCoreTokenExchangeRoleAliasPolicy
使用角色别名 Amazon IoT 策略的名称。 -
将目标ARN替换为你的 Amazon IoT 东西ARN的证书的目标。
aws iot attach-policy --policy-name
GreengrassCoreTokenExchangeRoleAliasPolicy
--targetarn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
如果请求成功,则该命令没有任何输出。
-
-
将证书下载到设备
之前,您已将设备的证书下载到开发计算机上。在本节中,您将证书复制到您的核心设备,以便为设备设置用于连接的证书 Amazon IoT。您还可以下载 Amazon 根证书颁发机构 (CA) 证书。如果您使用HSM,则还需要将证书文件导入到本HSM节中的。
-
如果您之前在 Amazon IoT 服务中创建了事物证书和私钥,请按照步骤下载带有私钥和证书文件的证书。
-
如果您之前在硬件安全模块 (HSM) 中使用私钥创建了事物证书,请按照步骤下载带有私钥和证书的证书HSM。
下载带有私钥的证书和证书文件
将证书下载到设备
-
将 Amazon IoT 事物证书从开发计算机复制到设备。如果SSHSCP在开发计算机和设备上启用了和,则可以在开发计算机上使用
scp
命令来传输证书。Replace(替换)device-ip-address
使用您设备的 IP 地址。scp -r greengrass-v2-certs/
device-ip-address
:~ -
在设备上创建 Greengrass 根文件夹。稍后,您将将 Amazon IoT Greengrass Core 软件安装到此文件夹。
注意
Windows 的路径长度限制为 260 个字符。如果你使用的是 Windows,请使用像
C:\greengrass\v2
或这样的根文件夹,将 Greengrass 组件的路径保持在 260 个字符的限制D:\greengrass\v2
以下。 -
(仅限 Linux)设置 Greengrass 根文件夹的父文件夹的权限。
-
Replace(替换)
/greengrass
使用根文件夹的父文件夹。
sudo chmod 755
/greengrass
-
-
将 Amazon IoT 事物证书复制到 Greengrass 根文件夹。
-
下载 Amazon 根证书颁发机构 (CA) 证书。 Amazon IoT 默认情况下,证书与亚马逊的根 CA 证书相关联。
下载带有私钥的证书和证书 HSM
注意
此功能适用于 Greengrass nucleus 组件的 2.5.3 及更高版本。 Amazon IoT Greengrass 目前不支持在 Windows 核心设备上使用此功能。
将证书下载到设备
-
将 Amazon IoT 事物证书从开发计算机复制到设备。如果SSHSCP在开发计算机和设备上启用了和,则可以在开发计算机上使用
scp
命令来传输证书。Replace(替换)device-ip-address
使用您设备的 IP 地址。scp -r greengrass-v2-certs/
device-ip-address
:~ -
在设备上创建 Greengrass 根文件夹。稍后,您将将 Amazon IoT Greengrass Core 软件安装到此文件夹。
注意
Windows 的路径长度限制为 260 个字符。如果你使用的是 Windows,请使用像
C:\greengrass\v2
或这样的根文件夹,将 Greengrass 组件的路径保持在 260 个字符的限制D:\greengrass\v2
以下。 -
(仅限 Linux)设置 Greengrass 根文件夹的父文件夹的权限。
-
Replace(替换)
/greengrass
使用根文件夹的父文件夹。
sudo chmod 755
/greengrass
-
-
将事物证书文件导入HSM。
~/greengrass-v2-certs/device.pem.crt
请查看您的文档HSM,了解如何将证书导入其中。使用您在HSM之前生成私钥时使用的相同令牌PIN、插槽 ID、用户、对象标签和对象 ID(如果您HSM使用一个)来导入证书。注意
如果您之前生成了没有对象 ID 的私钥,并且证书具有对象 ID,请将私钥的对象 ID 设置为与证书相同的值。请查看您的文档HSM,了解如何为私钥对象设置对象 ID。
-
(可选)删除事物证书文件,使其仅存在于HSM。
rm ~/greengrass-v2-certs/device.pem.crt
-
下载 Amazon 根证书颁发机构 (CA) 证书。 Amazon IoT 默认情况下,证书与亚马逊的根 CA 证书相关联。
设置设备环境
按照本节中的步骤设置要用作 Amazon IoT Greengrass 核心设备的 Linux 或 Windows 设备。
设置 Linux 设备
设置 Linux 设备用于 Amazon IoT Greengrass V2
-
安装 Java 运行时, Amazon IoT Greengrass 核心软件需要运行该运行时。我们建议您使用 Amazon Corrett
o 或JDK 开放长期支持版本。需要版本 8 或更高版本。以下命令向您展示了如何在设备JDK上安装 Open。 -
对于基于 Debian 或基于 Ubuntua 的发行版:
sudo apt install default-jdk
-
对于基于 Red Hat 的发行版:
sudo yum install java-11-openjdk-devel
-
对于 Amazon Linux 2:
sudo amazon-linux-extras install java-openjdk11
-
对于 Amazon Linux 2023:
sudo dnf install java-11-amazon-corretto -y
安装完成后,运行以下命令以验证 Java 是否在您的 Linux 设备上运行。
java -version
该命令会打印设备上运行的 Java 版本。例如,在基于 Debian 的发行版上,输出可能与以下示例类似。
openjdk version "11.0.9.1" 2020-11-04 OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2) OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode)
-
-
(可选)创建在设备上运行组件的默认系统用户和组。您也可以选择让 Amazon IoT Greengrass 核心软件安装程序在安装过程中使用安装程序参数创建此用户和组。
--component-default-user
有关更多信息,请参阅 安装程序参数。sudo useradd --system --create-home ggc_user sudo groupadd --system ggc_group
-
验证运行 Amazon IoT Greengrass Core 软件的用户(通常
root
)是否有权sudo
与任何用户和任何组一起运行。-
运行以下命令打开该
/etc/sudoers
文件。sudo visudo
-
验证用户的权限是否如以下示例所示。
root ALL=(ALL:ALL) ALL
-
-
(可选)要运行容器化 Lambda 函数,必须启用 c
groups v1,并且必须启用并挂载内存和设备 cgroups。如果您不打算运行容器化 Lambda 函数,则可以跳过此步骤。 要启用这些 cgroups 选项,请使用以下 Linux 内核参数启动设备。
cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
有关查看和设置设备内核参数的信息,请参阅操作系统和启动加载程序的文档。按照说明永久设置内核参数。
-
按照中的要求列表所示,在您的设备上安装所有其他必需的依赖项设备要求。
设置 Windows 设备
要将 Windows 设备设置为 Amazon IoT Greengrass V2
-
安装 Java 运行时, Amazon IoT Greengrass 核心软件需要运行该运行时。我们建议您使用 Amazon Corrett
o 或JDK 开放长期支持版本。需要版本 8 或更高版本。 -
检查PATH
系统变量上是否有 Java 可用,如果没有,请添加它。该 LocalSystem 帐户运行 Amazon IoT Greengrass Core 软件,因此您必须将 Java 添加到PATH系统变量中,而不是PATH用户变量。执行以下操作: -
按下 Windows 键打开开始菜单。
-
键入
environment variables
以从开始菜单中搜索系统选项。 -
在开始菜单搜索结果中,选择编辑系统环境变量以打开系统属性窗口。
-
选择环境变量... 打开 “环境变量” 窗口。
-
在 “系统变量” 下,选择 “路径”,然后选择 “编辑”。在 “编辑环境变量” 窗口中,可以在单独的行上查看每个路径。
-
检查 Java 安装
bin
文件夹的路径是否存在。路径可能与以下示例类似。C:\\Program Files\\Amazon Corretto\\jdk11.0.13_8\\bin
-
如果路径中缺少 Java 安装
bin
的文件夹,请选择 “新建” 将其添加,然后选择 “确定”。
-
-
以管理员身份打开 Windows 命令提示符 (
cmd.exe
)。 -
在 Windows 设备上的 LocalSystem 帐户中创建默认用户。Replace(替换)
password
使用安全的密码。net user /add ggc_user
password
提示
根据你的 Windows 配置,用户的密码可能会设置为在将来的某个日期过期。为确保您的 Greengrass 应用程序继续运行,请跟踪密码何时过期,并在密码过期之前对其进行更新。您也可以将用户的密码设置为永不过期。
-
要检查用户及其密码何时过期,请运行以下命令。
net user
ggc_user
| findstr /C:expires -
要将用户的密码设置为永不过期,请运行以下命令。
wmic UserAccount where "Name='
ggc_user
'" set PasswordExpires=False -
如果你使用的是已弃用该
wmic
命令的Windows 10 或更高版本,请运行以下 PowerShell 命令。 Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = '
ggc_user
'" | Set-CimInstance -Property @{PasswordExpires="False"}
-
-
从微软下载该PsExec实用程序
并将其安装到设备上。 -
使用该 PsExec 实用程序将默认用户的用户名和密码存储在 LocalSystem 账户的凭据管理器实例中。Replace(替换)
password
使用您之前设置的用户密码。psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:
password
如果PsExec License Agreement打开,Accept请选择同意许可并运行命令。
注意
在 Windows 设备上,该 LocalSystem 帐户运行 Greengrass 核心,您必须使用 PsExec 该实用程序在帐户中存储默认用户信息。 LocalSystem 使用凭据管理器应用程序将此信息存储在当前登录用户的 Windows 帐户中,而不是 LocalSystem 帐户中。
下载 Amazon IoT Greengrass 核心软件
您可以从以下位置下载最新版本的 Amazon IoT Greengrass Core 软件:
注意
您可以从以下位置下载特定版本的 Amazon IoT Greengrass Core 软件。Replace(替换) version
附上要下载的版本。
https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-
version
.zip
下载 Amazon IoT Greengrass 核心软件
-
在您的核心设备上,将 Amazon IoT Greengrass Core 软件下载到名为的文件中
greengrass-nucleus-latest.zip
。下载此软件即表示您同意Greengrass Core 软件许可协议
。 -
(可选)验证 Greengrass nucleus 软件签名
注意
此功能在 Greengrass nucleus 版本 2.9.5 及更高版本中可用。
-
使用以下命令验证你的 Greengrass 核工件的签名:
-
该
jarsigner
调用会产生指示验证结果的输出。-
如果 Greengrass nucleus zip 文件已签名,则输出将包含以下语句:
jar verified.
-
如果 Greengrass nucleus zip 文件未签名,则输出将包含以下语句:
jar is unsigned.
-
-
如果您提供了 Jarsigner
-certs
选项以及-verify
和-verbose
选项,则输出还包括详细的签名者证书信息。
-
-
将 Amazon IoT Greengrass Core 软件解压缩到设备上的某个文件夹。Replace(替换)
GreengrassInstaller
使用您要使用的文件夹。 -
(可选)运行以下命令以查看 Amazon IoT Greengrass Core 软件的版本。
java -jar ./
GreengrassInstaller
/lib/Greengrass.jar --version
重要
如果您安装的版本早于 v2.4.0 的 Greengrass nucleus,则在安装 Core 软件后不要删除此文件夹。 Amazon IoT Greengrass C Amazon IoT Greengrass ore 软件使用此文件夹中的文件运行。
如果您下载的是最新版本的软件,则需要安装 v2.4.0 或更高版本,并且可以在安装 C Amazon IoT Greengrass ore 软件后删除此文件夹。
安装 Amazon IoT Greengrass 核心软件
使用指定以下操作的参数运行安装程序:
-
从指定使用您之前创建的 Amazon 资源和证书的部分配置文件进行安装。 Amazon IoT Greengrass Core 软件使用配置文件来指定设备上每个 Greengrass 组件的配置。安装程序根据您提供的部分配置文件创建完整的配置文件。
-
指定使用
ggc_user
系统用户在核心设备上运行软件组件。在 Linux 设备上,此命令还指定使用ggc_group
系统组,安装程序会为您创建系统用户和组。 -
将 Amazon IoT Greengrass Core 软件设置为启动时运行的系统服务。在 Linux 设备上,这需要 Systemd
初始化系统。 重要
在 Windows 核心设备上,必须将 Amazon IoT Greengrass 核心软件设置为系统服务。
有关您可以指定的参数的更多信息,请参阅安装程序参数。
注意
如果您在内存有限的设备 Amazon IoT Greengrass 上运行,则可以控制 Amazon IoT Greengrass 酷睿软件使用的内存量。要控制内存分配,您可以在 nucleus 组件的jvmOptions
配置参数中设置JVM堆大小选项。有关更多信息,请参阅 使用JVM选项控制内存分配。
-
如果您之前在 Amazon IoT 服务中创建了事物证书和私钥,请按照步骤安装带有私钥和证书文件的 Amazon IoT Greengrass 核心软件。
-
如果您之前在硬件安全模块 (HSM) 中使用私钥创建了事物证书,请按照步骤安装带有私钥和证书的 Amazon IoT Greengrass 核心软件HSM。
使用私钥和证书文件安装 C Amazon IoT Greengrass ore 软件
安装 Amazon IoT Greengrass 核心软件
-
检查 Amazon IoT Greengrass 核心软件的版本。
-
Replace(替换)
GreengrassInstaller
以及包含该软件的文件夹的路径。
java -jar ./
GreengrassInstaller
/lib/Greengrass.jar --version -
-
使用文本编辑器创建名为的配置文件
config.yaml
以提供给安装程序。例如,在基于 Linux 的系统上,你可以运行以下命令来使用 GNU nano 来创建文件。
nano
GreengrassInstaller
/config.yaml将以下YAML内容复制到文件中。此部分配置文件指定了系统参数和 Greengrass 核参数。
--- system: certificateFilePath: "
/device.pem.crt" privateKeyPath: "/greengrass/v2
/private.pem.key" rootCaPath: "/greengrass/v2
/AmazonRootCA1.pem" rootpath: "/greengrass/v2
" thingName: "/greengrass/v2
MyGreengrassCore
" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "2.13.0
" configuration: awsRegion: "us-west-2
" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias
" iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com
" iotCredEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com
"然后执行以下操作:
-
将的
每个实例替换为 Greengrass 根文件夹。/greengrass/v2
-
Replace(替换)
MyGreengrassCore
用 Amazon IoT 东西的名字。 -
Replace(替换)
2.13.0
使用 Amazon IoT Greengrass 核心软件的版本。 -
Replace(替换)
us-west-2
以及您创建资源 Amazon Web Services 区域 的位置。 -
Replace(替换)
GreengrassCoreTokenExchangeRoleAlias
使用令牌交换角色别名的名称。 -
iotDataEndpoint
用您的 Amazon IoT 数据端点替换。 -
用您的
iotCredEndpoint
Amazon IoT 凭证终端节点替换。
注意
在此配置文件中,您可以自定义其他 nucleus 配置选项,例如要使用的端口和网络代理,如以下示例所示。有关更多信息,请参阅 Greengrass 核配置。
--- system: certificateFilePath: "
/device.pem.crt" privateKeyPath: "/greengrass/v2
/private.pem.key" rootCaPath: "/greengrass/v2
/AmazonRootCA1.pem" rootpath: "/greengrass/v2
" thingName: "/greengrass/v2
MyGreengrassCore
" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "2.13.0
" configuration: awsRegion: "us-west-2
" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias
" iotCredEndpoint: "device-credentials-prefix
.credentials.iot.us-west-2
.amazonaws.com" iotDataEndpoint: "device-data-prefix
-ats.iot.us-west-2
.amazonaws.com" mqtt: port: 443 greengrassDataPlanePort: 443 networkProxy: noProxyAddresses: "http://192.168.0.1,www.example.com" proxy: url: "https://my-proxy-server:1100" username: "Mary_Major" password: "pass@word1357" -
-
运行安装程序,
--init-config
并指定提供配置文件。-
替换
或/greengrass/v2
C:\greengrass\v2
使用 Greengrass 的根文件夹。 -
替换的每个实例
GreengrassInstaller
使用您解压缩安装程序的文件夹。
重要
在 Windows 核心设备上,
--setup-system-service true
必须指定将 Amazon IoT Greengrass 核心软件设置为系统服务。如果您指定
--setup-system-service true
,则安装程序在将软件设置为系统服务并运行时会打印Successfully set up Nucleus as a system service
出来。否则,如果安装程序成功安装了软件,则不会输出任何消息。注意
在没有
deploy-dev-tools
参数的情况下运行安装程序时,不能使用--provision true
参数来部署本地开发工具。有关直接在您的设备上部署 G CLI reengrass 的信息,请参阅。Greengrass 命令行界面 -
-
通过查看根文件夹中的文件来验证安装。
如果安装成功,则根文件夹包含多个文件夹,例如
config
packages
、和logs
。
将带有私钥和证书的 Amazon IoT Greengrass Core 软件安装在 HSM
注意
此功能适用于 Greengrass nucleus 组件的 2.5.3 及更高版本。 Amazon IoT Greengrass 目前不支持在 Windows 核心设备上使用此功能。
安装 Amazon IoT Greengrass 核心软件
-
检查 Amazon IoT Greengrass 核心软件的版本。
-
Replace(替换)
GreengrassInstaller
以及包含该软件的文件夹的路径。
java -jar ./
GreengrassInstaller
/lib/Greengrass.jar --version -
-
要使 Amazon IoT Greengrass Core 软件能够使用中的私钥和证书HSM,请在安装 C Amazon IoT Greengrass ore 软件时安装 PKCS#11 提供程序组件。PKCS#11 provider 组件是一个可以在安装过程中配置的插件。您可以从以下位置下载最新版本的 PKCS #11 提供程序组件:
将 PKCS #11 提供者插件下载到名为的文件中
aws.greengrass.crypto.Pkcs11Provider.jar
。Replace(替换)GreengrassInstaller
使用您要使用的文件夹。curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar >
GreengrassInstaller
/aws.greengrass.crypto.Pkcs11Provider.jar下载此软件即表示您同意Greengrass Core 软件许可协议
。 -
使用文本编辑器创建名为的配置文件
config.yaml
以提供给安装程序。例如,在基于 Linux 的系统上,你可以运行以下命令来使用 GNU nano 来创建文件。
nano
GreengrassInstaller
/config.yaml将以下YAML内容复制到文件中。此部分配置文件指定了系统参数、Greengrass nucleus 参数和 #11 提供程序参数。PKCS
--- system: certificateFilePath: "pkcs11:object=
iotdevicekey
;type=cert" privateKeyPath: "pkcs11:object=iotdevicekey
;type=private" rootCaPath: "
/AmazonRootCA1.pem" rootpath: "/greengrass/v2
" thingName: "/greengrass/v2
MyGreengrassCore
" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "2.13.0
" configuration: awsRegion: "us-west-2
" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias
" iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com
" iotCredEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com
" aws.greengrass.crypto.Pkcs11Provider: configuration: name: "softhsm_pkcs11
" library: "/usr/local/Cellar/softhsm/2.6.1/lib/softhsm/libsofthsm2.so
" slot:1
userPin: "1234
"然后执行以下操作:
-
替换的每个实例
iotdevicekey
在URIs带有对象标签的 PKCS #11 中,您创建了私钥并导入了证书。 -
将的
每个实例替换为 Greengrass 根文件夹。/greengrass/v2
-
Replace(替换)
MyGreengrassCore
用 Amazon IoT 东西的名字。 -
Replace(替换)
2.13.0
使用 Amazon IoT Greengrass 核心软件的版本。 -
Replace(替换)
us-west-2
以及您创建资源 Amazon Web Services 区域 的位置。 -
Replace(替换)
GreengrassCoreTokenExchangeRoleAlias
使用令牌交换角色别名的名称。 -
iotDataEndpoint
用您的 Amazon IoT 数据端点替换。 -
用您的
iotCredEndpoint
Amazon IoT 凭证终端节点替换。 -
将
aws.greengrass.crypto.Pkcs11Provider
组件的配置参数替换为核心设备上的HSM配置值。
注意
在此配置文件中,您可以自定义其他 nucleus 配置选项,例如要使用的端口和网络代理,如以下示例所示。有关更多信息,请参阅 Greengrass 核配置。
--- system: certificateFilePath: "pkcs11:object=
iotdevicekey
;type=cert" privateKeyPath: "pkcs11:object=iotdevicekey
;type=private" rootCaPath: "
/AmazonRootCA1.pem" rootpath: "/greengrass/v2
" thingName: "/greengrass/v2
MyGreengrassCore
" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "2.13.0
" configuration: awsRegion: "us-west-2
" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias
" iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com
" iotCredEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com
" mqtt: port: 443 greengrassDataPlanePort: 443 networkProxy: noProxyAddresses: "http://192.168.0.1,www.example.com" proxy: url: "https://my-proxy-server:1100" username: "Mary_Major" password: "pass@word1357" aws.greengrass.crypto.Pkcs11Provider: configuration: name: "softhsm_pkcs11
" library: "/usr/local/Cellar/softhsm/2.6.1/lib/softhsm/libsofthsm2.so
" slot:1
userPin: "1234
" -
-
运行安装程序,
--init-config
并指定提供配置文件。-
替换为 Greengrass 根文件夹。/greengrass/v2
-
替换的每个实例
GreengrassInstaller
使用您解压缩安装程序的文件夹。
sudo -E java -Droot="
" -Dlog.store=FILE \ -jar .//greengrass/v2
GreengrassInstaller
/lib/Greengrass.jar \ --trusted-plugin ./GreengrassInstaller
/aws.greengrass.crypto.Pkcs11Provider.jar \ --init-config ./GreengrassInstaller
/config.yaml \ --component-default-user ggc_user:ggc_group \ --setup-system-service true重要
在 Windows 核心设备上,
--setup-system-service true
必须指定将 Amazon IoT Greengrass 核心软件设置为系统服务。如果您指定
--setup-system-service true
,则安装程序在将软件设置为系统服务并运行时会打印Successfully set up Nucleus as a system service
出来。否则,如果安装程序成功安装了软件,则不会输出任何消息。注意
在没有
deploy-dev-tools
参数的情况下运行安装程序时,不能使用--provision true
参数来部署本地开发工具。有关直接在您的设备上部署 G CLI reengrass 的信息,请参阅。Greengrass 命令行界面 -
-
通过查看根文件夹中的文件来验证安装。
如果安装成功,则根文件夹包含多个文件夹,例如
config
packages
、和logs
。
如果您将 Amazon IoT Greengrass Core 软件作为系统服务安装,则安装程序会为您运行该软件。否则,必须手动运行该软件。有关更多信息,请参阅 运行Amazon IoT Greengrass核心软件。
有关如何配置和使用软件的更多信息 Amazon IoT Greengrass,请参阅以下内容: