选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

FIPS 端点

聚焦模式
FIPS 端点 - AWS IoT Greengrass

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

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

AWS IoT Greengrass 支持使用 FIPS(联邦信息处理标准 (FIPS) 140-2)端点。启用 FIPS 模式后,向 AWS Cloud 服务传输的所有数据(包括 HTTP 和 MQTT 协议)都应调用相应的符合 FIPS 标准的端点 [FIPS – Amazon Web Services(AWS)],并与之建立连接。

MQTT 通信 AWS IoT 利用物联网数据平面 FIPS 端点(连接到 FIPS 端点- AWS IoT Core)和 AWS开发的 AWS IoT 符合 FIPS 的加密库 aws-lc。

对于 Greengrass 中的 HTTP 通信:

  • 对于 nucleus 和插件组件,通过将系统属性 AWS_USE_FIPS_ENDPOINT 设置为 true,所有 SDK HTTP 客户端都配置有 FIPS 端点;

  • 对于通用组件,所有组件的开头都将系统属性 AWS_USE_FIPS_ENDPOINT 设置为 true。此过程可确保这些通用组件使用的 SDK HTTP 客户端向符合 FIPS 标准的端点发送请求。

注意

对于直播管理器,Nucleus 会传递环境变量 AWS_GG _FIPS_MODE。此环境变量允许流管理器中使用的 HTTP 客户端识别并连接到相应的符合 FIPS 标准的端点。

AWS IoT Greengrass 提供了两种启用 FIPS 模式的方法:配置和部署。要激活 FIPS 模式,必须将配置参数fipsMode设置为 true,然后 Nucleus 将系统属性 AWS_USE_FIPS_ENDPOINT 设置为 true,并将其作为环境变量传播到所有其他组件。此外, AWS IoT Greengrass 还将下载根 CA 证书 (CA3) 并将其附加到现有的 rootca.pem(或.pem)文件中。 AmazonRoot CA1如果您通过新的部署启用 FIPS,Nucleus 将重新启动,确保系统属性在启用 FIPS 模式后生效。

除了配置 fipsMode 参数外,还必须配置 iotDataEndpointiotCredEndpointgreengrassDataEndpoint 参数。有关更多信息,请参阅以下相关文档。

通过部署启用 FIPS 端点

获取您的终 AWS IoT 端节点 AWS 账户,然后将其保存以备后用。您的设备使用这些端点来连接 AWS IoT。需要两个端点,iotDataEndpointiotCredEndpoint。执行以下操作:

  1. AWS IoT Core FIPS 数据面板端点中获取您所在区域的 FIPS 数据端点。您的 FIPS 数据端点 AWS 账户 应如下所示:data.iot-fips.us-west-2.amazonaws.com

  2. AWS IoT Core FIPS 数据面板端点中获取您所在区域的 FIPS 凭证。您的 FIPS 凭证端点 AWS 账户 应如下所示:data.credentials.iot-fips.us-west-2.amazonaws.com

然后,要通过部署启用 FIPS,您需要将以下配置应用于 Nucleus。部署时要合并的配置如下。

Console
要合并的配置
{ "fipsMode": "true", "iotDataEndpoint": "data.iot-fips.us-west-2.amazonaws.com", "greengrassDataPlaneEndpoint": "iotData", "iotCredEndpoint": "data.credentials.iot-fips.us-west-2.amazonaws.com" }
AWS CLI

以下命令会创建对核心设备的部署。

aws greengrassv2 create-deployment --cli-input-json file://dashboard-deployment.json

dashboard-deployment.json 文件包含以下 JSON 文档。

{ "targetArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "deploymentName": "Deployment for MyGreengrassCore", "components": { "aws.greengrass.Nucleus": { "componentVersion": "2.13.0", "configurationUpdate": { "merge":{\"fipsMode\":\"true\",\"iotDataEndpoint\":\"data.iot-fips.us-west-2.amazonaws.com\",\"greengrassDataPlaneEndpoint\":\"iotData\",\"iotCredEndpoint\":\"data.credentials.iot-fips.us-west-2.amazonaws.com\"}" } } } }
Greengrass CLI

以下 Greengrass CLI 命令会在核心设备上创建本地部署。

sudo greengrass-cli deployment create \ --recipeDir recipes \ --artifactDir artifacts \ --merge "aws.greengrass.Nucleus=2.13.0" \ --update-config dashboard-configuration.json

dashboard-configuration.json 文件包含以下 JSON 文档。

{ "aws.greengrass.Nucleus": { "MERGE": { "fipsMode": "true", "iotDataEndpoint": "data.iot-fips.us-west-2.amazonaws.com", "greengrassDataPlaneEndpoint": "iotData", "iotCredEndpoint": "data.credentials.iot-fips.us-west-2.amazonaws.com" } } }
要合并的配置
{ "fipsMode": "true", "iotDataEndpoint": "data.iot-fips.us-west-2.amazonaws.com", "greengrassDataPlaneEndpoint": "iotData", "iotCredEndpoint": "data.credentials.iot-fips.us-west-2.amazonaws.com" }

通过手动资源预置来安装带 FIPS 端点的 Nucleus

为具有 FIPS 端点的 AWS IoT Greengrass V2 核心设备手动配置 AWS 资源

重要

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

检索 AWS IoT 端点

获取您的终 AWS IoT 端节点 AWS 账户,然后将其保存以备后用。您的设备使用这些端点来连接 AWS IoT。需要两个端点,iotDataEndpointiotCredEndpoint。执行以下操作:

  1. AWS IoT Core FIPS 数据面板端点中获取您所在区域的 FIPS 数据端点。您的 FIPS 数据端点 AWS 账户 应如下所示:data.iot-fips.us-west-2.amazonaws.com

  2. AWS IoT Core FIPS 数据面板端点中获取您所在区域的 FIPS 凭证。您的 FIPS 凭证端点 AWS 账户 应如下所示:data.credentials.iot-fips.us-west-2.amazonaws.com

创建 AWS IoT 事物

AWS IoT 事物代表连接到的设备和逻辑实体 AWS IoT。Greengrass 的核心设备就是东西。 AWS IoT 当您将设备注册为 AWS IoT 事物时,该设备可以使用数字证书进行身份验证 AWS。

在本节中,您将创建一个代表您的设备的 AWS IoT 东西。

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

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

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

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

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

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

创建事物证书

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

