配置 OpenSearch Ingestion 管道以实现跨账户提取 - Amazon OpenSearch Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

配置 OpenSearch Ingestion 管道以实现跨账户提取

对于基于推送的源,例如 HTTP 和 OTel,Amazon OpenSearch Ingestion 允许您跨 Amazon Web Services 账户 共享管道,将数据从一个虚拟私有云(VPC)传输至另一个 VPC 中的管道端点。在组织内共享分析数据的团队可利用此功能实现更高效的协作,例如共享日志分析。

本节采用以下术语:

  • 管道所有者:拥有并管理 OpenSearch Ingestion 管道的账户。只有一个账户可以拥有管道。

  • 连接账户:连接和使用共享管道的账户。多个账户可以连接到同一管道。

要跨 Amazon Web Services 账户 配置 VPC 以共享 OpenSearch Ingestion 管道,请按此处所述完成以下任务:

开始前的准备工作

跨 Amazon Web Services 账户 配置 VPC 以共享 OpenSearch Ingestion 管道之前,请完成以下任务:

任务 详细信息

创建一个或多个 OpenSearch Ingestion 管道

将 OpenSearch 计算单位(OSU)的最小值设置为 2 或更高。有关更多信息,请参阅 创建 Amazon OpenSearch Ingestion 管道。有关更新管道的信息,请参阅 更新 Amazon OpenSearch Ingestion 管道

为 OpenSearch Ingestion 创建一个或多个 VPC

要启用跨账户管道共享,管道涉及的任何VPC和管道端点都必须配置以下 DNS 值:

  • enableDnsSupport=true

  • enableDnsHostnames=true

有关更多信息,请参阅《Amazon VPC 用户指南》中的 VPC 的 DNS 属性

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

本节中的步骤介绍如何使用 OpenSearch Service 控制台和 Amazon CLI 创建资源策略以设置跨账户管道访问权限。资源策略允许管道所有者指定其他可访问该管道的账户。创建后,只要管道存在,管道策略就会一直存在,直至策略被删除。

注意

资源策略不能替代使用 IAM 权限的标准 OpenSearch Ingestion 授权。资源策略是用于启用跨账户管道访问的附加授权机制。

授予连接账户访问管道的权限(控制台)

按照以下步骤,通过 Amazon OpenSearch Service 控制台为连接账户授予管道访问权限。

创建管道端点连接
  1. 在 Amazon OpenSearch Service 控制台中,在导航窗格中展开提取,然后选择管道

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

  3. 选择 VPC 端点选项卡。

  4. 授权主体部分,选择授权账户

  5. Amazon Web Services 账户 ID 字段中,输入 12 位数字的账户 ID,然后选择授权

授予连接账户访问管道的权限(CLI)

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

授予连接账户访问管道的权限
  1. 更新到 Amazon CLI 的最新版本(版本 2.0)。有关更多信息,请参阅安装或更新到最新版本的 Amazon CLI

  2. 在包含要共享管道的账户和 Amazon Web Services 区域 中打开 CLI。

  3. 运行以下命令,为管道创建资源策略。此政策授予管道 osis:CreatePipelineEndpoint 权限。该策略包含一个参数,可在其中列出要允许的 Amazon Web Services 账户 ID。

    注意

    在以下命令中,您必须使用账户 ID 的简写形式,即仅提供 12 位数字的账户 ID。使用 ARN 将无法奏效。您还必须在 resource-arn 的 CLI 参数和 Resource 的策略 JSON 中提供管道的 Amazon 资源名称(ARN),如下所示。

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

    使用类似以下的策略作为 IAM 策略

    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 创建管道端点连接

在管道所有者使用上述步骤授予对其 VPC 中管道的访问权限后,连接账户中的用户可在其 VPC 中创建管道端点。本节包括使用 OpenSearch Service 控制台和 Amazon CLI 创建端点的步骤。创建端点时,OpenSearch Ingestion 会执行以下操作:

创建管道端点连接(控制台)

按照以下步骤,通过 OpenSearch Service 控制台创建管道端点连接。

创建管道端点连接
  1. 在 Amazon OpenSearch Service 控制台中,在导航窗格中展开提取,然后选择 VPC 端点

  2. VPC 端点页面中,选择创建

  3. 对于管道位置,选择一个选项。如果选择当前账户,从列表中选择管道。如果选择跨账户,在字段中指定管道 ARN。管道所有者必须已获得对管道的访问权限,如 授予连接账户访问管道的权限 中所述。

  4. VPC 设置部分,对于 VPC,从列表中选择一个 VPC。

  5. 对于子网,选择一个子网。

  6. 对于安全组,选择一个组。

  7. 选择创建端点

等待您创建的端点状态转变为 ACTIVE。管道 ACTIVE 后,您将看到名为 ingestEndpointUrl 的新字段。使用此端点访问管道,并通过 FluentBit 等客户端摄取数据。有关使用 FluentBit 摄取数据的更多信息,请参阅 将 OpenSearch Ingestion 管道与 Fluent Bit 结合使用

注意

所有关联账户的 ingestEndpointUrl 均为同一 URL。

创建管道端点连接(CLI)

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

创建管道端点连接
  1. 如果尚未更新,请更新到 Amazon CLI 的最新版本(版本 2.0)。有关更多信息,请参阅安装或更新到最新版本的 Amazon CLI

  2. 在共享管道所在的 Amazon Web Services 区域 中,以连接账户身份打开 CLI。

  3. 运行以下命令以创建管道端点。

    注意

    您必须为连接账户的 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
  4. 运行以下命令,列出上条命令中指定区域内的端点:

    aws osis-cross-account --region region list-pipeline-endpoints

等待您创建的端点状态转变为 ACTIVE。管道 ACTIVE 后,您将看到名为 ingestEndpointUrl 的新字段。使用此端点访问管道,并通过 FluentBit 等客户端摄取数据。有关使用 FluentBit 摄取数据的更多信息,请参阅 将 OpenSearch Ingestion 管道与 Fluent Bit 结合使用

注意

所有关联账户的 ingestEndpointUrl 均为同一 URL。

移除管道端点

如果您不再希望提供对共享管道的访问权限,可通过以下任一方法移除管道端点:

  • 删除管道端点(连接账户)。

  • 撤销管道端点(管道所有者)。

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

删除管道端点(连接账户)
  1. 在共享管道所在的 Amazon Web Services 区域 中,以连接账户身份打开 CLI。

  2. 运行以下命令,以列出区域中的管道端点:

    aws osis-cross-account --region region list-pipeline-endpoints

    记下要删除的管道 ID。

  3. 运行以下命令以删除管道端点:

    aws osis-cross-account --region region delete-pipeline-endpoint \ --endpoint-id 'ID'

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

撤销管道端点(管道所有者)
  1. 在共享管道所在的 Amazon Web Services 区域 中,以连接账户身份打开 CLI。

  2. 运行以下命令,以列出区域中的管道端点连接:

    aws osis-cross-account --region region list-pipeline-endpoint-connections

    记下要删除的管道 ID。

  3. 运行以下命令以删除管道端点:

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

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