使用手动资源配置安装Amazon IoT Greengrass核心软件 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用手动资源配置安装Amazon IoT Greengrass核心软件

CAmazon IoT Greengrass ore 软件包括一个安装程序,可将您的设备设置为 Greengrass 核心设备。要手动设置设备,您可以创建所需的资源Amazon IoT和 IAM 资源供设备使用。如果您手动创建这些资源,则无需向安装程序提供Amazon证书。

手动安装Amazon IoT Greengrass Core 软件时,也可以将设备配置为使用网络代理或连接到Amazon端口 443。例如,如果您的设备在防火墙或网络代理后面运行,则可能需要指定这些配置选项。有关更多信息,请参阅通过端口 443 或网络代理进行连接

您也可以通过 PKCS #11 接口将Amazon IoT Greengrass核心软件配置为使用硬件安全模块 (HSM)。此功能使您能够安全地存储私钥和证书文件,以免它们在软件中暴露或复制。您可以将私钥和证书存储在硬件模块(例如 HSM、可信平台模块 (TPM) 或其他加密元素)上。仅在Linux设备上提供了该功能。有关硬件安全性及其使用要求的更多信息,请参阅硬件安全性集成

重要

在下载Amazon IoT Greengrass Core 软件之前,请检查您的核心设备是否满足安装和运行Amazon IoT Greengrass Core 软件 v2.0 的要求

检索Amazon IoT端点

获取适合您的Amazon IoT终端节点Amazon Web Services 账户,然后保存以备日后使用。您的设备使用这些终端进行连接Amazon IoT。执行以下操作:

  1. 获取您的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" }
  2. 获取您的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事物
  1. 为你的设备创建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" }
  2. (可选)将Amazon IoT事物添加到新的或现有的事物组。您可以使用事物组来管理 Greengrass 核心设备队列。将软件组件部署到设备时,可以将单个设备或设备组作为目标。您可以使用活跃的 Greengrass 部署将设备添加到事物组,以将该事物组的软件组件部署到该设备。执行以下操作:

    1. (可选)创建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" }
    2. 将Amazon IoT事物添加到事物组。

      • MyGreengrassCore用你的Amazon IoT东西的名字替换。

      • MyGreengrassCoreGroup替换为事物组的名称。

      aws iot add-thing-to-thing-group --thing-name MyGreengrassCore --thing-group-name MyGreengrassCoreGroup

      如果请求成功,该命令将没有任何输出。

创建事物证书

当您将设备注册为Amazon IoT事物时,该设备可以使用数字证书进行身份验证Amazon。此证书允许设备与Amazon IoT和通信Amazon IoT Greengrass。

在本部分中,您将创建和下载设备可用于连接的证书Amazon。

如果要将Amazon IoT Greengrass核心软件配置为使用硬件安全模块 (HSM) 来安全地存储私钥和证书,请按照步骤在 HSM 中使用私钥创建证书。否则,请按照步骤在Amazon IoT服务中创建证书和私钥。硬件安全功能仅在 Linux 设备上可用。有关硬件安全性及其使用要求的更多信息,请参阅硬件安全性集成

创建事物证书
  1. 创建一个文件夹,在其中下载Amazon IoT事物的证书。

    mkdir greengrass-v2-certs
  2. 创建并下载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) 以供以后配置证书。

注意

此功能适用于 Greengrass 核心组件的 v2.5.3 及更高版本。 Amazon IoT Greengrass目前在 Windows 核心设备上不支持此功能。