在本节中,您将创建和下载可供您的设备连接 AWS的证书。

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

在 AWS IoT 服务中创建证书和私钥

创建事物证书
  1. 创建一个文件夹,用于下载 AWS IoT 事物的证书。

    mkdir greengrass-v2-certs
  2. 为该 AWS 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 组件的 v2.5.3 及更高版本。 AWS IoT Greengrass 目前不支持在 Windows 核心设备上使用此功能。

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

    注意

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

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

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

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

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

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

    mkdir greengrass-v2-certs
  5. 使用 CSR 文件创建 AWS 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,以便稍后用于配置证书。

配置事物证书

将事物证书附加到您之前创建 AWS IoT 的事物,然后向证书添加 AWS IoT 策略以定义核心设备的 AWS IoT 权限。

配置事物证书
  1. 将证书附加到 AWS IoT 事物上。

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

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

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

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

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

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

    执行以下操作:

    1. 创建一个包含 Greengrass 核心设备所需的 AWS 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. 根据 AWS 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. 将 AWS IoT 策略附加到 AWS IoT 事物的证书上。

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

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

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

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

创建令牌交换角色

Greengrass 核心设备使用 IAM 服务角色(称为令牌交换角色)来授权对服务的调用。 AWS 设备使用 AWS IoT 证书提供程序来获取此角色的临时 AWS 证书,从而允许设备与 Amazon Logs 进行交互 AWS IoT、向 Amazon Logs 发送 CloudWatch 日志以及从 Amazon S3 下载自定义组件项目。有关更多信息,请参阅 授权核心设备与 AWS 服务交互

您可以使用 AWS IoT 角色别名为 Greengrass 核心设备配置令牌交换角色。角色别名允许您更改设备的令牌交换角色,但设备配置保持不变。有关更多信息,请参阅《AWS IoT Core 开发人员指南》中的授权直接调用 AWS 服务

在本节中,您将创建一个令牌交换 IAM 角色和一个指向该 AWS IoT 角色的角色别名。如果您已经设置了 Greengrass 核心设备,则可以使用其令牌交换角色和角色别名,而不必新建。然后,您将设备的 AWS 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 策略

      • 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 策略附加到令牌交换角色。

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

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

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

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

  2. 创建 AWS 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 角色传递到 AWS IoT。如果您在尝试创建角色别名时收到错误消息,请检查您的 AWS 用户是否具有此权限。有关更多信息,请参阅《用户指南》中的授予AWS Identity and Access Management 用户向 AWS 服务传递角色的权限

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

    1. (可选)创建一个包含角色别名所需的 AWS 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. 根据 AWS IoT 策略文档创建策略。

      • GreengrassCoreTokenExchangeRoleAliasPolicy替换为要创建的 AWS 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. 将 AWS IoT 策略附加到 AWS IoT 事物的证书上。

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

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

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

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

将证书下载到设备

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

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

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

