Amazon DocumentDB 与 Amazon OpenSearch Service 的零 ETL 集成现已推出

3f6009e3cb044829d4d2b9fc38877a28.gif

近日,亚马逊云科技宣布正式推出了 Amazon DocumentDB(兼容 MongoDB)与 Amazon OpenSearch Service 的 零 ETL (Zero-ETL)集成。

Amazon DocumentDB 提供原生的文本搜索和向量搜索功能。借助 Amazon OpenSearch Service,您可以对 Amazon DocumentDB 数据执行高级搜索分析,例如模糊搜索、同义词搜索、跨集合搜索和多语言搜索等。

零 ETL 集成可简化用于高级搜索功能的架构。利用这种集成,您可以摆脱无差别的繁重任务,并消除在两项服务之间构建和管理数据管道架构和进行数据同步的相关成本

本文将向您展示如何使用 Amazon OpenSearch Ingestion,来配置 Amazon DocumentDB 与 Amazon OpenSearch Service 的零 ETL 集成。这涉及到对 Amazon DocumentDB 数据执行完全加载,并使用变更流将最新数据流式传输到 Amazon OpenSearch Service。有关其他摄取方法,请扫码参阅文档。

aee6e5d66accc48b359e098a93e23e34.png

Amazon DocumentDB

(兼容 MongoDB)

扫码了解更多

8ba676eb6751acbd9d0b801b3ac31668.png

Amazon OpenSearch Service 

扫码了解更多

d58530308b59029341711b6193c384f4.png

零 ETL 集成

扫码了解更多

5ddba8825de7c5e5f17ed2a95c8b504c.png

Amazon OpenSearch Ingestion

扫码了解更多

e645848e33aff9257aedb1af426e2be8.png

摄取方法相关文档

扫码了解更多

左右滑动查看更多

解决方案概览

总体而言,此解决方案涉及以下步骤:

  1. 在 Amazon DocumentDB 集合上启用变更流。

  2. 创建 Amazon OpenSearch Ingestion 管道。

  3. 在 Amazon DocumentDB 集群上加载示例数据。

  4. 在 Amazon OpenSearch Service 中验证数据。

先决条件

要实施此解决方案,您需要满足以下先决条件:

  • 一个基于 Amazon DocumentDB 实例的集群。您可以使用现有集群,也可以创建新集群。

  • 一个有效的 Amazon OpenSearch Service 域。您可以使用现有域,也可以创建新域。

  • 一个存储在 Amazon Secrets Manager 中的 Amazon DocumentDB 集群密钥

  • 一个 Amazon Simple Storage Service(Amazon S3)存储桶

零 ETL 会对 Amazon DocumentDB 集群的主实例进行集合扫描,以这种方式对集合执行初始的完整加载。根据数据的大小,这可能需要几分钟才能完成,在此期间您会观察到集群的资源消耗上升。

79fd71250730c3ef95619eadd6f4f63f.png

创建新集群

扫码了解更多

cb37bc1a4650a82ccae47c654e3413c2.png

创建新域

扫码了解更多

4f4f69c269248130e273365538affb68.png

Amazon Secrets Manager 

扫码了解更多

74e4c7f0643037a3dd66bbe8c017682f.png

密钥

扫码了解更多

3919fcd01b1bba090f5e2cc53f51e869.png

Amazon Simple Storage Service

扫码了解更多

左右滑动查看更多

在 Amazon DocumentDB

集合上启用变更流

Amazon DocumentDB 变更流事件由按照时间排序的一系列数据变更组成,这些变更来自于对数据的插入、更新和删除操作。我们使用这些变更流事件,将数据变更从 Amazon DocumentDB 集群传输到 Amazon OpenSearch Service 域。

默认情况下,变更流处于禁用状态;您可以分别在集合级别、数据库级别或集群级别启用变更流。要在您的集合上启用变更流,请完成以下步骤:

  1. 使用 mongo shell 连接到 Amazon DocumentDB。

  2. 使用以下代码在您的集合上启用变更流。在本文中,我们使用 Amazon DocumentDB 数据库 inventory 和集合 product:

db.adminCommand({modifyChangeStreams: 1,
    database: "inventory",
    collection: "product",
    enable: true});

左右滑动查看完整示意

如果您有多个集合,并且要将其中的数据流式传输到 Amazon OpenSearch Service,请为每个集合启用变更流。如果您要在数据库或集群级别启用变更流,请扫码参阅 “Enabling Change Streams”。