创建事物证书
  1. 在核心设备上,在 HSM 中初始化 PKCS #11 令牌,然后生成私钥。私钥必须是 RSA-2048 密钥大小(或更大)的 RSA 密钥或 ECC 密钥。

    注意

    要使用带有 ECC 密钥的硬件安全模块,必须使用 Greengrass nucleus v2.5.6 或更高版本。

    要使用硬件安全模块和密钥管理器,必须使用带有 RSA 密钥的硬件安全模块。

    查看 HSM 的文档,了解如何初始化令牌和生成私钥。如果您的 HSM 支持对象 ID,请在生成私钥时指定对象 ID。保存您在初始化令牌和生成私钥时指定的插槽 ID、用户 PIN、对象标签、对象 ID(如果您的 HSM 使用一个)。稍后在将事物证书导入 HSM 并配置Amazon IoT Greengrass Core 软件时使用这些值。

  2. 从私有密钥创建证书签名请求 (CSR)。 Amazon IoT使用此 CSR 为您在 HSM 中生成的私钥创建事物证书。有关如何基于私有密钥创建 CSR 的更多信息,请参阅 HSM 的文档。CSR 是一个文件,例如iotdevicekey.csr

  3. 将 CSR 从设备复制到您的开发计算机。如果在开发计算机和设备上启用了 SSH 和 SCP,则可以在开发计算机上使用scp命令传输 CSR。device-ip-address替换为设备的 IP 地址,然后将 ~/iotdevicekey.cs r 替换为设备上 CSR 文件的路径。

    scp device-ip-address:~/iotdevicekey.csr iotdevicekey.csr
  4. 在开发计算机上,创建一个文件夹,在其中下载该Amazon IoT事物的证书。

    mkdir greengrass-v2-certs
  5. 使用 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权限。

配置事物的证书
  1. 将证书附在Amazon IoT东西上。

    • MyGreengrassCore用你的Amazon IoT东西的名字替换。

    • 将证书的 Amazon 资源名称 (ARN) 替换为您在上一步中创建的证书的 ARN。

    aws iot attach-thing-principal --thing-name MyGreengrassCore --principal arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

    如果请求成功,该命令将没有任何输出。

  2. 创建并附加用于定义 Greengrass 核心设备Amazon IoT权限的Amazon IoT策略。以下策略允许访问所有 MQTT 主题和 Greengrass 操作,因此您的设备可与需要新的 Greengrass 操作的自定义应用程序和future 更改一起使用。您可以基于自己的使用案例来限制此政策。有关更多信息,请参阅Amazon IoT Greengrass V2核心设备的最低Amazon IoT政策

    如果您之前设置过 Greengrass 核心设备,则可以附加其Amazon IoT策略,而不必创建新的策略。

    执行以下操作:

    1. 创建一个包含 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": [ "*" ] } ] }
    2. 根据Amazon IoT策略文档创建策略。

      • 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" }
    3. 将Amazon IoT保单附加到Amazon IoT事物的证书上。

      • GreenGrassv2IoTThingPolicy 替换为要附加的策略的名称。

      • 将目标 ARN 替换为您的Amazon IoT事物证书的 ARN。

      aws iot attach-policy --policy-name GreengrassV2IoTThingPolicy --target arn: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 角色
  1. 创建一个 IAM 角色,您的设备可以将其用作代币交换角色。执行以下操作:

    1. 创建一个包含令牌交换角色所需的信任策略文档的文件。

      例如,在基于 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" } ] }
    2. 使用信任策略文档创建令牌交换角色。

      • 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" } ] } }
    3. 创建一个包含令牌交换角色所需的访问策略文档的文件。

      例如,在基于 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 存储桶,则可以在创建存储桶后稍后添加这些权限。

    4. 从策略文档创建 IAM policy。

      • 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" } }
    5. 将 IAM policy 附加到代币交换角色。

      • GreenGrassV2TokenExchangeRole 替换为 IAM 角色的名称。

      • 将策略 ARN 替换为您在上一步中创建的 IAM policy 的 ARN。

      aws iam attach-role-policy --role-name GreengrassV2TokenExchangeRole --policy-arn arn:aws:iam::123456789012:policy/GreengrassV2TokenExchangeRoleAccess

      如果请求成功,该命令将没有任何输出。

  2. 创建Amazon IoT指向令牌交换角色的角色别名。

    • GreengrassCoreTokenExchangeRoleAlias替换为要创建的角色别名的名称。

    • 将角色 ARN 替换为您在上一步中创建的 IAM 角色的 ARN。

    aws iot create-role-alias --role-alias GreengrassCoreTokenExchangeRoleAlias --role-arn arn: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用户权限

  3. 创建并附加一项Amazon IoT策略,允许您的 Greengrass 核心设备使用角色别名担任令牌交换角色。如果您之前设置过 Greengrass 核心设备,则可以附加其角色别名Amazon IoT策略,而不必创建新的策略。执行以下操作:

    1. (可选)创建一个包含角色别名所需的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" } ] }
    2. 根据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" }
    3. 将Amazon IoT保单附加到Amazon IoT事物的证书上。

      • GreengrassCoreTokenExchangeRoleAliasPolicy替换为角色别名Amazon IoT策略的名称。

      • 将目标 ARN 替换为您的Amazon IoT事物证书的 ARN。

      aws iot attach-policy --policy-name GreengrassCoreTokenExchangeRoleAliasPolicy --target arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4

      如果请求成功,该命令将没有任何输出。

