

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

# AWS IoT Greengrass 和接口 VPC 终端节点 (AWS PrivateLink)
<a name="vpc-interface-endpoints"></a>

您可以通过创建接*口 VPC 终端节点在您的 VPC 和 AWS IoT Greengrass 控制平面之间建立私有*连接。您可以使用此端点来管理 AWS IoT Greengrass 服务中的组件、部署和核心设备。接口端点由一种技术提供支持 [AWS PrivateLink](https://aws.amazon.com/privatelink)，该技术使您无需互联网网关、NAT 设备、VPN 连接或 Di AWS rect Connect 连接即可进行 AWS IoT Greengrass APIs 私密访问。您的 VPC 中的实例不需要公有 IP 地址即可与之通信 AWS IoT Greengrass APIs。您的 VPC 和 VPC 之间的流量 AWS IoT Greengrass 不会离开 Amazon 网络。

每个接口端点均由子网中的一个或多个[弹性网络接口](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html)表示。

有关更多信息，请参阅《Amazon VPC 用户指南》**中的[接口 VPC 端点 (AWS PrivateLink)](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html)。

**Topics**
+ [AWS IoT Greengrass VPC 终端节点的注意事项](#vpc-endpoint-considerations)
+ [为 AWS IoT Greengrass 控制平面操作创建接口 VPC 终端节点](#create-vpc-endpoint-control-plane)
+ [为创建 VPC 终端节点策略 AWS IoT Greengrass](#vpc-endpoint-policy)
+ [在 VPC 中操作 AWS IoT Greengrass 核心设备](#vpc-operate-device-vpce)

## AWS IoT Greengrass VPC 终端节点的注意事项
<a name="vpc-endpoint-considerations"></a>

在为设置接口 VPC 终端节点之前 AWS IoT Greengrass，请查看 *Amazon VPC 用户指南*中的[接口终端节点属性和限制](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#vpce-interface-limitations)。此外，请了解以下注意事项：
+ AWS IoT Greengrass 支持从您的 VPC 调用其所有控制平面 API 操作。控制平面包括诸如[CreateDeployment](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_CreateDeployment.html)和之类的操作[ListEffectiveDeployments](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_ListEffectiveDeployments.html)。控制平面*不*包括诸如[ResolveComponentCandidates](device-auth.md#iot-policies)和 D [iscover](greengrass-discover-api.md) 之类的操作，它们是数据平面操作。
+  AWS 中国区域目前不支持 AWS IoT Greengrass 的 VPC 终端节点。

## 为 AWS IoT Greengrass 控制平面操作创建接口 VPC 终端节点
<a name="create-vpc-endpoint-control-plane"></a>

您可以使用 Amazon VPC AWS IoT Greengrass 控制台或 AWS Command Line Interface (AWS CLI) 为控制平面创建 VPC 终端节点。有关更多信息，请参阅《Amazon VPC User Guide》**中的 [Creating an interface endpoint](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint)。

 AWS IoT Greengrass 使用以下服务名称创建 VPC 终端节点：
+ com.amazonaws。 *region*.greengrass

例如，如果您为终端节点启用私有 DNS，则可以使用该终端节点的默认 DNS 名称向 AWS IoT Greengrass 发出 API 请求`greengrass.us-east-1.amazonaws.com`。默认情况下将启用私有 DNS。

有关更多信息，请参阅《Amazon VPC 用户指南》**中的[通过接口端点访问服务](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#access-service-though-endpoint)。

## 为创建 VPC 终端节点策略 AWS IoT Greengrass
<a name="vpc-endpoint-policy"></a>

您可以为 VPC 端点附加控制对 AWS IoT Greengrass 控制面板操作的访问的端点策略。该策略指定以下信息：
+ 可执行操作的主体。
+ 主体可以执行的操作。
+ 主体可以对其执行操作的资源。

有关更多信息，请参阅《Amazon VPC User Guide》**中的 [Controlling access to services with VPC endpoints](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-access.html)。

**Example 示例：用于 AWS IoT Greengrass 操作的 VPC 终端节点策略**  
以下是的终端节点策略示例 AWS IoT Greengrass。当连接到终端节点时，此策略授予所有委托人对所有资源 AWS IoT Greengrass 执行所列操作的访问权限。  

```
{
    "Statement": [
        {
            "Principal": "*",
            "Effect": "Allow",
            "Action": [
                "greengrass:CreateDeployment",
                "greengrass:ListEffectiveDeployments"
            ],
            "Resource": "*"
        }
    ]
}
```

## 在 VPC 中操作 AWS IoT Greengrass 核心设备
<a name="vpc-operate-device-vpce"></a>

您可以在没有公共互联网访问的情况下，在 VPC 中操作 Greengrass 核心设备并执行部署。您必须至少使用相应的 DNS 别名设置以下 VPC 端点。有关如何创建和使用 VPC 端点的更多信息，请参阅《Amazon VPC 用户指南》**中的[创建 VPC 端点](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#create-interface-endpoint-aws)。

**注意**  
对于和 AWS IoT 凭证，用于自动创建 DNS 记录的 VPC 功能已禁用。 AWS IoT data 要连接这些端点，您必须手动创建私有 DNS 记录。有关更多信息，请参阅[接口端点的私有 DNS](https://docs.aws.amazon.com/vpc/latest/privatelink/create-interface-endpoint.html#vpce-private-dns)。有关 AWS IoT Core VPC 限制的更多信息，请参阅 V [PC 终端节点的限制](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html#VPC-limitations)。

### 先决条件
<a name="vpc-endpoint-prerequisites"></a>
+ 您必须使用手动配置步骤安装 C AWS IoT Greengrass ore 软件。有关更多信息，请参阅 [使用手动资源配置来安装 AWS IoT Greengrass Core 软件](manual-installation.md)。

### 限制
<a name="vpc-endpoint-limitaions"></a>
+ 中国区域和 AWS GovCloud (US) Regions不支持在 VPC 中运行 Greengrass 核心设备。
+ 有关限制 AWS IoT data 和 AWS IoT 凭证提供者 VPC 终端节点的更多信息，请参阅[限制](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html#VPC-limitations)。

### 将您的 Greengrass 核心设备设置为在 VPC 中运行
<a name="vpc-endpoint-operate-gg-core"></a>

****

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

   1. 获取您的 AWS IoT 数据端点 AWS 账户。

      ```
      aws iot describe-endpoint --endpoint-type iot:Data-ATS
      ```

      如果请求成功，响应类似如下示例。

      ```
      {
        "endpointAddress": "device-data-prefix-ats.iot.us-west-2.amazonaws.com"
      }
      ```

   1. 获取您的 AWS IoT 凭证终端节点 AWS 账户。

      ```
      aws iot describe-endpoint --endpoint-type iot:CredentialProvider
      ```

      如果请求成功，响应类似如下示例。

      ```
      {
        "endpointAddress": "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com"
      }
      ```

1. 为 AWS IoT data 和 AWS IoT 证书终端节点创建 Amazon VPC 接口：

   1. 导航到 [VPC](https://console.aws.amazon.com/vpc/home#/endpoints) **端点**控制台，在左侧菜单的**虚拟私有云**下，选择**端点**，然后选择**创建端点**。

   1. 在**创建端点**页面上，指定以下信息。
      + 为**服务类别**选择 **AWS 服务**。
      + 对于 **Service Name**（服务名称），通过输入关键字 `iot` 进行搜索。在显示的 `iot` 服务列表中，请选择端点。

        如果您为 AWS IoT Core 数据平面创建 VPC 终端节点，请为您的区域选择 AWS IoT Core 数据平面 API 终端节点。终端节点的格式为 `com.amazonaws.region.iot.data`。

        如果您为 AWS IoT Core 凭证提供者创建 VPC 终端节点，请选择您所在地区的 AWS IoT Core 凭证提供商终端节点。终端节点的格式为 `com.amazonaws.region.iot.credentials`。
**注意**  
中国地区 AWS IoT Core 数据平面的服务名称将`cn.com.amazonaws.region.iot.data`采用以下格式。中国地区不支持为 AWS IoT Core 凭证提供者创建 VPC 终端节点。
      + 对于 **VPC** 和**子网**，选择要在其中创建终端节点的 VPC，以及要在其中创建终端节点网络的可用区 (AZs)。
      + 对于 **Enable DNS name**（启用 DNS 名称），请确保未选择 **Enable for this endpoint**（为此端点启用）。 AWS IoT Core 数据平面和 AWS IoT Core 凭据提供商都不支持私有 DNS 名称。
      + 对于 **Security group**（安全组），选择要与端点网络接口关联的安全组。
      + 您可以选择添加或删除标签。标签是用于与端点关联的名称-值对。

   1. 要创建 VPC 端点，请选择**创建端点**。

1. 创建 AWS PrivateLink 终端节点后，在终端节点的**详细信息**选项卡中，您将看到 DNS 名称列表。您可以使用在本部分中创建的这些 DNS 名称中的一个来[配置私有托管区域](https://docs.aws.amazon.com/iot/latest/developerguide/IoTCore-VPC.html#connect-iot-core-create-phz-lns)。

1. 创建 Amazon S3 端点。有关更多信息，请参阅[为 Amazon S3 创建 VPC 端点](https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html#s3-creating-vpc)。

1. 如果您使用的是 [AWS提供的 Greengrass 组件](https://docs.aws.amazon.com/greengrass/v2/developerguide/public-components.html)，则可能需要其他端点和配置。要查看端点要求，请从 AWS提供的组件列表中选择组件，然后查看“要求”部分。例如，[日志管理器组件要求](log-manager-component.md#log-manager-component-requirements)规定，该组件必须能够向端点 `logs.region.amazonaws.com` 执行出站请求。

   如果您使用的是自己的组件，则可能需要查看依赖关系并进行其他测试，以确定是否需要任何其它端点。

1. 在 Greengrass Nucleus 配置中，必须将 `greengrassDataPlaneEndpoint` 设置为 **iotdata**。有关更多信息，请参阅 [Greengrass Nucleus 配置](greengrass-nucleus-component.md#greengrass-nucleus-component-configuration)。

1. 如果您在 `us-east-1` 区域，请在 Greengrass Nucleus 配置中将配置参数 `s3EndpointType` 设置为 **REGIONAL**。此功能适用于 Greengrass Nucleus 2.11.3 或更高版本。

**Example 示例：组件配置**  

```
{
"aws.greengrass.Nucleus": {
   "configuration": {
      "awsRegion": "us-east-1",
      "iotCredEndpoint": "xxxxxx.credentials.iot.region.amazonaws.com",
      "iotDataEndpoint": "xxxxxx-ats.iot.region.amazonaws.com",
      "greengrassDataPlaneEndpoint": "iotdata",
      "s3EndpointType": "REGIONAL"
      ...
     }
   }
}
```

下表提供了有关相应的自定义私有 DNS 别名的信息。


| 服务 | VPC 端点服务名称 | VPC 端点类型 | 自定义私有 DNS 别名 | 注意 | 
| --- | --- | --- | --- | --- | 
|  AWS IoT data  | `com.amazonaws.region.iot.data` | 接口 |  `prefix-ats.iot.region.amazonaws.com`  |  私有 DNS 记录应与您账户的 AWS IoT data 终端节点相匹配：`aws iot describe–endpoint ––endpoint–type iot:Data-ATS`。  | 
| AWS IoT 凭证 | `com.amazonaws.region.iot.credentials` | 接口 | `prefix.credentials.iot.region.amazonaws.com` | 私有 DNS 记录应与您的账户 AWS IoT 凭证端点匹配：`aws iot describe–endpoint ––endpoint–type iot:CredentialProvider`。 | 
| Amazon S3 | `com.amazonaws.region.s3` | 接口 |  | DNS 记录是自动创建的。 | 