建议仅为所需的集合启用变更流。

368cc1efa1636b71a2c5be953f42b302.png

Enabling Change Streams

扫码了解更多

创建 OpenSearch Ingestion 管道

Amazon OpenSearch Ingestion 是一个完全托管式数据收集器,可向 Amazon OpenSearch Service 域提供实时日志和跟踪数据。Amazon OpenSearch Ingestion 由开源数据收集器 Data Prepper 提供支持。Data Prepper 是开源 OpenSearch 项目的一部分。

借助 Amazon OpenSearch Ingestion,您可以筛选、扩充、转换和交付数据,用于在下游进行分析和可视化。Amazon OpenSearch Ingestion 采用无服务器架构,因此您无需操心基础设施的扩展、摄取实例集的运行以及软件的修补或更新。

扫描下面二维码了解 Amazon OpenSearch Ingestion 和有关 Data Prepper 开源项目的更多信息。

2e9cdcdebc137c654c0f0f952b57f637.png

Amazon OpenSearch Service 域

扫码了解更多

24d3af2d5fc0e6f20969158c7f6f158a.png

Data Prepper

扫码了解更多

87f168823df3ccddab19bbe2b9152c19.png

开源 OpenSearch 项目

扫码了解更多

d8992f6829c7e35149ca14a655814cc6.png

Amazon OpenSearch Ingestion

扫码了解更多

7dd1e078d76bc45deb2779f9a28238ac.png

Data Prepper

扫码了解更多

098b41a23db9ce3ec0ffeeee342ff09a.png

 OpenSearch Ingestion 管道

扫码了解更多

左右滑动查看更多

要创建 Amazon OpenSearch Ingestion 管道,请完成以下步骤:

1、在 Amazon OpenSearch Service 控制台上,在导航窗格中选择管道。

2、选择创建管道。

3、在管道名称中输入名称(例如,zeroetl-docdb-to-opensearch)。

edb94be028c20836a35a3db23a0b3b0f.png

4、设置计算资源的管道容量,以便根据当前的摄取工作负载自动扩展管道。

5、输入最小和最大摄取 OpenSearch 计算单位(OCU,OpenSearch Compute Unit)。在此示例中,我们使用默认管道容量设置,即最少 1 个摄取 OCU 和最多 4 个摄取 OCU。

每个 OCU 由大约 8 GB 内存和 2 个 vCPU 组合而成,估计每小时可处理 8 GiB 的数据。Amazon OpenSearch Ingestion 最多支持 96 个 OCU,它会根据您的摄取工作负载需求纵向扩展和缩减。

cde59050e2fcd786957c54e19530d389.png

6、选择配置蓝图,然后在导航窗格的使用案例下选择零 ETL。

7、选择与 Amazon DocumentDB 的零 ETL 集成以构建管道配置。

此管道由来自 Amazon DocumentDB 设置的 source 部分和 Amazon OpenSearch Service 的 sink 部分组成。

039417740f98e321ed28e1276882b7c1.jpeg

您必须设置多个具有必要权限的 Amazon Identity and Access Management(IAM)角色(sts_role_arn),用于从 Amazon DocumentDB 数据库和集合读取数据,并将数据写入到 Amazon OpenSearch Service 域。然后,Amazon OpenSearch Ingestion 管道将代入此角色,以确保在将数据从源迁移到目标时始终保持应有的安全状态。要了解更多信息,请扫码参阅。

每个 Amazon DocumentDB 集合都需要一个 Amazon OpenSearch Ingestion 管道。

5cb3e30b73f37d627d829ab0d8d52b06.png

Amazon Identity and

 Access Management

扫码了解更多

9c309f68f2dd9df5ba9d6bc8c22edbed.png

在 Amazon OpenSearch Ingestion 设置角色用户

扫码了解更多

左右滑动查看更多

version: "2"
documentdb-pipeline:
  source:
    documentdb:
      acknowledgments: true
      host: "<<docdb-2024-01-03-20-31-17.cluster-abcdef.us-east-1.docdb.amazonaws.com>>"
      port: 27017
      authentication:
        username: ${{aws_secrets:secret:username}}
        password: ${{aws_secrets:secret:password}}
      aws:
        sts_role_arn: "<<arn:aws:iam::123456789012:role/Example-Role>>"
      
      s3_bucket: "<<bucket-name>>"
      s3_region: "<<bucket-region>>" 
      # optional s3_prefix for Opensearch ingestion to write the records
      # s3_prefix: "<<path_prefix>>"
      collections:
        # collection format: <databaseName>.<collectionName>
        - collection: "<<databaseName.collectionName>>"
          export: true
          stream: true
  sink:
    - opensearch:
        # REQUIRED: Provide an AWS OpenSearch endpoint
        hosts: [ "<<https://search-mydomain-1a2a3a4a5a6a7a8a9a0a9a8a7a.us-east-1.es.amazonaws.com>>" ]
        index: "<<index_name>>"
        index_type: custom
        document_id: "${getMetadata(\"primary_key\")}"
        action: "${getMetadata(\"opensearch_action\")}"
        # DocumentDB record creation or event timestamp
        document_version: "${getMetadata(\"document_version\")}"
        document_version_type: "external"
        aws:
          # REQUIRED: Provide a Role ARN with access to the domain.This role should have a trust relationship with osis-pipelines.amazonaws.com
          sts_role_arn: "<<arn:aws:iam::123456789012:role/Example-Role>>"
          # Provide the region of the domain.
          region: "<<us-east-1>>"
          # Enable the 'serverless' flag if the sink is an Amazon OpenSearch Serverless collection
          # serverless: true
          # serverless_options:
            # Specify a name here to create or update network policy for the serverless collection
            # network_policy_name: "network-policy-name"
          
extension:
  aws:
    secrets:
      secret:
        # Secret name or secret ARN
        secret_id: "<<my-docdb-secret>>"
        region: "<<us-east-1>>"
        sts_role_arn: "<<arn:aws:iam::123456789012:role/Example-Role>>"
        refresh_interval: PT1H

左右滑动查看完整示意

提供蓝图中的以下参数:

  • Amazon DocumentDB 端点 – 提供您的 Amazon DocumentDB 集群端点。

  • Amazon DocumentDB 集合 – 按照 col­­­­­lections 部分中的 dbname.collection 格式,提供您的 Amazon DocumentDB 数据库名称和集合名称。例如,inventory.product。

  • s3_bucket – 提供您的 Amazon S3 存储桶名称以及 Amazon 区域和 Amazon S3 前缀。此存储桶用于临时保存来自 Amazon DocumentDB 的数据,以便进行数据同步。

  • Amazon OpenSearch 主机 – 提供主机的 Amazon OpenSearch Service 域端点,并提供首选的索引名称用于存储数据。

  • secret_id – 提供 Amazon DocumentDB 集群密钥的 ARN 及其区域。

  • sts_role_arn – 提供 IAM 角色的 ARN,该角色应具有 Amazon Document DB 集群、Amazon S3 存储桶和 Amazon OpenSearch Service 域的权限。

要了解更多信息,请参阅 “Creating Amazon OpenSearch Ingestion pipelines”。

2366398ff978f74eff453bcc9ec5a6e4.png

Creating Amazon OpenSearch Ingestion pipelines

扫码了解更多

5、输入所有必需的值后,验证管道配置是否有任何错误。

df060ba4528f98b80bf44ee30357b0bd.jpeg

6、设计生产工作负载时,在 VPC 中部署管道。选择您的 VPC、子网和安全组。还要选择附加到 VPC 并选择对应的 VPC CIDR 范围。

安全组入站规则应有权访问 Amazon DocumentDB 端口。有关更多信息,请扫码参阅 “Securing Amazon OpenSearch Ingestion pipelines within a VPC”。

9d6cc22b8f1d8518d56f11cb138c5f3d.png

Securing Amazon OpenSearch Ingestion pipelines within a VPC

扫码了解更多

7ce243d086f9a28e336b88ee52f1d039.jpeg

在 Amazon DocumentDB

集群上加载示例数据

完成以下步骤来加载示例数据:

  1. 连接到您的 Amazon DocumentDB 集群。

  2. 运行以下命令,在 inventory 数据库的 product 集合中插入一些文档。要在 Amazon DocumentDB 上创建和更新文档,请扫码参阅 Working with Documents。

599cb4e04e18d2f8047eb780c95cae75.png

Working with Documents

扫码了解更多

use inventory;


 db.product.insertMany([
   {
      "Item":"Ultra GelPen",
      "Colors":[
         "Violet"
      ],
      "Inventory":{
         "OnHand":100,
         "MinOnHand":35
      },
      "UnitPrice":0.99
   },
   {
      "Item":"Poster Paint",
      "Colors":[
         "Red",
         "Green",
         "Blue",
         "Black",
         "White"
      ],
      "Inventory":{
         "OnHand":47,
         "MinOnHand":50
      }
   },
   {
      "Item":"Spray Paint",
      "Colors":[
         "Black",
         "Red",
         "Green",
         "Blue"
      ],
      "Inventory":{
         "OnHand":47,
         "MinOnHand":50,
         "OrderQnty":36
      }
   }
])

左右滑动查看完整示意

在 OpenSearch Service 中验证数据

您可以使用 Amazon OpenSearch 控制面板的开发控制台搜索已同步的项目,只需几秒钟时间。有关更多信息,请扫码参阅 “Creating and searching for documents in Amazon OpenSearch Service”。

7435eaf4170fdf6deb94ebcbd094f55c.jpeg

4bafc8e2da985a5b8569cdde8bcc124c.png

在 Amazon OpenSearch Service创建和搜索文件

扫码了解更多

要验证变更数据捕获(CDC,Change Data Capture),请运行以下命令,更新 product 集合中现有文档项目 Ultra GelPen 的 OnHand 和 MinOnHand 字段:

db.product.updateOne({
   "Item":"Ultra GelPen"
},
{
   "$set":{
      "Inventory":{
         "OnHand":300,
         "MinOnHand":100
      }
   }
});

左右滑动查看完整示意

在 Amazon OpenSearch Service 索引上,验证 CDC 中对项目 Ultra GelPen 的文档所进行的更新。

ffe3868ae3ff5fc41456bcfebd37c959.jpeg

监控 CDC 管道

您可以在 Amazon OpenSearch Service 控制台上查看管道的状态,从而监控管道的状态。此外,您还可以使用 Amazon CloudWatch 来提供实时指标和日志,这样您就可以设置警报,以防超出用户定义的阈值

43823662eb9b6180dda4e1339ba9773d.png

Amazon CloudWatch

扫码了解更多

清理

按照本文,您可能会创建一些不再需要的亚马逊云科技资源,请确保清除这些资源,以免产生额外的费用。请按照以下步骤清理您的亚马逊云科技账户:

  1. 在 Amazon OpenSearch Service 控制台上的导航窗格中,选择托管集群下的域。

  2. 选择要删除的域,然后选择删除。

  3. 在导航窗格的摄取下,选择管道。

  4. 选择要删除的管道,然后在操作菜单上选择删除。

  5. 在 Amazon S3 控制台上,选择 Amazon S3 存储桶,然后选择删除。

总结

本文介绍了如何在 Amazon DocumentDB 变更数据流与 Amazon OpenSearch Service 之间启用零 ETL 集成。要详细了解可用于其他数据来源的零 ETL 集成,请扫码参阅 “Working with Amazon OpenSearch Ingestion pipeline integrations”。

3baae7c91c8182c8170ed8137cd0ad57.png

Working with Amazon OpenSearch Ingestion pipeline integrations

扫码了解更多

本篇作者

a661c4c841da2764df9caf2898130623.jpeg

Praveen Kadipikonda

亚马逊云科技高级分析专家级解决方案构架师。他帮助客户构建高效、高性能且可扩展的分析解决方案。他在构建数据库和数据仓库解决方案等领域工作超过 15 年。

bb76b51ba16dd45ef6761d6c820bdd26.jpeg

Kaarthiik Thota

亚马逊云科技 Amazon DocumentDB 专家级解决方案架构师。他对数据库技术充满热情,喜欢使用 NoSQL 数据库帮助客户解决问题和打造现代化应用程序。他工作经验深厚,在关系数据库、NoSQL 数据库和商业智能技术领域工作超过 15 年。

ece97099e3d3ece177845deef4c2f4c6.png

Muthu Pitchaimani

亚马逊云科技 Amazon OpenSearch Service 的搜索专家。他构建大规模的搜索应用程序和解决方案。Muthu 的兴趣在于网络和安全等领域,

41f0f581d1b22d8087a8600a72a1c399.gif

星标不迷路,开发更极速!

关注后记得星标「亚马逊云开发者」

点击阅读原文查看博客,获得更详细内容

听说,点完下面4个按钮

就不会碰到bug了!

9aabc1094665a35f07e51f3de991e05b.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值