将证书下载到设备

之前,您已将设备的证书下载到开发计算机上。在本节中,您将证书复制到您的核心设备,以使用设备连接时使用的证书来设置设备Amazon IoT。您还可以下载亚马逊根证书颁发机构 (CA) 证书。如果您使用 HSM,则还可以在本节中将证书文件导入 HSM。

  • 如果您之前在Amazon IoT服务中创建了事物证书和私钥,请按照步骤下载带有私钥和证书文件的证书。

  • 如果您之前使用硬件安全模块 (HSM) 中的私钥创建了事物证书,请按照步骤在 HSM 中下载带有私钥和证书的证书。

将证书下载到设备
  1. 将Amazon IoT事物证书从您的开发计算机复制到设备上。如果在开发计算机和设备上启用了 SSH 和 SCP,则可以在开发计算机上使用scp命令来传输证书。device-ip-address替换为设备的 IP 地址。

    scp -r greengrass-v2-certs/ device-ip-address:~
  2. 在设备上创建 Greengrass 根文件夹。稍后您将将Amazon IoT Greengrass Core 软件安装到此文件夹。

    Linux or Unix
    • /greengrass/v2 替换为要使用的文件夹。

    sudo mkdir -p /greengrass/v2
    Windows Command Prompt
    • C:\greengrass\v2 替换为要使用的文件夹。

    mkdir C:\greengrass\v2
    PowerShell
    • C:\greengrass\v2 替换为要使用的文件夹。

    mkdir C:\greengrass\v2
  3. (仅限 Linux)设置 Greengrass 根文件夹父文件夹的权限。

    • /greengrass 替换为根文件夹的父文件夹。

    sudo chmod 755 /greengrass
  4. 将Amazon IoT事物证书复制到 Greengrass 根文件夹。

    Linux or Unix
    • /greengrass/v2 替换为 Greengrass 根文件夹。

    sudo cp -R ~/greengrass-v2-certs/* /greengrass/v2
    Windows Command Prompt
    • C:\greengrass\v2 替换为要使用的文件夹。

    robocopy %USERPROFILE%\greengrass-v2-certs C:\greengrass\v2 /E
    PowerShell
    • C:\greengrass\v2 替换为要使用的文件夹。

    cp -Path ~\greengrass-v2-certs\* -Destination C:\greengrass\v2
  5. 下载亚马逊根证书颁发机构 (CA) 证书。 Amazon IoT默认情况下,证书与亚马逊的根 CA 证书相关联。

    Linux or Unix
    sudo curl -o /greengrass/v2/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
    Windows Command Prompt (CMD)
    curl -o C:\greengrass\v2\AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
    PowerShell
    iwr -Uri https://www.amazontrust.com/repository/AmazonRootCA1.pem -OutFile C:\greengrass\v2\AmazonRootCA1.pem
注意

此功能适用于 Greengrass 核心组件的 v2.5.3 及更高版本。 Amazon IoT Greengrass目前在 Windows 核心设备上不支持此功能。

将证书下载到设备
  1. 将Amazon IoT事物证书从您的开发计算机复制到设备上。如果在开发计算机和设备上启用了 SSH 和 SCP,则可以在开发计算机上使用scp命令来传输证书。device-ip-address替换为设备的 IP 地址。

    scp -r greengrass-v2-certs/ device-ip-address:~
  2. 在设备上创建 Greengrass 根文件夹。稍后您将将Amazon IoT Greengrass Core 软件安装到此文件夹。

    Linux or Unix
    • /greengrass/v2 替换为要使用的文件夹。

    sudo mkdir -p /greengrass/v2
    Windows Command Prompt
    • C:\greengrass\v2 替换为要使用的文件夹。

    mkdir C:\greengrass\v2
    PowerShell
    • C:\greengrass\v2 替换为要使用的文件夹。

    mkdir C:\greengrass\v2
  3. (仅限 Linux)设置 Greengrass 根文件夹父文件夹的权限。

    • /greengrass 替换为根文件夹的父文件夹。

    sudo chmod 755 /greengrass
  4. 将事物证书文件导入 HSM。~/greengrass-v2-certs/device.pem.crt查看 HSM 的文档,了解如何将证书导入其中。使用与之前在 HSM 中生成私钥相同的令牌、插槽 ID、用户 PIN、对象标签和对象 ID(如果您的 HSM 使用)导入证书。

    注意

    如果您之前生成了没有对象 ID 的私钥,并且证书有对象 ID,请将私钥的对象 ID 设置为与证书相同的值。查看 HSM 的文档,了解如何为私钥对象设置对象 ID。

  5. (可选)删除事物证书文件,使其仅存在于 HSM 中。

    rm ~/greengrass-v2-certs/device.pem.crt
  6. 下载亚马逊根证书颁发机构 (CA) 证书。 Amazon IoT默认情况下,证书与亚马逊的根 CA 证书相关联。

    Linux or Unix
    sudo curl -o /greengrass/v2/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
    Windows Command Prompt (CMD)
    curl -o C:\greengrass\v2\AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem
    PowerShell
    iwr -Uri https://www.amazontrust.com/repository/AmazonRootCA1.pem -OutFile C:\greengrass\v2\AmazonRootCA1.pem

设置设备环境

按照本节中的步骤设置 Linux 或 Windows 设备作为Amazon IoT Greengrass核心设备。

为以下设备设置 Linux 设备Amazon IoT Greengrass V2
  1. 安装Amazon IoT Greengrass核心软件需要运行的 Java 运行时。我们建议你使用亚马逊 Corretto 11OpenJDK 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

    安装完成后,运行以下命令以验证 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)
  2. (可选)创建在设备上运行组件的默认系统用户和组。您也可以选择让Amazon IoT Greengrass Core 软件安装程序在安装期间使用安装--component-default-user程序参数创建此用户和组。有关更多信息,请参阅安装程序参数

    sudo useradd --system --create-home ggc_user sudo groupadd --system ggc_group
  3. 验证运行Amazon IoT Greengrass Core 软件的用户(通常root)是否有权sudo与任何用户和任何群组一起运行。

    1. 运行以下命令以打开此/etc/sudoers文件。

      sudo visudo
    2. 确认用户的权限看起来与下面的示例相似。

      root ALL=(ALL:ALL) ALL
  4. (可选)要运行容器化 Lambda 函数,必须启用 c groups v1,并且必须启用和安装内存设备 cgroup。如果您不打算运行容器化 Lambda 函数,则可跳过此步骤。

    要启用这些 cgroups 选项,请使用以下 Linux 内核参数启动设备。

    cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0

    有关查看和设置设备内核参数的信息,请参阅操作系统和启动加载程序的文档。按照说明永久设置内核参数。

    提示:在 Raspberry Pi 上设置内核参数

    如果您的设备是 Raspberry Pi,则可以完成以下步骤来查看和更新其 Linux 内核参数:

    1. 打开 /boot/cmdline.txt 文件。此文件指定了 Raspberry Pi 启动时要应用的 Linux 内核参数。

      例如,在基于 Linux 的系统上,您可以运行以下命令来使用 GNU nano 打开文件。

      sudo nano /boot/cmdline.txt
    2. 确认该/boot/cmdline.txt文件包含以下内核参数。该systemd.unified_cgroup_hierarchy=0参数指定使用 cgroups v1 而不是 cgroups v2。

      cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0

      如果/boot/cmdline.txt文件不包含这些参数,或者它包含这些具有不同值的参数,请更新文件以包含这些参数和值。

    3. 如果您更新了/boot/cmdline.txt文件,请重新启动 Raspberry Pi 以应用更改。

      sudo reboot
  5. 按照中的要求列表所示,在您的设备上安装所有其他必需的依赖项设备要求

注意

此功能适用于 Greengrass 核心组件的 v2.5.0 及更高版本。

要设置 Windows 设备,请执行以下操作Amazon IoT Greengrass V2
  1. 安装Amazon IoT Greengrass核心软件需要运行的 Java 运行时。我们建议你使用亚马逊 Corretto 11OpenJDK 11

  2. 检查 PATH 系统变量上是否有 Java 可用,如果不可用,则添加该变量。该 LocalSystem 帐户运行Amazon IoT Greengrass核心软件,因此必须将 Java 添加到 PATH 系统变量中,而不是为用户添加 PATH 用户变量。执行以下操作:

    1. 按下 Windows 键打开开始菜单。

    2. 键入environment variables即可从 “开始” 菜单中搜索系统选项。

    3. 在开始菜单搜索结果中,选择 “编辑系统环境变量” 以打开 “系统属性” 窗口。

    4. 选择环境变量... 打开 “环境变量” 窗口。

    5. 在 “系统变量” 下,选择 “路径”,然后选择 “编辑”。在 “编辑环境变量” 窗口中,可以在单独的行中查看每条路径。

    6. 检查 Java 安装bin文件夹的路径是否存在。该路径可能类似于以下示例。

      C:\Program Files\Amazon Corretto\jdk11.0.13_8\bin
    7. 如果 Path 中缺少 Java 安装bin文件夹,请选择 “新建” 进行添加,然后选择 “确定”

  3. 以管理员身份打开 Windows 命令提示符 (cmd.exe)。

  4. 在 Windows 设备上的 LocalSystem 帐户中创建默认用户。用安全密码替换密码。

    net user /add ggc_user password
    提示

    根据您的 Windows 配置,用户的密码可能会设置为在将future 某个日期过期。为确保您的 Greengrass 应用程序继续运行,请跟踪密码何时过期,并在密码到期之前进行更新。您也可以将用户的密码设置为永不过期。

    • 要检查用户及其密码何时过期,请运行以下命令。

      net user ggc_user | findstr /C:expires
    • 要将用户的密码设置为永不过期,请运行以下命令。

      wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
  5. 从微软下载该PsExec实用程序并将其安装到设备上。

  6. 使用该 PsExec 实用程序将默认用户的用户名和密码存储在 LocalSystem 帐户的 Credential Manager 实例中。使用您之前设置的用户密码替换密码。

    psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password

    如果PsExec License Agreement打开,Accept请选择同意许可证并运行命令。

    注意

    在 Windows 设备上,该 LocalSystem 帐户运行 Greengrass 核心,您必须使用该 PsExec 实用程序在 LocalSystem 帐户中存储默认用户信息。使用 Credential Manager 应用程序将此信息存储在当前登录用户的 Windows 帐户中,而不是存储在 LocalSystem 帐户中。

下载Amazon IoT Greengrass核心软件

您可以从以下位置下载最新版本的Amazon IoT Greengrass Core 软件:

注意

您可以从以下位置下载特定版本的Amazon IoT Greengrass Core 软件。用要下载的版本替换版本。

https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
下载Amazon IoT Greengrass核心软件
  1. 在您的核心设备上,将Amazon IoT Greengrass Core 软件下载到名为的文件中greengrass-nucleus-latest.zip

    Linux or Unix
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
    Windows Command Prompt (CMD)
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
    PowerShell
    iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip -OutFile greengrass-nucleus-latest.zip

    下载此软件即表示您同意 Greengrass 核心软件许可协议

  2. 将Amazon IoT Greengrass Core 软件解压缩到设备上的某个文件夹。GreengrassInstaller替换为要使用的文件夹。

    Linux or Unix
    unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
    Windows Command Prompt (CMD)
    mkdir GreengrassInstaller && tar -xf greengrass-nucleus-latest.zip -C GreengrassInstaller && del greengrass-nucleus-latest.zip
    PowerShell
    Expand-Archive -Path greengrass-nucleus-latest.zip -DestinationPath .\GreengrassInstaller rm greengrass-nucleus-latest.zip
  3. (可选)运行以下命令以查看 CAmazon IoT Greengrass ore 软件的版本。

    java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
重要

如果您安装的版本早于 v2.4.0 的 Greengrass nucleus,请不要在安装Amazon IoT Greengrass Core 软件后删除此文件夹。CAmazon IoT Greengrass ore 软件使用此文件夹中的文件来运行。

如果您下载了最新版本的软件,则安装了 v2.4.0 或更高版本,并且可以在安装Amazon IoT Greengrass Core 软件后删除此文件夹。

安装 Amazon IoT Greengrass Core 软件

使用指定以下操作的参数来运行安装程序:

  • 从指定使用您之前创建的Amazon资源和证书的部分配置文件进行安装。CAmazon IoT Greengrass ore 软件使用配置文件来指定设备上每个 Greengrass 组件的配置。安装程序会根据您提供的部分配置文件创建完整的配置文件。

  • 指定使用ggc_user系统用户在核心设备上运行软件组件。在 Linux 设备上,此命令还指定使用ggc_group系统组,安装程序会为您创建系统用户和组。

  • 将Amazon IoT Greengrass Core 软件设置为启动时运行的系统服务。在 Linux 设备上,这需要 S ystemd 初始化系统。

    重要

    在 Windows 核心设备上,必须将Amazon IoT Greengrass核心软件设置为系统服务。

有关您可以指定的参数的更多信息,请参阅安装程序参数

注意

如果您在内存有限的设备Amazon IoT Greengrass上运行,则可以控制Amazon IoT Greengrass Core 软件使用的内存量。要控制内存分配,可以在 nucleus 组件的jvmOptions配置参数中设置 JVM 堆大小选项。有关更多信息,请参阅使用 JVM 选项控制内存分配

  • 如果您之前在Amazon IoT服务中创建了事物证书和私钥,请按照步骤安装带有私钥和证书文件的Amazon IoT Greengrass核心软件。

  • 如果您之前使用硬件安全模块 (HSM) 中的私钥创建了事物证书,请按照步骤在 HSM 中安装带有私钥和证书的Amazon IoT Greengrass核心软件。

安装 Amazon IoT Greengrass Core 软件
  1. 检查Amazon IoT Greengrass核心软件的版本。

    • GreengrassInstaller替换为包含软件的文件夹的路径。

    java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
  2. 使用文本编辑器创建一个名为的配置文件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.9.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/v2 的每个实例替换为 Greengrass 根文件夹。

    • MyGreengrassCore替换为Amazon IoT事物的名称。

    • 2.9.0 替换为Amazon IoT Greengrass Core 软件的版本。

    • us-west-2 替换为您创建资源的Amazon Web Services 区域位置的 us-west-2。

    • 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.9.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"
  3. 运行安装程序,--init-config并指定提供配置文件。

    • /greengrass/v2C:\greengrass\v2 替换为 Greengrass 根文件夹。

    • 使用解压缩安装程序GreengrassInstaller的文件夹替换的每个实例。

    Linux or Unix
    sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \ -jar ./GreengrassInstaller/lib/Greengrass.jar \ --init-config ./GreengrassInstaller/config.yaml \ --component-default-user ggc_user:ggc_group \ --setup-system-service true
    Windows Command Prompt (CMD)
    java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ^ -jar ./GreengrassInstaller/lib/Greengrass.jar ^ --init-config ./GreengrassInstaller/config.yaml ^ --component-default-user ggc_user ^ --setup-system-service true
    PowerShell
    java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ` -jar ./GreengrassInstaller/lib/Greengrass.jar ` --init-config ./GreengrassInstaller/config.yaml ` --component-default-user ggc_user ` --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 的信息,请参阅Greengrass Command Line Interface

  4. 通过查看根文件夹中的文件来验证安装。

    Linux or Unix
    ls /greengrass/v2
    Windows Command Prompt (CMD)
    dir C:\greengrass\v2
    PowerShell
    ls C:\greengrass\v2

    如果安装成功,则根文件夹包含多个文件夹,例如configpackages、和logs

注意

此功能适用于 Greengrass 核心组件的 v2.5.3 及更高版本。 Amazon IoT Greengrass目前在 Windows 核心设备上不支持此功能。

安装 Amazon IoT Greengrass Core 软件
  1. 检查Amazon IoT Greengrass核心软件的版本。

    • GreengrassInstaller替换为包含软件的文件夹的路径。

    java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
  2. 要使Amazon IoT Greengrass核心软件能够在 HSM 中使用私钥和证书,请在安装 CAmazon IoT Greengrass ore 软件时安装 PKCS #11 提供商组件。PKCS #11 provider 组件是一个可以在安装期间配置的插件。您可以从以下位置下载最新版本的 PKCS #11 提供程序组件:

    将 PKCS #11 提供商插件下载到名为的文件中aws.greengrass.crypto.Pkcs11Provider.jarGreengrassInstaller替换为要使用的文件夹。

    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar > GreengrassInstaller/aws.greengrass.crypto.Pkcs11Provider.jar

    下载此软件即表示您同意 Greengrass 核心软件许可协议

  3. 使用文本编辑器创建一个名为的配置文件config.yaml,以提供给安装程序。

    例如,在基于 Linux 的系统上,您可以运行以下命令来使用 GNU nano 创建文件。

    nano GreengrassInstaller/config.yaml

    将以下 YAML 内容复制到该文件中。这个部分配置文件指定了系统参数、Greengrass 核心参数和 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.9.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"

    然后,执行以下操作:

    • 将 PKCS #11 URI 中的 iotdevicekey 的每个 iotdevicekey 实例替换为您在其中创建私钥和导入证书的对象标签。

    • /greengrass/v2 的每个实例替换为 Greengrass 根文件夹。

    • MyGreengrassCore替换为Amazon IoT事物的名称。

    • 2.9.0 替换为Amazon IoT Greengrass Core 软件的版本。

    • us-west-2 替换为您创建资源的Amazon Web Services 区域位置的 us-west-2。

    • 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.9.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"
  4. 运行安装程序,--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 的信息,请参阅Greengrass Command Line Interface

  5. 通过查看根文件夹中的文件来验证安装。

    Linux or Unix
    ls /greengrass/v2
    Windows Command Prompt (CMD)
    dir C:\greengrass\v2
    PowerShell
    ls C:\greengrass\v2

    如果安装成功,则根文件夹包含多个文件夹,例如configpackages、和logs

如果您将Amazon IoT Greengrass Core 软件作为系统服务安装,则安装程序会为您运行该软件。否则,您必须手动运行该软件。有关更多信息,请参阅运行Amazon IoT GreengrassCore 软件

有关如何配置和使用软件的更多信息Amazon IoT Greengrass,请参阅以下内容: