本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
安装Amazon IoT Greengrass具有手动资源配置功能的核心软件
这个Amazon IoT Greengrass核心软件包括一个安装程序,可将您的设备设置为 Greengrass 核心设备。要手动设置设备,可以创建所需的Amazon IoT以及可供设备使用的 IAM 资源。如果您手动创建这些资源,则无需提供Amazon安装程序的证书。
当你手动安装时Amazon IoT Greengrass核心软件,您还可以将设备配置为使用网络代理或连接到Amazon在端口 443 上。例如,如果您的设备在防火墙或网络代理后面运行,则可能需要指定这些配置选项。有关更多信息,请参阅通过端口 443 或网络代理进行连接:
你也可以配置Amazon IoT Greengrass通过以下方式使用硬件安全模块 (HSM) 的核心软件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你的设备上的东西。在您的开发计算机上,运行以下命令。
-
替换
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 Greengrass核心软件要使用硬件安全模块 (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-----\nMIIBIjANBgkqhkEXAMPLEQEFAAOCAQ8AMIIBCgKCAQEAEXAMPLE1nnyJwKSMHw4h\nMMEXAMPLEuuN/dMAS3fyce8DW/4+EXAMPLEyjmoF/YVF/gHr99VEEXAMPLE5VF13\n59VK7cEXAMPLE67GK+y+jikqXOgHh/xJTwo+sGpWEXAMPLEDz18xOd2ka4tCzuWEXAMPLEahJbYkCPUBSU8opVkR7qkEXAMPLE1DR6sx2HocliOOLtu6Fkw91swQWEXAMPLE\GB3ZPrNh0PzQYvjUStZeccyNCx2EXAMPLEvp9mQOUXP6plfgxwKRX2fEXAMPLEDa\nhJLXkX3rHU2xbxJSq7D+XEXAMPLEcw+LyFhI5mgFRl88eGdsAEXAMPLElnI9EesG\nFQIDAQAB\n-----END PUBLIC KEY-----\n", "PrivateKey": "-----BEGIN RSA PRIVATE KEY-----\nkey omitted for security reasons\n-----END RSA PRIVATE KEY-----\n" } }
保存证书的 Amazon 资源名称 (ARN),以便稍后用于配置证书。
在 HSM 中使用私钥创建证书
注意
此功能适用于 v2.5.3 及更高版本的绿草核成分。Amazon IoT Greengrass目前在 Windows 核心设备上不支持此功能。
创建事物证书
-
在核心设备上,在 HSM 中初始化 PKCS #11 令牌,然后生成私钥。私钥必须是密钥大小为 RSA-2048(或更大)的 RSA 密钥或 ECC 密钥。
查看 HSM 的文档,了解如何初始化令牌和生成私钥。如果您的 HSM 支持对象 ID,请在生成私钥时指定对象 ID。保存您在初始化令牌和生成私钥时指定的插槽 ID、用户 PIN、对象标签、对象 ID(如果您的 HSM 使用一个)。稍后在将事物证书导入 HSM 并配置时将使用这些值Amazon IoT Greengrass核心软件。
-
使用私钥创建证书签名请求 (CSR)。Amazon IoT使用此 CSR 为您在 HSM 中生成的私钥创建事物证书。有关如何使用私钥创建 CSR 的信息,请参阅 HSM 的文档。CSR 是一个文件,例如
iotdevicekey.csr
。 -
将 CSR 从设备复制到您的开发计算机。如果在开发计算机和设备上启用了 SSH 和 SCP,则可以使用
scp
在开发计算机上命令传输 CSR。替换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事情。
-
替换
MyGreengrassCore
用你的名字Amazon IoT事情。 -
将证书亚马逊资源名称 (ARN) 替换为您在上一步中创建的证书的 ARN。
aws iot attach-thing-principal --thing-name
MyGreengrassCore
--principalarn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
如果请求成功,则该命令没有任何输出。
-
-
创建并附加Amazon IoT定义的策略Amazon IoT您的 Greengrass 核心设备的权限。以下策略允许访问所有 MQTT 主题和 Greengrass 操作,因此您的设备可以与需要新 Greengrass 操作的自定义应用程序和未来更改一起使用。您可以根据自己的用例限制此政策。有关更多信息,请参阅Amazon IoT Greengrass V2核心设备的最低Amazon IoT政策:
如果你之前设置过 Greengrass 核心设备,你可以连接它Amazon IoT策略而不是创建新策略。
执行以下操作:
-
创建一个包含Amazon IoTGreengrass 核心设备所需的政策文件。
例如,在基于 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政策文件中的政策。
-
替换
Greengrassv2IoThingPolicy
使用要创建的策略的名称。
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东西的证书。
-
替换
Greengrassv2IoThingPolicy
并附上要附加的政策的名称。 -
将目标 ARN 替换为您的证书的 ARNAmazon IoT事情。
aws iot attach-policy --policy-name
GreengrassV2IoTThingPolicy
--targetarn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
如果请求成功,则该命令没有任何输出。
-
-
创建代币交换角色
Greengrass 核心设备使用 IAM 服务角色,称为代币交换角色,以授权调用Amazon服务。该设备使用Amazon IoT获取临时证书的提供者Amazon此角色的证书,允许设备与之交互Amazon IoT,将日志发送到亚马逊CloudWatch记录并从 Amazon S3 下载自定义组件构件。有关更多信息,请参阅授权核心设备与Amazon服务:
你使用Amazon IoT 角色别名为 Greengrass 核心设备配置令牌交换角色。角色别名使您可以更改设备的令牌交换角色,但保持设备配置不变。有关更多信息,请参见授权直接呼叫Amazon服务在Amazon IoT Core开发者指南。
在本节中,您将创建代币交换 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" } ] }
-
使用信任策略文档创建代币交换角色。
-
替换
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 策略。
-
替换
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 策略附加到代币交换角色。
-
替换
Greengrassv2TokenExchangeRole
使用 IAM 角色的名称。 -
将策略 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服务在Amazon Identity and Access Management用户指南。
-
-
创建并附加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 替换为您的证书的 ARNAmazon IoT事情。
aws iot attach-policy --policy-name
GreengrassCoreTokenExchangeRoleAliasPolicy
--targetarn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4
如果请求成功,则该命令没有任何输出。
-
-
将证书下载到设备
早些时候,您已将设备的证书下载到开发计算机上。在本节中,您将证书复制到您的核心设备,以便使用设备用于连接的证书来设置设备Amazon IoT。您还可以下载亚马逊根证书颁发机构 (CA) 证书。如果您使用 HSM,也可以在本节中将证书文件导入 HSM。
-
如果您在中创建了事物证书和私钥Amazon IoT服务之前,请按照步骤下载带有私钥和证书文件的证书。
-
如果您之前使用硬件安全模块 (HSM) 中的私钥创建了事物证书,请按照步骤在 HSM 中下载带有私钥和证书的证书。
使用私钥和证书文件下载证书
将证书下载到设备
-
复制Amazon IoT从您的开发计算机到设备的事物证书。如果在开发计算机和设备上启用了 SSH 和 SCP,则可以使用
scp
在开发计算机上命令传输证书。替换device-ip-address
使用您的设备的 IP 地址。scp -r greengrass-v2-certs/
device-ip-address
:~ -
在设备上创建 Greengrass 根文件夹。稍后你将安装Amazon IoT Greengrass核心软件到这个文件夹。
-
(仅限 Linux)设置 Greengrass 根文件夹的父文件夹的权限。
-
替换
/greengras
使用根文件夹的父文件夹。
sudo chmod 755
/greengrass
-
-
复制Amazon IoT事物证书存放到 Greengrass 根文件夹。
-
下载亚马逊根证书颁发机构 (CA) 证书。Amazon IoT默认情况下,证书与亚马逊的根 CA 证书相关联。
在 HSM 中下载带有私钥和证书的证书
注意
此功能适用于 v2.5.3 及更高版本的绿草核成分。Amazon IoT Greengrass目前在 Windows 核心设备上不支持此功能。
将证书下载到设备
-
复制Amazon IoT从您的开发计算机到设备的事物证书。如果在开发计算机和设备上启用了 SSH 和 SCP,则可以使用
scp
在开发计算机上命令传输证书。替换device-ip-address
使用您的设备的 IP 地址。scp -r greengrass-v2-certs/
device-ip-address
:~ -
在设备上创建 Greengrass 根文件夹。稍后你将安装Amazon IoT Greengrass核心软件到这个文件夹。
-
(仅限 Linux)设置 Greengrass 根文件夹的父文件夹的权限。
-
替换
/greengras
使用根文件夹的父文件夹。
sudo chmod 755
/greengrass
-
-
导入事物证书文件,
~/greengrass-v2-certs/device.pem.crt
,进入 HSM。查看 HSM 的文档,了解如何将证书导入其中。使用您之前在 HSM 中生成私钥的相同令牌、插槽 ID、用户 PIN、对象标签和对象 ID(如果您的 HSM 使用的是)导入证书。注意
如果您之前生成了没有对象 ID 的私钥,并且证书有对象 ID,请将私钥的对象 ID 设置为与证书相同的值。查看 HSM 的文档,了解如何设置私钥对象的对象 ID。
-
(可选)删除事物证书文件,使其仅存在于 HSM 中。
rm ~/greengrass-v2-certs/device.pem.crt
-
下载亚马逊根证书颁发机构 (CA) 证书。Amazon IoT默认情况下,证书与亚马逊的根 CA 证书相关联。
设置设备环境
按照本节中的步骤设置 Linux 或 Windows 设备作为您的设备使用Amazon IoT Greengrass核心设备。
设置 Linux 设备
将 Linux 设备设置为Amazon IoT Greengrass V2
-
安装 Java 运行时,Amazon IoT Greengrass核心软件需要运行。我们建议你使用亚马逊 Corretto 11
要么OpenJDK 11 。以下命令向您展示了如何在您的设备上安装 OpenJDK。 -
对于基于 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
-
对于亚马逊 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核心软件(通常
root
),有权运行sudo
适用于任何用户和任何群组。-
运行以下命令打开
/etc/sudoers
文件。sudo visudo
-
验证用户的权限是否与以下示例类似。
root ALL=(ALL:ALL) ALL
-
-
(可选)至运行容器化 Lambda 函数,你必须启用cgroup
v1,并且必须启用并安装记忆和设备cgroups。如果您不打算运行容器化 Lambda 函数,则可以跳过此步骤。 要启用这些 cgroups 选项,请使用以下 Linux 内核参数启动设备。
cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
有关查看和设置设备内核参数的信息,请参阅操作系统和启动加载程序的文档。按照说明永久设置内核参数。
-
如中的要求列表所示,在您的设备上安装所有其他必需的依赖项设备要求。
设置 Windows 设备
注意
此功能适用于 v2.5.0 及更高版本的绿草核成分。
将 Windows 设备设置为Amazon IoT Greengrass V2
-
安装 Java 运行时,Amazon IoT Greengrass核心软件需要运行。我们建议你使用亚马逊 Corretto 11
要么OpenJDK 11 。 -
检查 Java 上是否可用路径
系统变量,如果不是,则添加它。这个LocalSystem账户运行Amazon IoT Greengrass核心软件,因此必须将 Java 添加到 PATH 系统变量中,而不是为用户添加 PATH 用户变量。执行以下操作: -
按 Windows 键打开开始菜单。
-
类型
environment variables
从开始菜单中搜索系统选项。 -
在开始菜单搜索结果中,选择编辑系统环境变量要打开系统属性窗口。
-
选择环境变量...要打开环境变量窗口。
-
下系统变量,选择路径,然后选择编辑。在里面编辑环境变量窗口,您可以在单独的行上查看每条路径。
-
检查 Java 安装的路径是否为
bin
文件夹存在。路径可能与以下示例类似。C:\Program Files\Amazon Corretto\jdk11.0.13_8\bin
-
如果 Java 安装的是
bin
中缺少文件夹路径,选择全新将其添加,然后选择好吧。
-
-
打开 Windows 命令提示符 (
cmd.exe
) 作为管理员。 -
在中创建默认用户LocalSystemWindows 设备上的帐户。替换
密码
使用安全的密码。net user /add ggc_user
password
提示
根据你的 Windows 配置,用户的密码可能会被设置为在将来的某个日期过期。为确保您的 Greengrass 应用程序继续运行,请跟踪密码何时过期,并在密码到期之前进行更新。您也可以将用户的密码设置为永不过期。
-
要检查用户及其密码何时过期,请运行以下命令。
net user
ggc_user
| findstr /C:expires -
要将用户的密码设置为永不过期,请运行以下命令。
wmic UserAccount where "Name='
ggc_user
'" set PasswordExpires=False
-
-
下载并安装PsExec实用程序
来自设备上的微软。 -
使用PsExec实用程序,用于在凭证管理器实例中存储默认用户的用户名和密码LocalSystem账户。替换
密码
使用您之前设置的用户密码。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核心软件来自以下位置:
注意
你可以下载特定版本的Amazon IoT Greengrass核心软件来自以下位置。替换版本
有版本可供下载。
https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-
version
.zip
要下载Amazon IoT Greengrass核心软件
-
在您的核心设备上,下载Amazon IoT Greengrass将核心软件转换为名为的文件
greengrass-nucleus-latest.zip
。下载此软件即表示您同意Greengrass 核心软件许可协议
。 -
解压缩Amazon IoT Greengrass将核心软件保存到设备上的文件夹。替换
GreengrassInstaller
使用你要使用的文件夹。 -
(可选)运行以下命令查看版本Amazon IoT Greengrass核心软件。
java -jar ./
GreengrassInstaller
/lib/Greengrass.jar --version
重要
如果你安装的版本早于 v2.4.0 的 Greengrass nucleus,则在安装后不要删除此文件夹Amazon IoT Greengrass核心软件。这个Amazon IoT Greengrass核心软件使用此文件夹中的文件来运行。
如果您下载了最新版本的软件,则安装了 v2.4.0 或更高版本,安装后可以删除此文件夹Amazon IoT Greengrass核心软件。
(可选)验证 Greengrass nucleus 软件签名
注意
此功能在 Greengrass nucleus 2.9.5 及更高版本中可用。
-
使用以下命令验证你的 Greengrass nucleus 工件的签名:
-
这个
jarsigner
调用产生的输出指示验证结果。-
如果 Greengrass nucleus 压缩文件已签名,则输出将包含以下语句:
jar verified.
-
如果 Greengrass nucleus zip 文件未经过签名,则输出包含以下语句:
jar is unsigned.
-
-
如果你提供了 Jarsigner
-certs
选项以及-verify
和-verbose
选项,输出还包括详细的签名者证书信息。
安装 Amazon IoT Greengrass Core 软件
使用指定以下操作的参数运行安装程序:
-
从指定使用的部分配置文件安装Amazon您之前创建的资源和证书。这个Amazon IoT Greengrass核心软件使用配置文件来指定设备上每个 Greengrass 组件的配置。安装程序从您提供的部分配置文件中创建完整的配置文件。
-
指定使用
ggc_user
系统用户在核心设备上运行软件组件。在 Linux 设备上,此命令还指定使用ggc_group
系统组,安装程序会为您创建系统用户和组。 -
设置Amazon IoT Greengrass核心软件作为系统服务,在启动时运行。在 Linux 设备上,这需要Systemd
初始化系统。 重要
在 Windows 核心设备上,你必须设置Amazon IoT Greengrass核心软件即系统服务。
有关您可以指定的参数的更多信息,请参见安装程序参数。
注意
如果你在跑步Amazon IoT Greengrass在内存有限的设备上,你可以控制内存量Amazon IoT Greengrass核心软件用途。要控制内存分配,可以在中设置 JVM 堆大小选项jvmOptions
你的 nucleus 组件中的配置参数。有关更多信息,请参阅使用 JVM 选项控制内存分配:
-
如果您在中创建了事物证书和私钥Amazon IoT更早提供服务,请按照步骤安装Amazon IoT Greengrass带有私钥和证书文件的核心软件。
-
如果您之前使用硬件安全模块 (HSM) 中的私钥创建了事物证书,请按照步骤安装Amazon IoT GreengrassHSM 中带有私钥和证书的核心软件。
安装Amazon IoT Greengrass带有私钥和证书文件的核心软件
安装 Amazon IoT Greengrass Core 软件
-
检查版本Amazon IoT Greengrass核心软件。
-
替换
GreengrassInstaller
以及包含该软件的文件夹的路径。
java -jar ./
GreengrassInstaller
/lib/Greengrass.jar --version -
-
使用文本编辑器创建名为的配置文件
config.yaml
提供给安装程序。例如,在基于 Linux 的系统上,你可以运行以下命令来使用 GNU nano 来创建文件。
nano
GreengrassInstaller
/config.yaml将以下 YAML 内容复制到文件中。此部分配置文件指定了系统参数和 Greengrass 核参数。
--- system: certificateFilePath: "
/greengrass/v2
/device.pem.crt" privateKeyPath: "/greengrass/v2
/private.pem.key" rootCaPath: "/greengrass/v2
/AmazonRootCA1.pem" rootpath: "/greengrass/v2
" thingName: "MyGreengrassCore
" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "2.11.2
" 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/v2
使用 Greengrass 根文件夹。 -
替换
MyGreengrassCore
用名字命名Amazon IoT事情。 -
替换
2.11.2
使用的是的版本Amazon IoT Greengrass核心软件。 -
替换
us-west-2
和Amazon Web Services 区域你在哪里创建了资源。 -
替换
GreengrassCoreTokenExchangeRoleAlias
使用代币交换角色别名的名称。 -
替换
iotDataEndpoint
和你在一起Amazon IoT数据端点。 -
替换
iotCredEndpoint
和你在一起Amazon IoT凭证终端节点。
注意
在此配置文件中,您可以自定义其他 nucleus 配置选项,例如要使用的端口和网络代理,如以下示例所示。有关更多信息,请参见Greengrass 核配置。
--- system: certificateFilePath: "
/greengrass/v2
/device.pem.crt" privateKeyPath: "/greengrass/v2
/private.pem.key" rootCaPath: "/greengrass/v2
/AmazonRootCA1.pem" rootpath: "/greengrass/v2
" thingName: "MyGreengrassCore
" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "2.11.2
" 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
争论。有关直接在您的设备上部署 Greengrass CLI 的信息,请参阅Gmmmmmmmmmm。 -
-
通过查看根文件夹中的文件来验证安装。
如果安装成功,则根文件夹包含多个文件夹,例如
config
,packages
,以及logs
。
安装Amazon IoT GreengrassHSM 中带有私钥和证书的核心软件
注意
此功能适用于 v2.5.3 及更高版本的绿草核成分。Amazon IoT Greengrass目前在 Windows 核心设备上不支持此功能。
安装 Amazon IoT Greengrass Core 软件
-
检查版本Amazon IoT Greengrass核心软件。
-
替换
GreengrassInstaller
以及包含该软件的文件夹的路径。
java -jar ./
GreengrassInstaller
/lib/Greengrass.jar --version -
-
要启用Amazon IoT Greengrass要在 HSM 中使用私钥和证书的核心软件,请安装PKCS #11 提供者组件当你安装时Amazon IoT Greengrass核心软件。PKCS #11 提供者组件是你可以在安装期间配置的插件。您可以从以下位置下载最新版本的 PKCS #11 提供者组件:
将 PKCS #11 提供者插件下载到名为的文件中
aws.greengrass.crypto.Pkcs11Provider.jar
。替换GreengrassInstaller
使用你要使用的文件夹。curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar >
GreengrassInstaller
/aws.greengrass.crypto.Pkcs11Provider.jar下载此软件即表示您同意Greengrass 核心软件许可协议
。 -
使用文本编辑器创建名为的配置文件
config.yaml
提供给安装程序。例如,在基于 Linux 的系统上,你可以运行以下命令来使用 GNU nano 来创建文件。
nano
GreengrassInstaller
/config.yaml将以下 YAML 内容复制到文件中。此部分配置文件指定了系统参数、Greengrass nucleus 参数和 PKCS #11 提供程序参数。
--- system: certificateFilePath: "pkcs11:object=
iotdevicekey
;type=cert" privateKeyPath: "pkcs11:object=iotdevicekey
;type=private" rootCaPath: "/greengrass/v2
/AmazonRootCA1.pem" rootpath: "/greengrass/v2
" thingName: "MyGreengrassCore
" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "2.11.2
" 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
"然后,执行以下操作:
-
替换的每个实例
物联网设备密钥
在带有对象标签的 PKCS #11 URI 中,你在其中创建了私钥并导入了证书。 -
替换的每个实例
/greengrass/v2
使用 Greengrass 根文件夹。 -
替换
MyGreengrassCore
用名字命名Amazon IoT事情。 -
替换
2.11.2
使用的是的版本Amazon IoT Greengrass核心软件。 -
替换
us-west-2
和Amazon Web Services 区域你在哪里创建了资源。 -
替换
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: "/greengrass/v2
/AmazonRootCA1.pem" rootpath: "/greengrass/v2
" thingName: "MyGreengrassCore
" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "2.11.2
" 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/v2
使用 Greengrass 根文件夹。 -
替换的每个实例
GreengrassInstaller
使用你解压缩安装程序的文件夹。
sudo -E java -Droot="
/greengrass/v2
" -Dlog.store=FILE \ -jar ./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
争论。有关直接在您的设备上部署 Greengrass CLI 的信息,请参阅Gmmmmmmmmmm。 -
-
通过查看根文件夹中的文件来验证安装。
如果安装成功,则根文件夹包含多个文件夹,例如
config
,packages
,以及logs
。
如果你安装了Amazon IoT Greengrass核心软件作为系统服务,安装程序为您运行软件。否则,必须手动运行该软件。有关更多信息,请参阅运行Amazon IoT GreengrassCore 软件:
有关如何配置和使用该软件的更多信息,以及Amazon IoT Greengrass,请参阅以下内容: