

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

# 为 Amazon OpenSearch Ingestion 管道配置 VPC 访问权限
<a name="pipeline-security"></a>

您可以使用接口 VPC 终端节点访问您的 Amazon OpenSearch Ingestion 管道。VPC 是专为您服务的虚拟网络 AWS 账户。它在逻辑上与 AWS 云中的其他虚拟网络隔离。通过 VPC 终端节点访问管道可实现 OpenSearch Ingestion 与 VPC 内的其他服务之间的安全通信，无需互联网网关、NAT 设备或 VPN 连接。所有流量都安全地保存在 AWS 云中。

OpenSearch Ingestion 通过创建由提供支持的*接口端点*来建立此私有连接。 AWS PrivateLink在创建管道过程中，我们会在您指定的每个子网中创建一个端点网络接口。这些是请求者管理的网络接口，是发往 OpenSearch 摄取管道的流量的入口点。您还可以选择自行创建和管理接口端点。

使用 VPC 可以强制数据流通过 VPC 边界内的 OpenSearch 摄取管道，而不是通过公共互联网。非 VPC 内部管道通过面向公众的端点和互联网收发数据。

具有 VPC 访问权限的管道可以写入公共或 VPC OpenSearch 服务域，也可以写入公共或 VPC OpenSearch 无服务器集合。

