创建 Amazon OpenSearch Ingestion 管道 - Amazon OpenSearch Service

创建 Amazon OpenSearch Ingestion 管道

管道是 Amazon OpenSearch Ingestion 用来将数据从其来源(数据来源)移动到接收器(数据目的地)的一种机制。在 OpenSearch Ingestion 中,接收器将始终是单一的 Amazon OpenSearch Service 域,而您的数据来源可能是 Amazon S3、Fluent Bit 或 OpenTelemetry Collector 等客户端。

有关更多信息,请参阅 OpenSearch 文档中的管道

先决条件和所需 IAM 角色

要创建 OpenSearch Ingestion 管道,您必须具有以下资源:

  • OpenSearch Ingestion 为写入接收器而代入的 IAM 角色称为管道角色。您可以提前创建此角色,也可以在创建管道时让 OpenSearch Ingestion 自动创建该角色。

  • OpenSearch Service 域或 OpenSearch 无服务器集合充当接收器。如果您正在写入域,则该域必须运行 OpenSearch 1.0 或更高版本或者 Elasticsearch 7.4 或更高版本。接收器必须具有向您的 IAM 管道角色授予相应权限的访问策略。

有关创建这些资源的说明,请参阅以下主题:

注意

如果您要写入使用精细访问控制的域,则需要完成一些额外的步骤。请参阅映射管道角色(仅适用于使用精细访问控制的域)

所需的 IAM 权限

OpenSearch Ingestion 使用以下 IAM 权限来创建管道:

  • osis:CreatePipeline:创建管道。

  • osis:ValidatePipeline:检查管道配置是否有效。

  • iam:CreateRoleiam:AttachPolicy:让 OpenSearch Ingestion 自动为您创建管道角色。

  • iam:PassRole – 将管道角色传递给 OpenSearch Ingestion,以便向域写入数据。此权限必须位于管道角色资源上,或者如果您计划在每个管道中使用不同的角色,则仅 *

例如,以下策略授予创建管道的权限:

JSON
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Resource":"*", "Action":[ "osis:CreatePipeline", "osis:ListPipelineBlueprints", "osis:ValidatePipeline" ] }, { "Resource":[ "arn:aws:iam::111122223333:role/pipeline-role" ], "Effect":"Allow", "Action":[ "iam:CreateRole", "iam:AttachRolePolicy", "iam:PassRole" ] } ] }

OpenSearch Ingestion 还包括一项名为 osis:Ingest 的权限,只有拥有该权限才能将签名的请求发送到使用 Signature 版本 4 的管道。有关更多信息,请参阅 创建摄取角色

注意

此外,第一个在账户中创建管道的用户必须拥有 iam:CreateServiceLinkedRole 操作的权限。有关更多信息,请参阅管道角色资源

有关每个权限的更多信息,请参阅《服务授权参考》中的 OpenSearch Ingestion 操作、资源和条件键

指定管道版本

使用配置编辑器创建管道时,必须指定管道将运行的 Data Prepper 的主要版本。要指定版本,请在您的管道配置中包含以下 version 选项:

version: "2" log-pipeline: source: ...

当您选择创建时,OpenSearch Ingestion 会确定您指定的主要版本的最新可用次要版本,并使用该版本预调配管道。例如,如果您指定 version: "2",并且支持的 Data Prepper 最新版本为 2.1.1,则 OpenSearch Ingestion 会使用版本 2.1.1 来预调配您的管道。我们不会公开显示您的管道正在运行的次要版本。

要在 Data Prepper 新的主要版本可用时升级管道,请编辑管道配置并指定新版本。您无法将管道降级到较早版本。

注意

Data Prepper 新版本发布后,OpenSearch Ingestion 不会立即给予支持。新版本公开发布后,OpenSearch Ingestion 会在一段时间后才会给予支持。此外,OpenSearch Ingestion 可能会明确表示不支持某些主要版本或次要版本。有关完整列表,请参阅支持的 Data Prepper 版本

每当您对启动蓝绿部署的管道进行更改时,OpenSearch Ingestion 都可以将其升级到当前管道配置的主要版本的最新次要版本。有关更多信息,请参阅 使用蓝绿部署进行管道更新。除非在管道配置中明确更新 version 选项,否则 OpenSearch Ingestion 无法更改管道的主要版本。

指定提取路径

对于基于拉取的来源,例如 OTel 跟踪OTel 指标,OpenSearch Ingestion 需要在来源配置中添加其他 path 选项。路径是字符串(例如,/log/ingest),它表示提取的 URI 路径。此路径定义用于向管道发送数据的 URI。

例如,假设您为包含 HTTP 源的管道指定以下路径:

Input field for specifying the path for ingestion, with an example path entered.

向管道中摄取数据时,必须在客户端配置中指定以下端点:https://pipeline-name-abc123.us-west-2.osis.amazonaws.com/my/test_path

路径必须以斜杠 (/) 开头,可以包含特殊字符 '-'、'_'、'.'、'/' 以及 ${pipelineName} 占位符。如果您使用 ${pipelineName}(例如 /${pipelineName}/test_path),OpenSearch Ingestion 将使用关联子管道的名称替换该变量。

创建管道

本部分介绍如何使用 OpenSearch Service 控制台和 AWS CLI 创建 OpenSearch Ingestion 管道。

要创建管道,请登录 Amazon OpenSearch Service 控制台(网址为 https://console.aws.amazon.com/aos/home),然后选择创建管道

您可以选择空白管道,也可以选择配置蓝图。蓝图包含针对多种常见使用案例预先配置的管道。有关更多信息,请参阅 使用蓝图

选择选择蓝图

配置源

  1. 如果您从空白管道开始,请从下拉菜单中选择源。可用源可能包括其他 AWS 服务、OpenTelemetry 或 HTTP。有关更多信息,请参阅 将 Amazon OpenSearch Ingestion 管道与其他服务和应用程序集成

  2. 根据您选择的源,为源配置其他设置。例如,要使用 Amazon S3 作为源,则必须指定管道接收消息的 Amazon SQS 队列的 URL。有关支持的源插件列表及其文档链接,请参阅 Amazon OpenSearch Ingestion 管道支持的插件和选项

  3. 对于某些源,必须指定源网络选项。选择 VPC 访问权限公共访问权限。如果您选择公有访问权限,请跳至下一步。如果您选择 VPC 访问,请配置以下设置:

    设置 描述
    端点管理

    选择是要自己创建虚拟私有云(VPC)端点,还是让 OpenSearch Ingestion 为您创建端点。端点管理默认会选择由 OpenSearch Ingestion 托管的端点。

    VPC

    选择要使用的 VPC 的 ID。VPC 和管道必须位于同一 AWS 区域 中。

    子网

    选择一个或多个子网。OpenSearch Service 会将 VPC 端点和弹性网络界面放入子网中。

    安全组

    选择一个或多个 VPC 安全组,以允许您所需的应用程序在管道公开的端口(80 或 443)和协议(HTTP 或 HTTPs)上访问 OpenSearch Ingestion 管道。

    VPC 挂载选项

    如果您的源是自主管理型端点,请将您的管道挂载到某个 VPC。选择提供的默认 CIDR 选项之一,或使用自定义 CIDR。

    有关更多信息,请参阅 为 Amazon OpenSearch Ingestion 管道配置 VPC 访问

  4. 选择下一步

配置处理器

向管道添加一个或多个处理器。处理器是子管道中的组件,可在将记录发布到域或集合接收器之前对事件进行筛选、转换和增强。有关支持的处理器列表及其文档链接,请参阅 Amazon OpenSearch Ingestion 管道支持的插件和选项

您可以选择操作,并添加以下内容:

  • 条件路由:根据特定条件将事件路由到不同的接收器。有关更多信息,请参阅条件路由

  • 子管道:每个子管道都由一个来源、零个或多个处理器以及一个接收器组成。仅有一个子管道可以拥有外部源。其余所有子管道的源必须是整体管道配置中的其他子管道。单个管道配置可以包含 1-10 个子管道。

选择下一步

配置接收器

选择管道发布记录的目标位置。每个子管道必须至少包含一个接收器。最多可向管道添加 10 个接收器。

对于 OpenSearch 接收器,配置以下字段:

设置 描述
网络策略名称

(仅限无服务器接收器)

如果您已选择 OpenSearch 无服务器集合,则输入网络策略名称。OpenSearch Ingestion 会在策略不存在时创建策略,或通过添加规则更新策略,该规则将授予访问权限至连接管道与集合的 VPC 端点。有关更多信息,请参阅 向 Amazon OpenSearch Ingestion 管道授予访问集合的权限

索引名称

管道发送数据的索引名称。OpenSearch Ingestion 会在索引不存在时创建该索引。

索引映射选项

选择管道如何将文档及其字段存储到 OpenSearch 接收器中并建立索引。如果选择动态映射,OpenSearch 将在您对文档进行索引时自动添加字段。如果选择自定义映射,则输入索引映射模板。有关更多信息,请参阅索引模板

启用 DLQ

为管道配置 Amazon S3 死信队列(DLQ)。有关更多信息,请参阅 死信队列

其他设置

为 OpenSearch 接收器配置高级选项。有关更多信息,请参阅 Data Prepper 文档中的配置选项

要添加 Amazon S3 接收器,请选择添加接收器Amazon S3。有关更多信息,请参阅 Amazon S3 作为目标

选择下一步

配置管道

配置以下其他管道设置:

设置 描述
管道名称

管道的唯一名称。

持久缓冲区

持久缓冲功能将您的数据存储在跨多个可用区、基于磁盘的缓冲区中。有关更多信息,请参阅 持久缓冲功能

如果启用持久缓冲功能,请选择 AWS Key Management Service 密钥以加密缓冲区数据。

管道容量

Ingestion OpenSearch 计算单位(OCU)的最小和最大管道容量。有关更多信息,请参阅 在 Amazon OpenSearch Ingestion 中扩展管道

管道角色

IAM 角色,为管道提供所需权限,使其能够向接收器写入数据并从基于拉取的源读取数据。您可以自行创建角色,也可以让 OpenSearch Ingestion 根据您选择的使用案例为您创建角色。

有关更多信息,请参阅 在 Amazon OpenSearch Ingestion 中设置角色和用户

标签

向管道添加一个或多个标签。有关更多信息,请参阅 标记 Amazon OpenSearch Ingestion 管道

日志发布选项 启用管道日志发布至 Amazon CloudWatch Logs。建议您启用日志发布,以便更轻松地解决管道问题。有关更多信息,请参阅 监控管道日志

选择下一步,然后检查您的管道配置,并选择创建管道

OpenSearch Ingestion 运行一个异步流程来构建管道。当管道状态为 Active 时,您可以开始将数据提取到管道。

create-pipeline 命令接受以字符串形式或者在 .yaml 或 .json 文件中的管道配置。如果您以字符串形式提供配置,则必须使用 \n 转义每一个新行。例如,"log-pipeline:\n source:\n http:\n processor:\n - grok:\n ...

以下示例命令采用以下配置创建管道:

  • 最少 4 个 Ingestion OCU,最多 10 个 Ingestion OCU

  • 在虚拟私有云 (VPC) 中预调配

  • 启用日志发布

aws osis create-pipeline \ --pipeline-name my-pipeline \ --min-units 4 \ --max-units 10 \ --log-publishing-options IsLoggingEnabled=true,CloudWatchLogDestination={LogGroup="MyLogGroup"} \ --vpc-options SecurityGroupIds={sg-12345678,sg-9012345},SubnetIds=subnet-1212234567834asdf \ --pipeline-configuration-body "file://pipeline-config.yaml" \ --pipeline-role-arn arn:aws:iam::1234456789012:role/pipeline-role

OpenSearch Ingestion 运行一个异步流程来构建管道。当管道状态为 Active 时,您可以开始将数据提取到管道。要查看管道的状态,请使用 GetPipeline 命令。

要使用 OpenSearch Ingestion API 创建 OpenSearch Ingestion 管道,请调用 CreatePipeline 操作。

成功创建管道后,您可以配置客户端并开始将数据提取到 OpenSearch Service 域中。有关更多信息,请参阅 将 Amazon OpenSearch Ingestion 管道与其他服务和应用程序集成

跟踪管道创建的状态

在 OpenSearch Ingestion 预调配管道并准备摄取数据时,您可以跟踪管道的状态。

最初创建管道后,OpenSearch Ingestion 要经历多个阶段才可以准备摄取数据。要查看管道创建的各个阶段,请选择管道名称以查看其管道设置页面。在状态下,选择查看详细信息

管道要经过以下几个阶段才可以摄取数据:

  • 验证 — 验证管道配置。此阶段完成后,所有验证均已成功。

  • 创建环境 — 准备和预调配资源。此阶段完成后,即创建了新的管道环境。

  • 部署管道 — 部署管道。此阶段完成后,管道已成功部署。

  • 检查管道运行状况 — 检查管道的运行状况。此阶段完成后,所有运行状况检查均已通过。

  • 启用流量 — 允许管道摄取数据。此阶段完成后,您可以开始将数据提取到管道。

使用 get-pipeline-change-progress 命令查看管道的状态。以下 AWS CLI 请求检查名为 my-pipeline 的管道的状态:

aws osis get-pipeline-change-progress \ --pipeline-name my-pipeline

响应

{ "ChangeProgressStatuses": { "ChangeProgressStages": [ { "Description": "Validating pipeline configuration", "LastUpdated": 1.671055851E9, "Name": "VALIDATION", "Status": "PENDING" } ], "StartTime": 1.671055851E9, "Status": "PROCESSING", "TotalNumberOfStages": 5 } }

要使用 OpenSearch Ingestion API 跟踪管道创建的状态,请调用 GetPipelineChangeProgress 操作。