View a markdown version of this page

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

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

Zero-ETL 与亚马逊 OpenSearch 服务集成

以亚马逊 OpenSearch 服务为目的地

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

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

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

  • 仅完全加载

  • 从 Amazon DocumentDB 流式传输变更流事件而不完全加载

  • 完全加载,然后是来自 Amazon DocumentDB 的变更流

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

第 1 步:创建亚马逊 OpenSearch 服务域名或 OpenSearch 无服务器集合

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

步骤 2:在 Amazon DocumentDB 集群上启用变更流

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

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

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

JSON
{ "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

JSON
{ "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:创建管道

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

限制

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

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

  • Cross-region 不支持数据摄取。您的 Amazon DocumentDB 集群和 OpenSearch 域必须位于同一个 AWS 区域集群和域中。

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

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

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

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