**Topics**
+ [注意事项](#pipeline-vpc-considerations)
+ [限制](#pipeline-vpc-limitations)
+ [先决条件](#pipeline-vpc-prereqs)
+ [为管道配置 VPC 访问权限](#pipeline-vpc-configure)
+ [自主管理型 VPC 端点](#pipeline-vpc-self-managed)
+ [VPC 访问的服务相关角色](#pipeline-vpc-slr)

## 注意事项
<a name="pipeline-vpc-considerations"></a>

为管道配置 VPC 时，请考虑以下事项。
+ 管道无需与其接收器位于同一 VPC 中。您也不需要在两者之间建立联系 VPCs。 OpenSearch Ingestion 负责为你连接它们。
+ 您只能为管道指定一个 VPC。
+ 与公有管道不同的是，VPC 管道必须与其写入的域或集合接收器位于同一 AWS 区域 中。您可以为管道配置 S3 源以便跨区域写入。
+ 您可以选择将管道部署到 VPC 的一个、两个或三个子网中。子网分布在部署您的摄取 OpenSearch 计算单元 (OCUs) 的相同可用区中。
+ 如果您只在一个子网中部署管道，则可用区出现故障时，您将无法摄取数据。为确保高可用性，我们建议您使用两个或三个子网配置管道。
+ 指定安全组是可选的。如果您不提供安全组， OpenSearch Ingestion 将使用在 VPC 中指定的默认安全组。

## 限制
<a name="pipeline-vpc-limitations"></a>

使用 VPC 访问的管道存在以下限制。
+ 创建管道后，将无法更改其网络配置。如果您在 VPC 中启动管道，则后续无法将其更改为公共端点，反之亦然。
+ 您可以使用接口 VPC 端点或公有端点启动管道，但不能同时使用 VPC 端点和公有端点启动管道。在创建管道时只能选择其一。
+ 在预置使用 VPC 访问的管道后，将不能将其移到其他 VPC 中，也不能更改其子网或安全组设置。
+ 如果管道写入使用 VPC 访问的域或集合接收器，则在管道创建后将无法返回，也无法更改接收器（VPC 或公有）。必须删除，然后使用新的接收器重新创建管道。您仍然可以从公有接收器切换到使用 VPC 访问的接收器。
+ 您无法提供对 VPC 管道的[跨账户摄取访问权限](configure-client.md#configure-client-cross-account)。

## 先决条件
<a name="pipeline-vpc-prereqs"></a>

在预置使用 VPC 访问的管道之前，必须先执行以下操作：
+ **创建 VPC**

  要创建您的 VPC，您可以使用 Amazon VPC 控制台、 AWS CLI 或其中一个 AWS SDKs。有关更多信息，请参阅 *Amazon VPC 用户指南 VPCs*中的[使用](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-vpcs.html)。如果您已有 VPC，请跳过此步骤。
+ **预留 IP 地址**

  OpenSearch Inge *stion 会在您在创建管道时指定的每个子网中放置一个 elastic network 接口*。每个网络接口都与一个 IP 地址关联。必须为每个子网预留一个用于网络接口的 IP 地址。

## 为管道配置 VPC 访问权限
<a name="pipeline-vpc-configure"></a>

您可以在 OpenSearch 服务控制台中或使用，为管道启用 VPC 访问权限 AWS CLI。

### 控制台
<a name="pipeline-vpc-configure-console"></a>

您可以在[管道创建](creating-pipeline.md#create-pipeline)期间配置 VPC 访问权限。在**源网络选项**下，选择 **VPC 访问**并配置以下设置：


| 设置 | 说明 | 
| --- | --- | 
| 端点管理 |  选择是要自己创建 VPC 终端节点，还是让 OpenSearch Ingestion 为您创建终端节点。  | 
| VPC |  选择要使用的虚拟私有云 (VPC) 的 ID。VPC 和管道必须位于同一 AWS 区域中。  | 
| 子网 |  选择一个或多个子网。 OpenSearch 服务在子网中放置 VPC 终端节点和弹性网络接口。  | 
| 安全组 |  选择一个或多个 VPC 安全组，允许所需的应用程序通过管道暴露的端口（80 或 443）和协议（HTTP 或 HTTPs）到达接 OpenSearch 入管道。  | 
| VPC 挂载选项 |  如果您的来源需要跨VPC通信，例如Amazon DocumentDB、 OpenSearch自我管理或 Confluent Kafka OpenSearch ，Ingestion 会在您指定的子网中创建弹性网络接口 ENIs ()，以便连接到这些源。 OpenSearch Ingestion ENIs 在每个可用区中使用来到达指定的来源。**连接到 VPC** 选项将接 OpenSearch 入数据平面 VPC 连接到您指定的 VPC。 为托管 VPC 选择 CIDR 预留，以部署网络接口。  | 

### CLI
<a name="pipeline-vpc-configure-cli"></a>

要使用配置 VPC 访问权限 AWS CLI，请指定`--vpc-options`参数：

```
aws osis create-pipeline \
  --pipeline-name vpc-pipeline \
  --min-units 4 \
  --max-units 10 \
  --vpc-options SecurityGroupIds={sg-12345678,sg-9012345},SubnetIds=subnet-1212234567834asdf \
  --pipeline-configuration-body "file://pipeline-config.yaml"
```

## 自主管理型 VPC 端点
<a name="pipeline-vpc-self-managed"></a>

创建管道时，您可以使用端点管理功能来创建使用自主管理型端点或服务托管端点的管道。端点管理是可选的，默认为由 OpenSearch Ingestion 管理的端点。

要在中创建带有自行管理 VPC 终端节点的管道 AWS 管理控制台，请参阅[使用 OpenSearch 服务控制台创建管道](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/creating-pipeline.html#create-pipeline-console)。要在中创建带有自行管理 VPC 终端节点的管道 AWS CLI，您可以使用 [create-](https://docs.aws.amazon.com/cli/latest/reference/osis/create-pipeline.html) pipeline 命令中的`--vpc-options`参数：

```
--vpc-options SubnetIds=subnet-abcdef01234567890,VpcEndpointManagement=CUSTOMER
```

您可以在指定端点服务时自行创建到管道的端点。要查找端点服务，请使用 [get-pipeline](https://docs.aws.amazon.com/cli/latest/reference/osis/get-pipeline.html) 命令，这将返回类似于以下内容的响应：

```
"vpcEndpointService" : "com.amazonaws.osis.us-east-1.pipeline-id-1234567890abcdef1234567890",
"vpcEndpoints" : [ 
  {
    "vpcId" : "vpc-1234567890abcdef0",
    "vpcOptions" : {
      "subnetIds" : [ "subnet-abcdef01234567890", "subnet-021345abcdef6789" ],
      "vpcEndpointManagement" : "CUSTOMER"
    }
  }
```

使用响应`vpcEndpointService`中的创建带有 AWS 管理控制台 或的 VPC 终端节点 AWS CLI。

如果您使用自主管理型 VPC 端点，则必须在您的 VPC 中启用 DNS 属性 `enableDnsSupport` 和 `enableDnsHostnames`。请注意，如果您的管道使用自主管理型端点，并且您[停止并重启](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/pipeline--stop-start.html)了管道，则必须在您的账户中重新创建该 VPC 端点。

## VPC 访问的服务相关角色
<a name="pipeline-vpc-slr"></a>

[服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_terms-and-concepts.html#iam-term-service-linked-role)是一种独特的 IAM 角色类型，它将权限委派给服务，使之能够代表您创建和管理资源。如果您选择服务托管的 VPC 终端节点， OpenSearch Ingestion 需要一个名为的服务相关角色来**AWSServiceRoleForAmazonOpenSearchIngestionService**访问您的 VPC、创建管道终端节点并将网络接口放置在您的 VPC 的子网中。

如果您选择自我管理的 VPC 终端节点， OpenSearch Ingestion 需要一个名为的服务相关角色。**AWSServiceRoleForOpensearchIngestionSelfManagedVpce**有关这些角色及其权限和删除方法的更多信息，请参阅[使用服务相关角色创建 OpenSearch 摄取管道](slr-osis.md)。

OpenSearch 当您创建摄取管道时，Ingestion 会自动创建角色。要成功完成自动创建，在账户中创建第一个管道的用户必须拥有 `iam:CreateServiceLinkedRole` 操作权限。有关更多信息，请参阅 *IAM 用户指南*中的[服务相关角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/using-service-linked-roles.html#service-linked-role-permissions)。角色创建后，您可以在 AWS Identity and Access Management (IAM) 控制台中查看该角色。