

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

# 为跨 OpenSearch 账户摄取配置摄取管道
<a name="cross-account-pipelines"></a>

对于基于推送的源（例如 HTTP 和） OTel，Amazon OpenSearch Ingestion 允许您共享 AWS 账户 从虚拟私有云 (VPC) 到独立 VPC 中的管道终端节点的管道。在组织内共享分析数据的团队可利用此功能实现更高效的协作，例如共享日志分析。

本节采用以下术语：
+ **管道所有者**-拥有和管理 OpenSearch Ingestion 管道的账户。只有一个账户可以拥有管道。
+ **连接账户**：连接和使用共享管道的账户。多个账户可以连接到同一管道。

 VPCs 要配置为在之间共享 OpenSearch Ingestion 管道 AWS 账户，请按此处所述完成以下任务：
+ （管道所有者）[授予连接账户访问管道的权限](#cross-account-pipelines-setting-up-grant-access)
+ （连接账户）[为每个连接的 VPC 创建管道端点连接](#cross-account-pipelines-setting-up-create-pipeline-endpoints)

## 开始前的准备工作
<a name="cross-account-pipelines-before-you-begin"></a>

在配置 VPCs 为跨平台共享 OpenSearch 摄取管道之前 AWS 账户，请完成以下任务：


****  

| Task | Details | 
| --- | --- | 
|  创建一个或多个 OpenSearch 摄取管道  |  将最小 OpenSearch 计算单位 (OSUs) 设置为 2 或更高。有关更多信息，请参阅 [创建 Amazon OpenSearch Ingestion 管道](creating-pipeline.md)。有关更新管道的信息，请参阅 [更新 Amazon OpenSearch Ingestion 管道](update-pipeline.md)。  | 
|  为 OpenSearch 摄 VPCs 取创建一个或多个  |  要启用跨账户管道共享，管道涉及的任何VPC和管道端点都必须配置以下 DNS 值：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/opensearch-service/latest/developerguide/cross-account-pipelines.html) 有关更多信息，请参阅《Amazon VPC 用户指南》**中的 [VPC 的 DNS 属性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html)。  | 

## 授予连接账户访问管道的权限
<a name="cross-account-pipelines-setting-up-grant-access"></a>

本节中的过程介绍如何使用 OpenSearch 服务控制台，以及如何通过创建资源策略 AWS CLI 来设置跨账户管道访问权限。*资源策略*允许管道所有者指定其他可访问该管道的账户。创建后，只要管道存在，管道策略就会一直存在，直至策略被删除。

**注意**  
[资源策略不能取代使用 IAM 权限的标准 OpenSearch 摄取授权。](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/creating-pipeline.html#create-pipeline-permissions)资源策略是用于启用跨账户管道访问的附加授权机制。

**Topics**
+ [授予连接账户访问管道的权限（控制台）](#cross-account-pipelines-setting-up-grant-access-console)
+ [授予连接账户访问管道的权限（CLI）](#cross-account-pipelines-setting-up-grant-access-cli)

### 授予连接账户访问管道的权限（控制台）
<a name="cross-account-pipelines-setting-up-grant-access-console"></a>

使用以下步骤通过亚马逊 OpenSearch 服务控制台向连接账户授予访问管道的权限。

**创建管道端点连接**

1. **在亚马逊 OpenSearch 服务控制台的导航窗格中，展开 “接**入”，然后选择 Pipelin** es。**

1. 在**管道**部分中，选择要为连接账户授予访问权限的管道名称。

1. 选择 **VPC 端点**选项卡。

1. 在**授权主体**部分，选择**授权账户**。

1. 在 **AWS 账户 ID** 字段中，输入 12 位数字的账户 ID，然后选择**授权**。

### 授予连接账户访问管道的权限（CLI）
<a name="cross-account-pipelines-setting-up-grant-access-cli"></a>

按照以下步骤，通过 AWS CLI为连接账户授予管道访问权限。

**授予连接账户访问管道的权限**

1. 更新到最新版本的 AWS CLI （版本 2.0）。有关更多信息，请参阅[安装或更新到最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

1. 在账户和 AWS 区域 要共享的管道中打开 CLI。

1. 运行以下命令，为管道创建资源策略。此政策授予管道 `osis:CreatePipelineEndpoint` 权限。该策略包含一个参数，您可以在其中列出 AWS 账户 IDs 以允许。
**注意**  
在以下命令中，您必须使用账户 ID 的简写形式，即仅提供 12 位数字的账户 ID。使用 ARN 将无法奏效。您还必须在 `resource-arn` 的 CLI 参数和 `Resource` 的策略 JSON 中提供管道的 Amazon 资源名称（ARN），如下所示。

   ```
   aws --region region osis put-resource-policy \
     --resource-arn arn:aws:osis:region:pipeline-owner-account-ID:pipeline/pipeline-name
     --policy 'IAM-policy'
   ```

   使用如下所示的策略 *IAM-policy*

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
     {
     "Sid": "AllowAccess",
     "Effect": "Allow",
     "Principal": {
     "AWS": [
     "111122223333",
     "444455556666"
     ]
     },
     "Action": 
     "osis:CreatePipelineEndpoint",
     "Resource": "arn:aws:osis:us-east-1:123456789012:pipeline/pipeline-name"
     }
     ]
    }
   ```

------

## 为每个连接的 VPC 创建管道端点连接
<a name="cross-account-pipelines-setting-up-create-pipeline-endpoints"></a>

在管道所有者使用上述步骤授予对其 VPC 中管道的访问权限后，连接账户中的用户可在其 VPC 中创建管道端点。本节包括使用 OpenSearch 服务控制台和创建端点的过程 AWS CLI。创建终端节点时， OpenSearch Ingestion 会执行以下操作：
+ 在您的账户中创建[AWSServiceRoleForAmazonOpenSearchIngestionService](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/slr-osis.html)服务相关角色（如果尚不存在）。此角色向连接账户中的用户授予调用 [CreatePipelineEndpoint](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_osis_CreatePipelineEndpoint.html)API 操作的权限。
+ 创建管道端点。
+ 配置管道端点，使其能够从管道所有者 VPC 中的共享管道中摄取数据。

**Topics**
+ [创建管道端点连接（控制台）](#cross-account-pipelines-setting-up-create-pipeline-endpoints-console)
+ [创建管道端点连接（CLI）](#cross-account-pipelines-setting-up-create-pipeline-endpoints-cli)

### 创建管道端点连接（控制台）
<a name="cross-account-pipelines-setting-up-create-pipeline-endpoints-console"></a>

使用以下步骤使用 OpenSearch 服务控制台创建管道端点连接。

**创建管道端点连接**

1. 在亚马逊 OpenSearch 服务控制台的导航窗格中，展开 “接**入”，然后选择 VP **C** 终端节**点。

1. 在 **VPC 端点**页面中，选择**创建**。

1. 对于**管道位置**，选择一个选项。如果选择**当前账户**，从列表中选择管道。如果选择**跨账户**，在字段中指定管道 ARN。管道所有者必须已获得对管道的访问权限，如 [授予连接账户访问管道的权限](#cross-account-pipelines-setting-up-grant-access) 中所述。

1. 在 **VPC 设置**部分，对于 **VPC**，从列表中选择一个 VPC。

1. 对于**子网**，选择一个子网。

1. 对于**安全组**，选择一个组。

1. 选择**创建端点**。

等待您创建的端点状态转变为 `ACTIVE`。管道 `ACTIVE` 后，您将看到名为 `ingestEndpointUrl` 的新字段。使用此端点访问管道并使用类似 FluentBit的客户端提取数据。有关使用摄 FluentBit 取数据的更多信息，请参阅[将 OpenSearch 采集管道与 Fluent Bit 配合使用](configure-client-fluentbit.md)。

**注意**  
所有关联账户的 `ingestEndpointUrl` 均为同一 URL。

### 创建管道端点连接（CLI）
<a name="cross-account-pipelines-setting-up-create-pipeline-endpoints-cli"></a>

按照以下步骤，通过 AWS CLI创建管道端点连接。

**创建管道端点连接**

1. 如果您还没有，请更新到最新版本的 AWS CLI （版本 2.0）。有关更多信息，请参阅[安装或更新到最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

1. 在共享管道的连接账户中 AWS 区域 打开 CLI。

1. 运行以下命令以创建管道端点。
**注意**  
您必须为连接账户的 VPC 提供至少一个子网和一个安全组。安全组必须包含端口 443，并支持客户端连接账户 VPC。

   ```
   aws osis --region region create-pipeline-endpoint \
     --pipeline-arn arn:aws:osis:region:connecting-account-ID:pipeline/shared-pipeline-name
     --vpc-options SecurityGroupIds={sg-security-group-ID-1,sg-security-group-ID-2},SubnetIds=subnet-subnet-ID
   ```

1. 运行以下命令，列出上条命令中指定区域内的端点：

   ```
   aws osis --region region list-pipeline-endpoints
   ```

等待您创建的端点状态转变为 `ACTIVE`。管道 `ACTIVE` 后，您将看到名为 `ingestEndpointUrl` 的新字段。使用此端点访问管道并使用类似 FluentBit的客户端提取数据。有关使用摄 FluentBit 取数据的更多信息，请参阅[将 OpenSearch 采集管道与 Fluent Bit 配合使用](configure-client-fluentbit.md)。

**注意**  
所有关联账户的 `ingestEndpointUrl` 均为同一 URL。

## 移除管道端点
<a name="cross-account-pipelines-remove"></a>

如果您不再希望提供对共享管道的访问权限，可通过以下任一方法移除管道端点：
+ 删除管道端点（连接账户）。
+ 撤销管道端点（管道所有者）。

按照以下步骤删除连接账户中的管道端点。

**删除管道端点（连接账户）**

1. 在共享管道的连接账户中 AWS 区域 打开 CLI。

1. 运行以下命令，以列出区域中的管道端点：

   ```
   aws osis --region region list-pipeline-endpoints
   ```

   记下要删除的管道 ID。

1. 运行以下命令以删除管道端点：

   ```
   aws osis --region region delete-pipeline-endpoint \
     --endpoint-id 'ID'
   ```

作为共享管道的管道所有者，请按照以下步骤撤销管道端点。

**撤销管道端点（管道所有者）**

1. 在共享管道的连接账户中 AWS 区域 打开 CLI。

1. 运行以下命令，以列出区域中的管道端点连接：

   ```
   aws osis --region region list-pipeline-endpoint-connections
   ```

   记下要删除的管道 ID。

1. 运行以下命令以删除管道端点：

   ```
   aws osis --region region revoke-pipeline-endpoint-connections \
     --pipeline-arn pipeline-arn --endpoint-ids ID
   ```

   该命令仅支持指定一个端点 ID。