与亚马逊服务的零 ETL 集成 OpenSearch - Amazon DocumentDB

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

与亚马逊服务的零 ETL 集成 OpenSearch

以亚马逊 OpenSearch 服务为目的地

OpenSearch 与 Amazon DocumentDB 的服务集成使您能够将满负荷事件和更改数据事件流式传输到 OpenSearch 域中。摄取基础设施以摄取管道的形式托管,它提供了一种高规模、低延迟的机制,用于持续流式传输来自 Amazon Doc OpenSearch umentDB 馆藏的数据。

在满载期间,Zero-ETL 集成首先 OpenSearch 使用摄取管道提取历史满载数据。载入满载数据后,摄取管道将开始从 Amazon Doc OpenSearch umentDB 变更流中读取数据,并最终赶上,以保持 Amazon DocumentDB 和之间近乎实时的数据一致性。 OpenSearch OpenSearch 将文档存储在索引中。来自 Amazon DocumentDB 馆藏的传入数据可以发送到一个索引,也可以分成不同的索引。采集管道会将 Amazon DocumentDB 集合中的所有创建、更新和删除事件与相应的文档创建、更新和删除 OpenSearch 事件同步,以使两个数据系统保持同步。可以将摄取管道配置为从一个集合中读取数据并写入一个索引,或者从一个集合中读取数据并有条件地路由到多个索引。

可以将摄取管道配置为使用以下方法将数据从 Amazon DocumentDB 流式传输到 OpenSearch 亚马逊服务:

  • 仅限满载

  • 无需满载即可从 Amazon DocumentDB 流式传输变更流事件

  • 满负荷后是来自亚马逊文档数据库的变更流

要设置您的摄取管道,请执行以下步骤:

步骤 1:创建 Amazon OpenSearch 服务域名或 OpenSearch 无服务器集合

需要具有相应数据读取权限的 Amazon OpenSearch 服务集合。要创建集合,请参阅《亚马逊 OpenSearch 服务开发者指南》中的 “亚马逊 OpenSearch 服务入门” 或 “亚马逊 OpenSearch 无服务器入门”。请参阅《亚马逊 OpenSearch 服务开发者指南》中的 Amazon OpenSearch Ingest ion,创建具有访问集合或域名写入数据的正确权限的 AIM 角色。

第 2 步:在 Amazon DocumentDB 集群上启用更改流

确保在 Amazon DocumentDB 集群中的所需馆藏上启用更改流。有关更多信息,请参阅教程:将变更流与 Amazon DocumentDB 结合使用

步骤 3:设置管道角色,使其有权写入 Amazon S3 存储桶和目标域或集合

创建 Amazon DocumentDB 集合并启用更改流后,设置要在工作流配置中使用的管道角色,并在该角色中添加以下权限:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "allowReadAndWriteToS3ForExport", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:AbortMultipartUpload", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::my-bucket/export/*" ] } ] }

为了使 OpenSearch 管道能够将数据写入 OpenSearch 域,该域必须具有允许 sts_role_arn 管道角色访问该域的域级访问策略。以下示例域访问策略允许您在上一步中创建的名为 pipeline-role 的管道角色向名为 ingestion-domain 的域写入数据:

{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{your-account-id}:role/{pipeline-role}" }, "Action": ["es:DescribeDomain", "es:ESHttp*"], "Resource": "arn:aws:es:{region}:{your-account-id}:domain/{domain-name}/*" } ] }

步骤 4:为管道角色添加创建 X-ENI 所需的权限

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AttachNetworkInterface", "ec2:CreateNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteNetworkInterfacePermission", "ec2:DetachNetworkInterface", "ec2:DescribeNetworkInterfaces" ], "Resource": [ "arn:aws:ec2:*:420497401461:network-interface/*", "arn:aws:ec2:*:420497401461:subnet/*", "arn:aws:ec2:*:420497401461:security-group/*" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeRouteTables", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:Describe*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:RequestTag/OSISManaged": "true" } } } ] }

步骤 5:创建管道

配置一个将亚马逊文档数据库指定为来源的 OpenSearch 摄取管道。此示例管道配置假设使用变更流获取机制。有关更多信息,请参阅 OpenSearch 《亚马逊服务开发者指南》中的在 Amazon DocumentDB 中使用采集管道。 OpenSearch

限制

以下限制适用于亚马逊 DocumentDB 集成 OpenSearch :

  • 每个管道仅支持一个 Amazon DocumentDB 集合作为来源。

  • 不支持跨区域数据接入。您的 Amazon DocumentDB 集群和 OpenSearch 域必须位于同一 AWS 区域。

  • 不支持跨账户数据提取。您的 Amazon DocumentDB 集群和 OpenSearch 采集管道必须位于同一个账户中。 AWS

  • 不支持亚马逊 DocumentDB 弹性集群。仅支持基于 Amazon DocumentDB 实例的集群。

  • 确保 Amazon DocumentDB 集群启用了使用 AWS 密钥的身份验证。 AWS 机密是唯一支持的身份验证机制。

  • 无法更新现有的管道配置以从不同的数据库和/或不同的集合中提取数据。要更新管道的数据库和/或集合名称,必须创建新的管道。