下载带私有密钥的证书和证书文件

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

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

    注意

    Windows 的路径长度限制为 260 个字符。如果您使用的是 Windows,请使用 C:\greengrass\v2D:\greengrass\v2 等根文件夹,将 Greengrass 组件的路径保持在 260 个字符的限制以下。

    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
    • /greengrass/v2 替换为要使用的文件夹。

    sudo mkdir -p /greengrass/v2
  3. (仅限 Linux)设置 Greengrass 根文件夹的父文件夹的权限。

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

    sudo chmod 755 /greengrass
  4. 将 AWS 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
    • /greengrass/v2 替换为 Greengrass 根文件夹。

    sudo cp -R ~/greengrass-v2-certs/* /greengrass/v2
  5. 下载 Amazon 根证书颁发机构(CA)证书。默认情况下, AWS IoT 证书与 Amazon 的根 CA 证书关联。下载 CA1 证书和CA3证书

    Linux or Unix
    • 用 Greengrass 根文件夹替换/greengrass/v2C:\greengrass\v2

    sudo curl -o /greengrass/v2/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem sudo curl -o - https://www.amazontrust.com/repository/AmazonRootCA3.pem >> /greengrass/v2/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 根文件夹替换/greengrass/v2C:\greengrass\v2

    sudo curl -o /greengrass/v2/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem sudo curl -o - https://www.amazontrust.com/repository/AmazonRootCA3.pem >> /greengrass/v2/AmazonRootCA1.pem

下载带私有密钥的证书和 HSM 中的证书

注意

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

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

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

    注意

    Windows 的路径长度限制为 260 个字符。如果您使用的是 Windows,请使用 C:\greengrass\v2D:\greengrass\v2 等根文件夹,将 Greengrass 组件的路径保持在 260 个字符的限制以下。

    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
    • /greengrass/v2 替换为要使用的文件夹。

    sudo mkdir -p /greengrass/v2
  3. (仅限 Linux)设置 Greengrass 根文件夹的父文件夹的权限。

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

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

    注意

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

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

    rm ~/greengrass-v2-certs/device.pem.crt
  6. 下载 Amazon 根证书颁发机构(CA)证书。默认情况下, AWS IoT 证书与 Amazon 的根 CA 证书关联。同时下载 CA1 和CA3证书

    Linux or Unix
    • 用 Greengrass 根文件夹替换/greengrass/v2C:\greengrass\v2

    sudo curl -o /greengrass/v2/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem sudo curl -o - https://www.amazontrust.com/repository/AmazonRootCA3.pem >> /greengrass/v2/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 根文件夹替换/greengrass/v2C:\greengrass\v2

    sudo curl -o /greengrass/v2/AmazonRootCA1.pem https://www.amazontrust.com/repository/AmazonRootCA1.pem sudo curl -o - https://www.amazontrust.com/repository/AmazonRootCA3.pem >> /greengrass/v2/AmazonRootCA1.pem

设置设备环境

按照本节中的步骤,将 Linux 或 Windows 设备设置为您的 AWS IoT Greengrass 核心设备。

设置 Linux 设备

设置 Linux 设备用于 AWS IoT Greengrass V2
  1. 安装 Java 运行时, AWS IoT Greengrass 核心软件需要运行该运行时。我们建议您使用 Amazon CorrettoOpenJDK 长期支持版本。需要版本 8 或更高版本。以下命令向您展示如何在您的设备上安装 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
    • 对于 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)
  2. (可选)创建在设备上运行组件的默认系统用户和组。您也可以选择让 AWS IoT Greengrass 核心软件安装程序在安装过程中使用安装程序参数创建此用户和组。--component-default-user有关更多信息,请参阅 安装程序参数

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

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

      sudo visudo
    2. 验证用户的权限是否如以下示例所示。

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

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

    cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0

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

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

设置 Windows 设备

注意

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

要将 Windows 设备设置为 AWS IoT Greengrass V2
  1. 安装 Java 运行时, AWS IoT Greengrass 核心软件需要运行该运行时。我们建议您使用 Amazon CorrettoOpenJDK 长期支持版本。需要版本 8 或更高版本。

  2. 检查在 PATH 系统变量上是否有 Java 可用,如果没有,请进行添加。该 LocalSystem 帐户运行 AWS IoT Greengrass Core 软件,因此您必须将 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. 如果路径中缺少 Java 安装的 bin 文件夹,请选择新建,添加该文件夹,然后选择确定

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

  4. 在 Windows 设备上的 LocalSystem 帐户中创建默认用户。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"}
  5. 从微软下载该PsExec实用程序并将其安装到设备上。

  6. 使用该 PsExec 实用程序将默认用户的用户名和密码存储在 LocalSystem 账户的凭据管理器实例中。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 帐户中。

下载 AWS IoT Greengrass 核心软件

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

注意

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

https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
下载 AWS IoT Greengrass 核心软件
  1. 在您的核心设备上,将 AWS 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
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip

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

  2. (可选)验证 Greengrass Nucleus 软件签名

    注意

    此功能适用于 Greengrass Nucleus 版本 2.9.5 及更高版本。

    1. 使用以下命令验证您 Greengrass Nucleus 构件的签名:

      Linux or Unix
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
      Windows Command Prompt (CMD)

      根据您安装的 JDK 版本,文件名可能有所不同。将 jdk17.0.6_10 替换为您安装的 JDK 版本。

      "C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe" -verify -certs -verbose greengrass-nucleus-latest.zip
      PowerShell

      根据您安装的 JDK 版本,文件名可能有所不同。将 jdk17.0.6_10 替换为您安装的 JDK 版本。

      'C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe' -verify -certs -verbose greengrass-nucleus-latest.zip
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
    2. jarsigner 调用会生成输出,指示验证结果。

      1. 如果 Greengrass Nucleus ZIP 文件已签署,则输出将包含以下语句:

        jar verified.
      2. 如果 Greengrass Nucleus ZIP 文件未签署,则输出将包含以下语句:

        jar is unsigned.
    3. 如果您提供了 Jarsigner -certs 选项以及 -verify-verbose 选项,则输出还将包含详细的签名者证书信息。

  3. 将 AWS 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
    unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
  4. (可选)运行以下命令以查看 AWS IoT Greengrass Core 软件的版本。

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

如果您安装了 v2.4.0 之前的 Greengrass nucleus 版本,则在安装 Core 软件后请勿删除此文件夹。 AWS IoT Greengrass C AWS IoT Greengrass ore 软件使用此文件夹中的文件运行。

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

安装 AWS IoT Greengrass 核心软件

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

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

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

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

    重要

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

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

注意

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

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

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

使用私有密钥和证书文件安装 AWS IoT Greengrass Core 软件

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

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

    java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
  2. 使用文本编辑器创建名为 config.yaml 的配置文件,以提供给安装程序。

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

    nano GreengrassInstaller/config.yaml

    将以下 YAML 内容复制到该文件中。此部分配置文件会指定系统参数和 Greengrass Nucleus 参数。

    --- 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.14.0" configuration: awsRegion: "us-west-2" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" fipsMode: "true" iotDataEndpoint: "data.iot-fips.us-west-2.amazonaws.com" greengrassDataPlaneEndpoint: "iotData" iotCredEndpoint: "data.credentials.iot-fips.us-west-2.amazonaws.com"

    然后执行以下操作:

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

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

    • 2.14.0替换为 AWS IoT Greengrass 核心软件的版本。

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

    • GreengrassCoreTokenExchangeRoleAlias替换为令牌交换角色别名的名称。

    • iotDataEndpoint用您的 AWS IoT 数据端点替换。

    • 用您的iotCredEndpoint AWS IoT 凭证终端节点替换。

  3. 运行安装程序,并指定 --init-config 来提供配置文件。

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

    • 将的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
    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 核心设备上,--setup-system-service true必须指定将 AWS IoT Greengrass 核心软件设置为系统服务。

    如果指定 --setup-system-service true,则安装程序会在将软件设置为系统服务并运行后打印 Successfully set up Nucleus as a system service。否则,如果安装程序成功安装软件,则不会输出任何消息。

    注意

    在没有 deploy-dev-tools 参数的情况下运行安装程序时,您不能使用 --provision true 参数来部署本地开发工具。有关直接在您的设备上部署 Greengrass CLI 的信息,请参阅 Greengrass 命令行界面

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

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

    如果安装成功,则根文件夹中包含多个文件夹,例如 configpackageslogs

使用私有密钥和 HSM 中的证书安装 AWS IoT Greengrass Core 软件

注意

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

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

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

    java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
  2. 要使 AWS IoT Greengrass 核心软件能够在 HSM 中使用私钥和证书,请在安装 C AWS IoT Greengrass ore 软件时安装 PKCS #11 提供程序组件。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 Core 软件许可协议

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

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

    nano GreengrassInstaller/config.yaml

    将以下 YAML 内容复制到该文件中。此部分配置文件会指定系统参数、Greengrass Nucleus 参数和 PKCS#11 提供程序参数。

    --- 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.14.0" configuration: awsRegion: "us-west-2" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" fipsMode: "true" iotDataEndpoint: "data.iot-fips.us-west-2.amazonaws.com" greengrassDataPlaneEndpoint: "iotData" iotCredEndpoint: "data.credentials.iot-fips.us-west-2.amazonaws.com"

    然后执行以下操作:

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

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

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

    • 2.14.0替换为 AWS IoT Greengrass 核心软件的版本。

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

    • GreengrassCoreTokenExchangeRoleAlias替换为令牌交换角色别名的名称。

    • iotDataEndpoint用您的 AWS IoT 数据端点替换。

    • iotCredEndpoint 替换为您的 AWS IoT 凭证端点。

    • aws.greengrass.crypto.Pkcs11Provider 组件的配置参数替换为核心设备上 HSM 配置的值。

  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必须指定将 AWS IoT Greengrass 核心软件设置为系统服务。

    如果指定 --setup-system-service true,则安装程序会在将软件设置为系统服务并运行后打印 Successfully set up Nucleus as a system service。否则,如果安装程序成功安装软件,则不会输出任何消息。

    注意

    在没有 deploy-dev-tools 参数的情况下运行安装程序时,您不能使用 --provision true 参数来部署本地开发工具。有关直接在您的设备上部署 Greengrass CLI 的信息,请参阅 Greengrass 命令行界面

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

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

    如果安装成功,则根文件夹中包含多个文件夹,例如 configpackageslogs

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

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

使用实例集预置安装 FIPS 端点

此功能适用于 Greengrass Nucleus 组件的 v2.4.0 及更高版本。

在 AWS IoT Greengrass 核心软件上安装 FIPS 端点,为核心设备配置 AWS IoT 队列。

注意

实例集预置插件目前不支持在硬件安全模块(HSM)中存储私钥和证书文件。要使用 HSM,请使用手动配置来安装 AWS IoT Greengrass Core 软件。

要安装具有 AWS IoT 队列配置功能的 AWS IoT Greengrass Core 软件,您必须在中设置用于配置 Gre AWS IoT engrass 核心设备的资源。 AWS 账户 这些资源包括预置模板、声明证书和令牌交换 IAM 角色。创建这些资源后,您可以重复使用资源来预置实例集中的多个核心设备。有关更多信息,请参阅 为 Greengrass 核心 AWS IoT 设备设置队列配置

重要

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

先决条件

要安装具有 AWS IoT 队列配置功能的 AWS IoT Greengrass Core 软件,必须先为 Greengrass 核心 AWS IoT 设备设置队列配置。完成这些步骤后,您可以使用队列配置在任意数量的设备上安装 AWS IoT Greengrass 核心软件。

检索 AWS IoT 端点

为您获取 FIPS 终端节点 AWS 账户,然后将其保存以备后用。您的设备使用这些端点来连接 AWS IoT。执行以下操作:

  1. AWS IoT Core FIPS 数据面板端点中获取您所在区域的 FIPS 数据端点。您的 FIPS 数据端点 AWS 账户 应如下所示:data.iot-fips.us-west-2.amazonaws.com

  2. AWS IoT Core FIPS 数据面板端点中获取您所在区域的 FIPS 凭证。您的 FIPS 凭证端点 AWS 账户 应如下所示:data.credentials.iot-fips.us-west-2.amazonaws.com

将证书下载到设备

设备使用索赔证书和私钥来验证其 AWS 调配资源和获取 X.509 设备证书的请求。您可以在制造过程中将声明证书和私钥嵌入设备中,也可以在安装过程中将证书和密钥复制到设备。在本节中,您需将声明证书和私有密钥复制到设备。您还需将 Amazon 根证书颁发机构(CA)证书下载到设备。

重要

预置声明私钥应始终得到保护,包括在 Greengrass 核心设备上时。我们建议您使用 Amazon CloudWatch 指标和日志来监控是否存在滥用迹象,例如未经授权使用索赔证书来配置设备。如果您检测到滥用,请禁用预置声明证书,以使其不能用于设备预置。有关更多信息,请参阅 AWS IoT Core 开发人员指南 中的 监控 AWS IoT

为了帮助您更好地管理自己在您的设备中注册的设备数量和设备 AWS 账户,您可以在创建队列配置模板时指定预配置挂钩。预配置挂钩是一种验证设备在注册期间提供的模板参数的 AWS Lambda 功能。例如,您可以创建一个预置前钩子,根据数据库检查设备 ID,以验证设备是否有权进行预置。有关更多信息,请参阅《AWS IoT Core 开发人员指南》中的预置前钩子

将声明证书下载到设备
  1. 将声明证书和私钥复制到设备。如果在开发计算机和设备上启用了 SSH 和 SCP,则可以在开发计算机上使用 scp 命令传输声明证书和私钥。以下示例命令会将开发计算机上名为 claim-certs 的文件夹中的这些文件传输到设备。device-ip-address替换为设备的 IP 地址。

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

    注意

    Windows 的路径长度限制为 260 个字符。如果您使用的是 Windows,请使用 C:\greengrass\v2D:\greengrass\v2 等根文件夹,将 Greengrass 组件的路径保持在 260 个字符的限制以下。

    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
    • /greengrass/v2 替换为要使用的文件夹。

    sudo mkdir -p /greengrass/v2
  3. (仅限 Linux)设置 Greengrass 根文件夹的父文件夹的权限。

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

    sudo chmod 755 /greengrass
  4. 将声明证书移动到 Greengrass 根文件夹。

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

    Linux or Unix
    sudo mv ~/claim-certs /greengrass/v2
    Windows Command Prompt (CMD)
    move %USERPROFILE%\claim-certs C:\greengrass\v2
    PowerShell
    mv -Path ~\claim-certs -Destination C:\greengrass\v2
    sudo mv ~/claim-certs /greengrass/v2
  5. 下载 CA1 证书和CA3证书

    Linux or Unix
    sudo curl -o - https://www.amazontrust.com/repository/AmazonRootCA3.pem >> /greengrass/v2/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
    sudo curl -o - https://www.amazontrust.com/repository/AmazonRootCA3.pem >> /greengrass/v2/AmazonRootCA1.pem

设置设备环境

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

设置 Linux 设备

设置 Linux 设备用于 AWS IoT Greengrass V2
  1. 安装 Java 运行时, AWS IoT Greengrass 核心软件需要运行该运行时。我们建议您使用 Amazon CorrettoOpenJDK 长期支持版本。需要版本 8 或更高版本。以下命令向您展示如何在您的设备上安装 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
    • 对于 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)
  2. (可选)创建在设备上运行组件的默认系统用户和组。您也可以选择让 AWS IoT Greengrass 核心软件安装程序在安装过程中使用安装程序参数创建此用户和组。--component-default-user有关更多信息,请参阅 安装程序参数

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

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

      sudo visudo
    2. 验证用户的权限是否如以下示例所示。

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

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

    cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0

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

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

设置 Windows 设备

注意

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

要将 Windows 设备设置为 AWS IoT Greengrass V2
  1. 安装 Java 运行时, AWS IoT Greengrass 核心软件需要运行该运行时。我们建议您使用 Amazon CorrettoOpenJDK 长期支持版本。需要版本 8 或更高版本。

  2. 检查在 PATH 系统变量上是否有 Java 可用,如果没有,请进行添加。该 LocalSystem 帐户运行 AWS IoT Greengrass Core 软件,因此您必须将 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. 如果路径中缺少 Java 安装的 bin 文件夹,请选择新建,添加该文件夹,然后选择确定

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

  4. 在 Windows 设备上的 LocalSystem 帐户中创建默认用户。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"}
  5. 从微软下载该PsExec实用程序并将其安装到设备上。

  6. 使用该 PsExec 实用程序将默认用户的用户名和密码存储在 LocalSystem 账户的凭据管理器实例中。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 帐户中。

下载 AWS IoT Greengrass 核心软件

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

注意

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

https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
下载 AWS IoT Greengrass 核心软件
  1. 在您的核心设备上,将 AWS 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
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip

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

  2. (可选)验证 Greengrass Nucleus 软件签名

    注意

    此功能适用于 Greengrass Nucleus 版本 2.9.5 及更高版本。

    1. 使用以下命令验证您 Greengrass Nucleus 构件的签名:

      Linux or Unix
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
      Windows Command Prompt (CMD)

      根据您安装的 JDK 版本,文件名可能有所不同。将 jdk17.0.6_10 替换为您安装的 JDK 版本。

      "C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe" -verify -certs -verbose greengrass-nucleus-latest.zip
      PowerShell

      根据您安装的 JDK 版本,文件名可能有所不同。将 jdk17.0.6_10 替换为您安装的 JDK 版本。

      'C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe' -verify -certs -verbose greengrass-nucleus-latest.zip
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
    2. jarsigner 调用会生成输出,指示验证结果。

      1. 如果 Greengrass Nucleus ZIP 文件已签署,则输出将包含以下语句:

        jar verified.
      2. 如果 Greengrass Nucleus ZIP 文件未签署,则输出将包含以下语句:

        jar is unsigned.
    3. 如果您提供了 Jarsigner -certs 选项以及 -verify-verbose 选项,则输出还将包含详细的签名者证书信息。

  3. 将 AWS 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
    unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
  4. (可选)运行以下命令以查看 AWS IoT Greengrass Core 软件的版本。

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

如果您安装了 v2.4.0 之前的 Greengrass nucleus 版本,则在安装 Core 软件后请勿删除此文件夹。 AWS IoT Greengrass C AWS IoT Greengrass ore 软件使用此文件夹中的文件运行。

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

下载 AWS IoT 舰队配置插件

您可以从以下位置下载最新版本的 AWS IoT 舰队配置插件:

注意

您可以从以下位置下载特定版本的 AWS IoT 舰队配置插件。version替换为要下载的版本。有关各版本实例集预置插件的更多信息,请参阅 AWS IoT 舰队配置插件更新日志

https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-version.jar

实例集预置插件是开源插件。要查看其源代码,请参阅上的AWS IoT 舰队配置插件 GitHub。

下载 AWS IoT 舰队配置插件
  • 在您的设备上,将 AWS IoT 队列配置插件下载到名为的文件中aws.greengrass.FleetProvisioningByClaim.jarGreengrassInstaller替换为要使用的文件夹。

    Linux or Unix
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar > GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar
    Windows Command Prompt (CMD)
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar > GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar
    PowerShell
    iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar -OutFile GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/aws-greengrass-FleetProvisioningByClaim/fleetprovisioningbyclaim-latest.jar > GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar

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

安装 AWS IoT Greengrass Core 软件

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

  • 从部分配置文件进行安装,该文件指定使用队列配置插件来配置 AWS 资源。 AWS IoT Greengrass Core 软件使用配置文件来指定设备上每个 Greengrass 组件的配置。安装程序根据您提供的部分配置文件和舰队配置插件创建的 AWS 资源创建完整的配置文件。

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

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

    重要

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

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

注意

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

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

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

    java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
  2. 使用文本编辑器创建名为 config.yaml 的配置文件,以提供给安装程序。

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

    nano GreengrassInstaller/config.yaml

    将以下 YAML 内容复制到该文件中。此部分配置文件会指定实例集预置插件的参数。有关可以指定的选项的更多信息,请参阅配置 AWS IoT 舰队配置插件

    Linux or Unix
    --- services: aws.greengrass.Nucleus: version: "2.14.0" configuration: fipsMode: "true" greengrassDataPlaneEndpoint: "iotData" aws.greengrass.FleetProvisioningByClaim: configuration: rootPath: "/greengrass/v2" awsRegion: "us-west-2" iotDataEndpoint: "data.iot-fips.us-west-2.amazonaws.com" iotCredEndpoint: "data.credentials.iot-fips.us-west-2.amazonaws.com" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" provisioningTemplate: "GreengrassFleetProvisioningTemplate" claimCertificatePath: "/greengrass/v2/claim-certs/claim.pem.crt" claimCertificatePrivateKeyPath: "/greengrass/v2/claim-certs/claim.private.pem.key" rootCaPath: "/greengrass/v2/AmazonRootCA1.pem" templateParameters: ThingName: "MyGreengrassCore" ThingGroupName: "MyGreengrassCoreGroup"
    Windows
    --- services: aws.greengrass.Nucleus: version: "2.14.0" aws.greengrass.FleetProvisioningByClaim: configuration: rootPath: "C:\\greengrass\\v2" awsRegion: "us-west-2" iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com" iotCredentialEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" provisioningTemplate: "GreengrassFleetProvisioningTemplate" claimCertificatePath: "C:\\greengrass\\v2\\claim-certs\\claim.pem.crt" claimCertificatePrivateKeyPath: "C:\\greengrass\\v2\\claim-certs\\claim.private.pem.key" rootCaPath: "C:\\greengrass\\v2\\AmazonRootCA1.pem" templateParameters: ThingName: "MyGreengrassCore" ThingGroupName: "MyGreengrassCoreGroup"
    --- services: aws.greengrass.Nucleus: version: "2.14.0" configuration: fipsMode: "true" greengrassDataPlaneEndpoint: "iotData" aws.greengrass.FleetProvisioningByClaim: configuration: rootPath: "/greengrass/v2" awsRegion: "us-west-2" iotDataEndpoint: "data.iot-fips.us-west-2.amazonaws.com" iotCredEndpoint: "data.credentials.iot-fips.us-west-2.amazonaws.com" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" provisioningTemplate: "GreengrassFleetProvisioningTemplate" claimCertificatePath: "/greengrass/v2/claim-certs/claim.pem.crt" claimCertificatePrivateKeyPath: "/greengrass/v2/claim-certs/claim.private.pem.key" rootCaPath: "/greengrass/v2/AmazonRootCA1.pem" templateParameters: ThingName: "MyGreengrassCore" ThingGroupName: "MyGreengrassCoreGroup"

    然后执行以下操作:

    • 2.14.0替换为 AWS IoT Greengrass 核心软件的版本。

    • 用 Greengrass 根C:\greengrass\v2文件夹替换/greengrass/v2或的每个实例。

      注意

      在 Windows 设备上,您必须将路径分隔符指定为双反斜杠 (\\),例如 C:\\greengrass\\v2

    • us-west-2替换为您创建置备模板和其他资源的 AWS 区域。

    • iotDataEndpoint用您的 AWS IoT 数据端点替换。

    • iotCredentialEndpoint 替换为您的 AWS IoT 凭证端点。

    • GreengrassCoreTokenExchangeRoleAlias替换为令牌交换角色别名的名称。

    • GreengrassFleetProvisioningTemplate替换为队列配置模板的名称。

    • claimCertificatePath 替换为设备上声明证书的路径。

    • claimCertificatePrivateKeyPath 替换为设备上声明证书私钥的路径。

    • 将模板参数(templateParameters)替换为用于预置设备的值。此示例参考用于定义 ThingNameThingGroupName 参数的示例模板

  3. 运行安装程序。指定 --trusted-plugin 来提供实例集预置插件,并指定 --init-config 来提供配置文件。

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

    • 将的GreengrassInstaller每个实例替换为解压安装程序所在的文件夹。

    Linux or Unix
    sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \ -jar ./GreengrassInstaller/lib/Greengrass.jar \ --trusted-plugin ./GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.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 ^ --trusted-plugin ./GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.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 ` --trusted-plugin ./GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar ` --init-config ./GreengrassInstaller/config.yaml ` --component-default-user ggc_user ` --setup-system-service true
    sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \ -jar ./GreengrassInstaller/lib/Greengrass.jar \ --trusted-plugin ./GreengrassInstaller/aws.greengrass.FleetProvisioningByClaim.jar \ --init-config ./GreengrassInstaller/config.yaml \ --component-default-user ggc_user:ggc_group \ --setup-system-service true
    重要

    在 Windows 核心设备上,--setup-system-service true必须指定将 AWS IoT Greengrass 核心软件设置为系统服务。

    如果指定 --setup-system-service true,则安装程序会在将软件设置为系统服务并运行后打印 Successfully set up Nucleus as a system service。否则,如果安装程序成功安装软件,则不会输出任何消息。

    注意

    在没有 deploy-dev-tools 参数的情况下运行安装程序时,您不能使用 --provision true 参数来部署本地开发工具。有关直接在您的设备上部署 Greengrass CLI 的信息,请参阅 Greengrass 命令行界面

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

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

    如果安装成功,则根文件夹中包含多个文件夹,例如 configpackageslogs

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

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

使用自动资源预置安装 FIPS 端点

AWS IoT Greengrass 核心软件包括一个安装程序,可将您的设备设置为 Greengrass 核心设备。要快速设置设备,安装程序可以预配置核心设备运行所需 AWS IoT 的事物、事物组、IAM AWS IoT 角色和角色别名。 AWS IoT 安装程序还可以将本地开发工具部署到核心设备,因此您可以使用该设备开发和测试自定义软件组件。安装程序需要 AWS 凭证才能预置这些资源和创建部署。

如果您无法向设备提供 AWS 凭据,则可以配置核心设备运行所需的 AWS 资源。您还可以将开发工具部署到核心设备上,用作开发设备。这使您能够在运行安装程序时向设备提供较少的权限。有关更多信息,请参阅 使用手动资源配置来安装 AWS IoT Greengrass Core 软件

重要

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

设置设备环境

按照本节中的步骤,将 Linux 或 Windows 设备设置为您的 AWS IoT Greengrass 核心设备。

设置 Linux 设备

设置 Linux 设备用于 AWS IoT Greengrass V2
  1. 安装 Java 运行时, AWS IoT Greengrass 核心软件需要运行该运行时。我们建议您使用 Amazon CorrettoOpenJDK 长期支持版本。需要版本 8 或更高版本。以下命令向您展示如何在您的设备上安装 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
    • 对于 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)
  2. (可选)创建在设备上运行组件的默认系统用户和组。您也可以选择让 AWS IoT Greengrass 核心软件安装程序在安装过程中使用安装程序参数创建此用户和组。--component-default-user有关更多信息,请参阅 安装程序参数

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

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

      sudo visudo
    2. 验证用户的权限是否如以下示例所示。

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

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

    cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0

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

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

设置 Windows 设备

注意

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

要将 Windows 设备设置为 AWS IoT Greengrass V2
  1. 安装 Java 运行时, AWS IoT Greengrass 核心软件需要运行该运行时。我们建议您使用 Amazon CorrettoOpenJDK 长期支持版本。需要版本 8 或更高版本。

  2. 检查在 PATH 系统变量上是否有 Java 可用,如果没有,请进行添加。该 LocalSystem 帐户运行 AWS IoT Greengrass Core 软件,因此您必须将 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. 如果路径中缺少 Java 安装的 bin 文件夹,请选择新建,添加该文件夹,然后选择确定

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

  4. 在 Windows 设备上的 LocalSystem 帐户中创建默认用户。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"}
  5. 从微软下载该PsExec实用程序并将其安装到设备上。

  6. 使用该 PsExec 实用程序将默认用户的用户名和密码存储在 LocalSystem 账户的凭据管理器实例中。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 帐户中。

为设备提供 AWS 凭证

向您的设备提供您的 AWS 凭据,以便安装程序可以配置所需的 AWS 资源。有关所需权限的更多信息,请参阅 安装程序配置资源的最低 IAM 策略

为设备提供 AWS 凭证
  • 向设备提供您的 AWS 证书,以便安装程序可以为您的核心设备配置 AWS IoT 和 IAM 资源。为了提高安全性,我们建议您为 IAM 角色获取临时凭证,该凭证仅允许预置所需的最低权限。有关更多信息,请参阅 安装程序配置资源的最低 IAM 策略

    注意

    安装程序不会保存或存储您的凭证。

    在您的设备上,执行以下任一操作以检索凭证并将其提供给 AWS IoT Greengrass Core 软件安装程序:

    • (推荐)使用来自的临时证书 AWS IAM Identity Center

      1. 提供来自 IAM Identity Center 的访问密钥 ID、秘密访问密钥和会话令牌。有关更多信息,请参阅《IAM Identity Center 用户指南》获取和刷新临时凭证中的手动凭证刷新

      2. 运行以下命令为 AWS IoT Greengrass 核心软件提供凭据。

        Linux or Unix
        export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
        Windows Command Prompt (CMD)
        set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY set AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
        PowerShell
        $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" $env:AWS_SESSION_TOKEN="AQoDYXdzEJr1K...o5OytwEXAMPLE="
        export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
    • 使用来自 IAM 角色的临时安全凭证:

      1. 提供来自您担任的 IAM 角色的访问密钥 ID、秘密访问密钥和会话令牌。有关如何检索这些凭证的更多信息,请参阅《IAM 用户指南》中的请求临时安全凭证

      2. 运行以下命令为 AWS IoT Greengrass 核心软件提供凭据。

        Linux or Unix
        export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
        Windows Command Prompt (CMD)
        set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY set AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
        PowerShell
        $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" $env:AWS_SESSION_TOKEN="AQoDYXdzEJr1K...o5OytwEXAMPLE="
        export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
    • 使用 IAM 用户的长期凭证:

      1. 为 IAM 用户提供访问密钥 ID 和秘密访问密钥。您可以创建 IAM 用户用于预置,稍后再将其删除。有关向用户提供的 IAM 策略,请参阅 安装程序配置资源的最低 IAM 策略。有关如何检索长期凭证的更多信息,请参阅《IAM 用户指南》中的管理 IAM 用户的访问密钥

      2. 运行以下命令为 AWS IoT Greengrass 核心软件提供凭据。

        Linux or Unix
        export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
        Windows Command Prompt (CMD)
        set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
        PowerShell
        $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
        export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
      3. (可选)如果您创建了 IAM 用户来预置 Greengrass 设备,请删除该用户。

      4. (可选)如果您使用了现有 IAM 用户的访问密钥 ID 和秘密访问密钥,请更新该用户的密钥,使其失效。有关更多信息,请参阅《AWS Identity and Access Management 用户指南》中的更新访问密钥

下载 AWS IoT Greengrass 核心软件

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

注意

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

https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
下载 AWS IoT Greengrass 核心软件
  1. 在您的核心设备上,将 AWS 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
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip

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

  2. (可选)验证 Greengrass Nucleus 软件签名

    注意

    此功能适用于 Greengrass Nucleus 版本 2.9.5 及更高版本。

    1. 使用以下命令验证您 Greengrass Nucleus 构件的签名:

      Linux or Unix
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
      Windows Command Prompt (CMD)

      根据您安装的 JDK 版本,文件名可能有所不同。将 jdk17.0.6_10 替换为您安装的 JDK 版本。

      "C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe" -verify -certs -verbose greengrass-nucleus-latest.zip
      PowerShell

      根据您安装的 JDK 版本,文件名可能有所不同。将 jdk17.0.6_10 替换为您安装的 JDK 版本。

      'C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe' -verify -certs -verbose greengrass-nucleus-latest.zip
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
    2. jarsigner 调用会生成输出,指示验证结果。

      1. 如果 Greengrass Nucleus ZIP 文件已签署,则输出将包含以下语句:

        jar verified.
      2. 如果 Greengrass Nucleus ZIP 文件未签署,则输出将包含以下语句:

        jar is unsigned.
    3. 如果您提供了 Jarsigner -certs 选项以及 -verify-verbose 选项,则输出还将包含详细的签名者证书信息。

  3. 将 AWS 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
    unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
  4. (可选)运行以下命令以查看 AWS IoT Greengrass Core 软件的版本。

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

如果您安装了 v2.4.0 之前的 Greengrass nucleus 版本,则在安装 Core 软件后请勿删除此文件夹。 AWS IoT Greengrass C AWS IoT Greengrass ore 软件使用此文件夹中的文件运行。

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

安装 AWS IoT Greengrass 核心软件

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

  • 创建核心设备运行所需的 AWS 资源。

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

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

    重要

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

要使用本地开发工具设置开发设备,请指定 --deploy-dev-tools true 参数。安装完成后,部署本地开发工具可能需要一分钟时间。

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

注意

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

安装 AWS IoT Greengrass 核心软件
  1. 使用文本编辑器创建名为 config.yaml 的配置文件,以提供给安装程序。

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

    nano GreengrassInstaller/config.yaml

    将以下 YAML 内容复制到该文件中。此部分配置文件会指定系统参数和 Greengrass Nucleus 参数。

    --- services: aws.greengrass.Nucleus: configuration: fipsMode: "true" iotDataEndpoint: "data.iot-fips.us-west-2.amazonaws.com" iotCredEndpoint: "data.credentials.iot-fips.us-west-2.amazonaws.com" greengrassDataPlaneEndpoint: "iotData"
    • us-west-2替换为您创建资源 AWS 区域 的位置。

    • iotDataEndpoint 替换为您的 AWS IoT 数据端点。

    • iotCredEndpoint 替换为您的 AWS IoT 凭证端点。

  2. 运行 AWS IoT Greengrass 核心安装程序。如下所示替换命令中的参数值。

    注意

    Windows 的路径长度限制为 260 个字符。如果您使用的是 Windows,请使用 C:\greengrass\v2D:\greengrass\v2 等根文件夹,将 Greengrass 组件的路径保持在 260 个字符的限制以下。

    1. /greengrass/v2C:\greengrass\v2:用于安装 C AWS IoT Greengrass ore 软件的根文件夹的路径。

    2. GreengrassInstaller。 您解压缩 AWS IoT Greengrass 核心软件安装程序的文件夹的路径。

    3. region。 AWS 区域 在其中查找或创建资源。

    4. MyGreengrassCore。 你的 Green AWS IoT grass 核心设备的名称。如果该事物不存在,安装程序会进行创建。安装程序下载证书以进行身份 AWS IoT 验证。有关更多信息,请参阅 设备身份验证和授权 AWS IoT Greengrass

      注意

      事物名称不得包含英文冒号 (:) 字符。

    5. MyGreengrassCoreGroup。 你的 Greengrass 核心设备 AWS IoT 的事物组名称。如果该事物组不存在,安装程序会进行创建并向其中添加事物。如果事物组存在且有活动的部署,则核心设备将下载并运行部署指定的软件。

      注意

      事物组名称不得包含英文冒号 (:) 字符。

    6. GreengrassV2IoTThingPolicy。 允许 Greengrass 核心设备与和通信的 AWS IoT 策略名称。 AWS IoT AWS IoT Greengrass如果该 AWS IoT 策略不存在,则安装程序会使用此名称创建允许 AWS IoT 策略。您可以根据自己的使用案例限制此策略的权限。有关更多信息,请参阅 AWS IoT Greengrass V2 核心设备的最低 AWS IoT 政策

    7. GreengrassV2TokenExchangeRole。 允许 Greengrass 核心设备获得临时证书的 IAM 角色的名称。 AWS 如果该角色不存在,则安装程序会创建该角色并附加名为 GreengrassV2TokenExchangeRoleAccess 的策略。有关更多信息,请参阅 授权核心设备与 AWS 服务交互

    8. GreengrassCoreTokenExchangeRoleAlias。 IAM 角色的别名,允许 Greengrass 核心设备稍后获得临时证书。如果该角色别名不存在,则安装程序会自行创建,并将其指向您指定的 IAM 角色。有关更多信息,请参阅 授权核心设备与 AWS 服务交互

    Linux or Unix
    sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \ -jar ./GreengrassInstaller/lib/Greengrass.jar \ --aws-region region \ --thing-name MyGreengrassCore \ --thing-group-name MyGreengrassCoreGroup \ --thing-policy-name GreengrassV2IoTThingPolicy \ --tes-role-name GreengrassV2TokenExchangeRole \ --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \ --component-default-user ggc_user:ggc_group \ --provision true \ --init-config ./GreengrassInstaller/config.yaml \ --setup-system-service true
    Windows Command Prompt (CMD)
    java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ^ -jar ./GreengrassInstaller/lib/Greengrass.jar ^ --aws-region region ^ --thing-name MyGreengrassCore ^ --thing-group-name MyGreengrassCoreGroup ^ --thing-policy-name GreengrassV2IoTThingPolicy ^ --tes-role-name GreengrassV2TokenExchangeRole ^ --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias ^ --component-default-user ggc_user ^ --provision true ^ --setup-system-service true
    PowerShell
    java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ` -jar ./GreengrassInstaller/lib/Greengrass.jar ` --aws-region region ` --thing-name MyGreengrassCore ` --thing-group-name MyGreengrassCoreGroup ` --thing-policy-name GreengrassV2IoTThingPolicy ` --tes-role-name GreengrassV2TokenExchangeRole ` --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias ` --component-default-user ggc_user ` --provision true ` --setup-system-service true
    sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \ -jar ./GreengrassInstaller/lib/Greengrass.jar \ --aws-region region \ --thing-name MyGreengrassCore \ --thing-group-name MyGreengrassCoreGroup \ --thing-policy-name GreengrassV2IoTThingPolicy \ --tes-role-name GreengrassV2TokenExchangeRole \ --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \ --component-default-user ggc_user:ggc_group \ --provision true \ --init-config ./GreengrassInstaller/config.yaml \ --setup-system-service true
    重要

    在 Windows 核心设备上,--setup-system-service true必须指定将 AWS IoT Greengrass 核心软件设置为系统服务。

    如果成功,安装程序会打印以下消息:

    • 如果您指定 --provision,则安装程序将在成功配置资源后打印 Successfully configured Nucleus with provisioned resource details

    • 如果您指定 --deploy-dev-tools,则安装程序将在成功创建部署后打印 Configured Nucleus to deploy aws.greengrass.Cli component

    • 如果您指定 --setup-system-service true,则安装程序会在将软件设置为服务并运行后打印 Successfully set up Nucleus as a system service

    • 如果您未指定 --setup-system-service true,则安装程序会在成功安装并运行软件后打印 Launched Nucleus successfully

  3. 如果您安装了 Greengrass Nucleus v2.0.4 或更高版本,请跳过此步骤。如果您下载的是最新版本的软件,则说明您安装了 v2.0.4 或更高版本。

    运行以下命令,为您的 AWS IoT Greengrass Core 软件根文件夹设置所需的文件权限。/greengrass/v2替换为您在安装命令中指定的根文件夹,并/greengrass替换为根文件夹的父文件夹。

    sudo chmod 755 /greengrass/v2 && sudo chmod 755 /greengrass

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

注意

默认情况下,安装程序创建的 IAM 角色不允许访问 S3 存储桶中的组件构件。要在 Amazon S3 中部署可定义构件的自定义组件,您必须为该角色添加权限以允许核心设备检索组件构件。有关更多信息,请参阅 允许访问 S3 存储桶中的组件构件

如果您还没有适用于组件构件的 S3 存储桶,则可以在创建存储桶后添加这些权限。

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

FIPS 合规性第一方组件

aws.greengrass.Nucleus data.iot-fips.us-east-1.amazonaws.com
greengrass-fips.us-east-1.amazonaws.com
data.credentials.iot-fips.us-east-1.amazonaws.com
aws.greengrass.TokenExchangeService data.credentials.iot-fips.us-east-1.amazonaws.com
aws.greengrass.Cli
aws.greengrass.StreamManager
  • kinesis-fips.us-east-1.amazonaws.com

  • data.iotsitewise-fips.us-east-1.amazonaws.com

  • s3-fips.us-east-1.amazonaws.com

注意

直播管理器不支持 AWS IoT Analytics FIPS 端点

aws.greengrass.LogManager logs-fips。 us-east-1.amazonaws.co
aws.greengrass.crypto.Pkcs11Provider
aws.greengrass.ShadowManager
aws.greengrass.DockerApplicationManager ecr-fips。 us-east-1.amazonaws.co
aws.greengrass.SecretManager secretsmanager-fips。 us-east-1.amazonaws.co
aws.greengrass.telemetry.NucleusEmitter
aws.greengrass.clientdevices.IPDetector
aws.greengrass.DiskSpooler

下一主题:

恢复能力

上一主题:

合规性验证
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。