本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
与 Amazon OpenSearch Service 的零 ETL 集成
Amazon OpenSearch Service 作为目标
OpenSearch Service 与 Amazon DocumentDB 集成可使您将完全加载和更改数据事件流式传输到 OpenSearch 域。摄取基础设施以 OpenSearch 摄取管道的形式托管,它提供的大规模、低延迟机制可以持续流式传输来自 Amazon DocumentDB 集合的数据。
在完全加载期间,零 ETL 集成先使用摄取管道将历史完全加载数据提取到 OpenSearch。摄取完全加载数据后,OpenSearch 摄取管道开始从 Amazon DocumentDB 变更流读取数据,并最终赶上,以在 Amazon DocumentDB 和 OpenSearch 之间保持近乎实时的数据一致性。OpenSearch 用索引存储文档。从 Amazon DocumentDB 集合传入的数据可以发送到一个索引,也可以分割成不同的索引。摄取管道会将 Amazon DocumentDB 集合中的所有创建、更新和删除事件与 OpenSearch 文档的相应创建、更新和删除同步起来,以使两个数据系统保持同步。可以将摄取管道配置为从一个集合中读取数据并写入一个索引,或者从一个集合中读取数据并按条件路由到多个索引。
可以将摄取管道配置为使用以下方法,将数据从 Amazon DocumentDB 流式传输到 Amazon OpenSearch Service:
-
仅完全加载
-
从 Amazon DocumentDB 流式传输变更流事件而不完全加载
-
完全加载,然后是来自 Amazon DocumentDB 的变更流
要设置摄取管道,请执行以下步骤:
步骤 1:创建 Amazon OpenSearch Service 域或 OpenSearch 无服务器集合
需要具有相应数据读取权限的 Amazon OpenSearch Service 集合。要创建集合,请参阅 《Amazon OpenSearch Service 开发人员指南》中的 Amazon OpenSearch Service 入门或 Amazon OpenSearch Serverless 入门。请参阅《Amazon OpenSearch Service 开发人员指南》中的 Amazon OpenSearch Ingestion,创建具有访问集合或域写入数据的正确权限的 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 摄取管道,将 Amazon DocumentDB 指定为源。此示例管道配置假设采用变更流获取机制。有关更多信息,请参阅《Amazon OpenSearch Service 开发人员指南》中的在 Amazon DocumentDB 中使用 OpenSearch 摄取管道。
限制
以下限制适用于 Amazon DocumentDB OpenSearch 的集成:
-
每个管道仅支持将一个 Amazon DocumentDB 集合作为源。
-
不支持跨区域数据摄取。Amazon DocumentDB 集群和 OpenSearch 域必须位于同一个 Amazon 区域。
-
不支持跨账户数据摄取。Amazon DocumentDB 集群和 OpenSearch 摄取管道必须处于同一个 Amazon 账户下。
-
不支持 Amazon DocumentDB 弹性集群。仅支持 Amazon DocumentDB 基于实例的集群。
-
确保 Amazon DocumentDB 集群已使用 Amazon 密钥启用身份验证。Amazon 密钥是唯一受支持的身份验证机制。
-
无法更新现有管道配置以从不同的数据库和/或不同的集合摄取数据。要更新管道的数据库和/或集合名称,就必须创建新的管道。