今天,我们宣布 Amazon DocumentDB与MongoDB兼容 的 零ETL集成 现已与 Amazon OpenSearch Service 正式发布。此集成简化了高级搜索分析的架构,消除了与数据同步和数据管道相关的复杂性和成本。
本文将介绍如何使用 Amazon OpenSearch Ingestion 配置 Amazon DocumentDB 和 OpenSearch Service 的零ETL集成。该过程包括对 Amazon DocumentDB 数据的全面加载以及通过变更流不断将最新数据流入 Amazon OpenSearch Service。欲了解其他数据接入方法,请查看 文档。
从总体上看,该解决方案包括以下步骤:
在 Amazon DocumentDB 集合上启用变更流。创建 OpenSearch Ingestion 管道。在 Amazon DocumentDB 集群上加载示例数据。验证 OpenSearch Service 中的数据。要实施此解决方案,您需要满足以下前置条件:
一个基于 Amazon DocumentDB 的集群。您可以使用现有集群或 创建一个新集群。一个活跃的 OpenSearch Service 域。您可以使用现有域或 创建一个新域。一个存储在 AWS Secrets Manager 中的针对 Amazon DocumentDB 集群的 密钥。一个 Amazon S3 存储桶。零ETL 将通过对 Amazon DocumentDB 集群的主实例进行集合扫描,首次全面加载您的集合,这可能需要几分钟完成,具体时间取决于数据大小,您可能会注意到集群资源消耗增加。
Amazon DocumentDB 变更流事件是由于数据的插入、更新和删除而产生的按时间排序的数据变化序列。我们使用这些变更流事件将数据变化从 Amazon DocumentDB 集群传输到 OpenSearch Service 域。
变更流默认是禁用的,可以在单个集合、数据库或集群级别启用。要在集合上启用变更流,请按照以下步骤操作:
使用 mongo shell 连接到 Amazon DocumentDB。使用以下代码在您的集合上启用变更流。本文以 Amazon DocumentDB 数据库 inventory 和集合 product 为例:javascript dbadminCommand({modifyChangeStreams 1 database inventory collection product enable true})
如果您有多个集合需要传输数据到 OpenSearch Service,请为每个集合启用变更流。如果您希望在数据库或集群级别启用,请查看 启用变更流。
建议仅为必要的集合启用变更流。
OpenSearch Ingestion 是一个完全托管的数据收集器,将实时日志和跟踪数据传输到 OpenSearch Service 域。OpenSearch Ingestion 基于开源数据收集器 Data Prepper。Data Prepper 是 开源 OpenSearch 项目 的一部分。
使用 OpenSearch Ingestion,您可以过滤、丰富、转换和交付数据,以便进行下游分析和可视化。OpenSearch Ingestion 是无服务器的,因此您无需担心扩展基础设施、操作数据收集工具以及软件的修补或更新。
要创建一个 OpenSearch Ingestion 管道,请按照以下步骤操作:
在 OpenSearch Service 控制台中,选择导航窗格中的 管道。选择 创建管道。对于 管道名称,输入一个名称例如,zeroetldocdbtoopensearch。设置管道容量以根据当前的接入工作负载自动扩展您的管道。输入最小和最大接入 OpenSearch 计算单元OCU。在此示例中,我们使用最小 1 个接入 OCU 和最大 4 个接入 OCU 的默认管道容量设置。每个 OCU 约合 8 GB 内存和 2 vCPU,能处理估计每小时 8 GiB 的数据。OpenSearch Ingestion 支持最多 96 个 OCU,并根据您的接入工作量需求自动扩展。
选择配置蓝图,在导航窗格的 用例 下选择 ZeroETL。选择 与 DocumentDB 的零ETL 来构建管道配置。该管道结合了 Amazon DocumentDB 设置中的 source 部分和 OpenSearch Service 的 sink 部分。
您必须设置多个 AWS 身份和访问管理 IAM角色 (stsrolearn,这些角色具有从 Amazon DocumentDB 数据库和集合读取数据以及写入 OpenSearch Service 域的必要权限。该角色将被 OpenSearch Ingestion 管道使用,以确保在源和目标之间移动数据时保持正确的安全性。
每个 Amazon DocumentDB 集合需要一个 OpenSearch Ingestion 管道。
yamlversion 2documentdbpipeline source documentdb acknowledgments true host ltgt port 27017 authentication username {{awssecretssecretusername}} password {{awssecretssecretpassword}} aws stsrolearn ltgt
s3bucket ltltbucketnamegtgt s3region ltltbucketregiongtgt # 可选s3prefix,让 Opensearch ingestion 写入记录 # s3prefix ltltpathprefixgtgt collections # 集合格式:ltdatabaseNamegtltcollectionNamegt collection ltltdatabaseNamecollectionNamegtgt export true stream true
sink opensearch # 必填:提供 AWS OpenSearch 终端节点 hosts [ lthttps//searchmydomain1a2a3a4a5a6a7a8a9a0a9a8a7auseast1esamazonawscomgt ] index ltgt indextype custom documentid {getMetadata(primarykey)} action {getMetadata(opensearchaction)} # DocumentDB 记录创建或事件时间戳 documentversion {getMetadata(documentversion)} documentversiontype external aws # 必填:提供具有访问权限的 Role ARN。此角色应与 osispipelinesamazonawscom 具有信任关系 stsrolearn ltgt # 提供域的区域。 region ltgt # 如果 sink 是 Amazon OpenSearch Serverless 集合,则启用“无服务器”标志 # serverless true # serverlessoptions # 在这里指定名称以创建或更新无服务器集合的网络策略 # networkpolicyname networkpolicyname
extension aws secrets secret # 秘密名称或秘密 ARN secretid ltgt region ltgt stsrolearn ltgt refreshinterval PT1H
提供蓝图中的以下参数:
Amazon DocumentDB 终端节点 提供您的 Amazon DocumentDB 集群终端节点。Amazon DocumentDB 集合 提供您的 Amazon DocumentDB 数据库名称和集合名称,格式为 dbnamecollection,在 collections 部分中。例如,inventoryproduct。s3bucket 提供您的 S3 存储桶名称,以及 AWS 区域和 S3 前缀。这将用作 Amazon DocumentDB 数据的临时存储,以进行数据同步。OpenSearch hosts 提供 OpenSearch Service 域的终端节点和用于存储数据的首选索引名称。secretid 提供 Amazon DocumentDB 集群的密钥 ARN 及其区域。stsrolearn 提供具有 Amazon DocumentDB 集群、S3 存储桶和 OpenSearch Service 域权限的 IAM 角色 ARN。欲了解更多信息,请查看 创建 Amazon OpenSearch Ingestion 管道。
在输入所有必填值后,验证管道配置是否存在任何错误。在设计生产工作负载时,在 VPC 内部署您的管道。选择您的 VPC、子网和安全组。同时选择 附加到 VPC,并选择相应的 VPC CIDR 范围。确保安全组入站规则可以访问 Amazon DocumentDB 端口。有关更多信息,请参考 在 VPC 内保护 Amazon OpenSearch Ingestion 管道。
完成以下步骤来加载示例数据:
连接到您的 Amazon DocumentDB 集群。通过运行以下命令将一些文档插入 inventory 数据库中的 product 集合中。有关在 Amazon DocumentDB 上创建和更新文档的信息,请参见 处理文档。javascript use inventory
dbproductinsertMany([ { ItemUltra GelPen Colors[ Violet ] Inventory{ OnHand100 MinOnHand35 } UnitPrice099 } { ItemPoster Paint Colors[ Red Green Blue Black White ] Inventory{ OnHand47 MinOnHand50 } } { ItemSpray Paint Colors[ Black Red Green Blue ] Inventory{ OnHand47 MinOnHand50 OrderQnty36 } } ])
您可以使用 OpenSearch Dashboards 开发控制台在几秒钟内搜索已同步的项目。有关更多信息,请参见 在 Amazon OpenSearch Service 中创建和搜索文档。
要验证变更数据捕获CDC,请运行以下命令以更新在 product 集合中现有文档项目 Ultra GelPen 的 OnHand 和 MinOnHand 字段:

javascriptdbproductupdateOne({ ItemUltra GelPen}{ set{ Inventory{ OnHand300 MinOnHand100 } }})
验证 OpenSearch Service 索引中对文档项目 Ultra GelPen 的更新的 CDC。
您可以通过检查 OpenSearch Service 控制台中管道的状态来监控管道的状态。此外,您也可以使用 Amazon CloudWatch 提供实时指标和日志,以便在超出用户自定义阈值时设置警报。
确保清理在本文中创建的不需要的 AWS 资源,以防止因此产生额外费用。按照以下步骤清理您的 AWS 帐户:
在 OpenSearch Service 控制台中,选择导航窗格中的 域,然后在 托管集群 下。选择您要删除的域,然后选择 删除。在导航窗格中选择 管道,然后在 接入 下。选择您要删除的管道,然后在 操作 菜单中选择 删除。在 Amazon S3 控制台中,选择 S3 存储桶并选择 删除。在这篇文章中,您学习了如何启用 Amazon DocumentDB 变更数据流与 OpenSearch Service 之间的零ETL集成。要了解有关其他数据源的零ETL集成的更多信息,请查看 与 Amazon OpenSearch Ingestion 管道集成。
Praveen Kadipikonda 是 AWS 的高级分析专家解决方案架构师,驻扎在达拉斯。他帮助客户构建高效、性能卓越且可扩展的分析解决方案。他拥有超过 15 年的数据库和数据仓库解决方案构建经验。
Kaarthiik Thota 是驻扎在伦敦的 AWS 高级 Amazon DocumentDB 专家解决方案架构师。他对数据库技术充满热情,乐于帮助客户解决问题,并利用 NoSQL 数据库现代化应用程序。在加入 AWS 之前,他在关系型数据库、NoSQL 数据库和商业智能技术方面工作了超过 15 年。
Muthu Pitchaimani 是 Amazon OpenSearch Service 的搜索专家。他构建大规模搜索应用程序和解决方案。Muthu 对网络和安全话题感兴趣,目前驻扎在德克萨斯州的奥斯汀。
加载评论
surfshark官网登录入口安卓版