利用 Amazon OpenSearch Ingestion 迁移至 Amazon OpenSearch Serverless
关键要点使用 Amazon OpenSearch IngestionOSI迁移数据至 OpenSearch Serverless,简化了传统手动迁移过程。本文将介绍迁移的具体步骤和所需设置。作者:Muthu Pitchaimani Prashant Agrawal and Rahul Sharma,发表于 2024年2月27日来源:Amazon OpenSearch Service 分析 中级200 无服务器 查看原文 评论
Amazon OpenSearch Serverless 是一种按需自动扩展配置,用于 Amazon OpenSearch Service。自发布以来,OpenSearch Serverless 的关注度不断上升。客户更倾向于让服务自动管理容量,而不是手动配置。至今,客户依赖定制代码或第三方解决方案在 OpenSearch Service 域和 OpenSearch Serverless 之间移动数据。
我们最近推出了 Amazon OpenSearch IngestionOSI这一新特性,使得迁移过程更加轻松。OSI 是一个完全托管的无服务器数据收集器,能够实时将日志、指标和跟踪数据传送至 OpenSearch Service 域和 OpenSearch Serverless 集合。
本文将概述在已配置的 OpenSearch Service 域和 OpenSearch Serverless 之间迁移数据的步骤。关于安全角色和仪表板对象等元数据的迁移将在后续的文章中介绍。
云梯app官方下载入口解决方案概述
下图展示了使用 OSI 在 OpenSearch Service 域和 OpenSearch Serverless 之间移动数据所需的组成部分。您将使用 OSI 将 OpenSearch Service 作为数据源,将 OpenSearch Serverless 集合作为数据接收端。
前提条件
在开始之前,请完成以下步骤以创建所需资源:
创建一个 AWS 身份与访问管理IAM角色,OpenSearch Ingestion 管道将假设该角色以向 OpenSearch Serverless 集合写入数据。此角色需要在管道配置的 stsrolearn 参数中指定。为角色附加权限策略,允许其从 OpenSearch Service 域读取数据。以下是具有最小权限的示例策略:json { Version 20121017 Statement [ { Effect Allow Action esESHttpGet Resource [ arnawsesuseast1{accountid}domain/{domainname}/ arnawsesuseast1{accountid}domain/{domainname}/cat/indices arnawsesuseast1{accountid}domain/{domainname}/search arnawsesuseast1{accountid}domain/{domainname}/search/scroll arnawsesuseast1{accountid}domain/{domainname}//search ] } { Effect Allow Action esESHttpPost Resource [ arnawsesuseast1{accountid}domain/{domainname}//search/pointintime arnawsesuseast1{accountid}domain/{domainname}//search/scroll ] } { Effect Allow Action esESHttpDelete Resource [ arnawsesuseast1{accountid}domain/{domainname}/search/pointintime arnawsesuseast1{accountid}domain/{domainname}/search/scroll ] } ] }
为角色附加另一权限策略,允许其向集合发送数据。以下是具有最小权限的示例策略:json { Version 20121017 Statement [ { Action [ aossBatchGetCollection aossAPIAccessAll ] Effect Allow Resource arnawsaoss{region}{youraccountid}collection/{collectionid} } { Action [ aossCreateSecurityPolicy aossGetSecurityPolicy aossUpdateSecurityPolicy ] Effect Allow Resource Condition { StringEquals { aosscollection {collectionname} } } } ] }
配置角色以假设 信任关系,如下所示:json { Version 20121017 Statement [ { Effect Allow Principal { Service osispipelinesamazonawscom } Action stsAssumeRole } ] }
建议将 awsSourceAccount 和 awsSourceArn 条件键添加到策略中,以防止 混淆代理问题:json Condition { StringEquals { awsSourceAccount {youraccountid} } ArnLike { awsSourceArn arnawsosis{region}{youraccountid}pipeline/ } }
将 OpenSearch Ingestion 域角色 ARN 映射为域用户的后端用户作为 allaccess 用户。我们展示了使用 allaccess 角色的简化示例。在生产场景中,确保使用的角色具有足够的权限以读取和写入。创建一个 OpenSearch Serverless 集合,该集合将用于数据接收。按如下代码关联数据策略,以授予 OpenSearch Ingestion 角色对集合的权限:json [ { Rules [ { Resource [ index/collectionname/ ] Permission [ aossCreateIndex aossUpdateIndex aossDescribeIndex aossWriteDocument ] ResourceType index } ] Principal [ arnawsiam{accountid}role/pipelinerole ] Description Pipeline role access } ]
如果集合定义为 VPC 集合,需要创建 网络策略,并在摄取管道中配置。现在,您已准备好将数据从已经配置的域迁移到 OpenSearch Serverless。
从已配置域迁移数据至 Serverless
设置 Amazon OpenSearch Ingestion
要开始迁移,您必须有一个活动的 OpenSearch Service 域源和 OpenSearch Serverless 集合接收端。请按以下步骤设置 OpenSearch Ingestion 管道进行迁移:
在 OpenSearch Service 控制台中,选择导航窗格中的 管道,然后点击 摄取。点击 创建管道。在 管道名称 中输入一个名称例如,octankmigration。在 管道容量 中定义最小和最大容量以扩展资源。目前可以将默认最小值设置为 1,最大值为 4。在 配置蓝图 中选择 AWSOpenSearchDataMigrationPipeline。更新以下源相关信息:注释取消 hosts,并指定现有 OpenSearch Service 端点的端点。如果您的源集群是启用了兼容模式的 OpenSearch Service 集群,请取消注释 distributionversion;否则,保持注释。取消注释 indices、include、indexnameregex,并添加您想迁移的索引名称或模式例如,octankiotlogs2023110。更新 region,以指定您源域所在的区域例如,uswest2。更新 stsrolearn 为具有从 OpenSearch Service 域读取数据权限的角色例如,arnawsiam111122223333role/osispipeline。这个角色应作为后端角色添加到 OpenSearch Service 安全角色中。更新以下接收端相关信息:注释取消 hosts,并指定现有 OpenSearch Serverless 端点的端点。更新 stsrolearn 为具有向 OpenSearch Serverless 集合写入数据权限的角色例如,arnawsiam111122223333role/osispipeline。这个角色应作为 OpenSearch Serverless 集合中的数据访问策略一部分。将 serverless 标志更新为 true。对于 index,您可以保持默认值,这将在目标端使用源端的相同名称写入元数据。或者,如果您希望目标处有不同的索引名称,请修改此值。对于 documentid,您可以从源中的文档元数据获取 ID,并在目标中使用相同的 ID。请注意,自定义文档 ID 仅支持 SEARCH 类型的集合;如果您的集合为 TIMESERIES 或 VECTORSEARCH,则应注释此行。接下来,您可以验证管道以检查源和接收端的可连接性,以确保端点存在且可访问。在 网络设置 中,选择您喜欢的设置:选择 VPC 访问 并选择您的 VPC、子网和安全组,以私密方式设置访问。选择 公开 以使用公共访问。AWS 建议在所有生产工作负载中使用 VPC 端点,但在此演练中选择 公开。在 日志发布选项 中,您可以创建一个新的 Amazon CloudWatch 组或使用现有的 CloudWatch 组以记录摄取日志。这提供了有关操作期间出现的错误和警告的信息,有助于故障排除。在此演练中,选择 创建新组。点击 下一步,验证您为管道设置提供的详细信息。点击 创建管道。创建摄取管道可能需要几分钟。
下图快速演示了通过前述步骤创建 OpenSearch Ingestion 管道的过程。
验证接收端 OpenSearch Serverless 集合中的数据
管道创建并激活后,登录 OpenSearch Dashboards,针对您的 OpenSearch Serverless 集合运行以下命令以列出索引:

httpGET cat/indicesv
下图快速演示了在管道激活前后列出索引的过程。
结论
在本文中,我们展示了如何使用 OpenSearch Ingestion 将数据摄取到 OpenSearch Serverless 集合中,而无需使用第三方解决方案。通过最低限度的数据生产者配置,它自动将数据摄取到集合中。OSI 还允许您在摄取过程中对 ES7x 版本的数据进行转换或重新索引。OSI 消除了配置、扩展或管理服务器的需要。AWS 提供了各种 资源,使您能够快速开始使用 OpenSearch Ingestion 构建管道。您可以使用多种内置的 管道集成,快速从 Amazon DynamoDB、Amazon 管理的 Apache Kafka 流媒体Amazon MSK、[Amazon Security Lake](https//awsamazoncom/securitylake/、Fluent Bit 等多个来源摄取数据。以下 OpenSearch Ingestion 蓝图 使您能够通过最小的配置更改构建数据管道。
关于作者
Muthu Pitchaimani 是 Amazon OpenSearch Service 的搜索专家,专注于构建大规模搜索应用及解决方案。他对网络和安全主题特别感兴趣,现居德克萨斯州奥斯汀。
Prashant Agrawal 是 Amazon OpenSearch Service 的高级搜索专家解决方案架构师。他密切与客户合作,帮助他们将工作负载迁移到云端,并帮助现有客户对其集群进行调优,提高性能并降低成本。在加入 AWS 之前,他帮助各类客户使用 OpenSearch 和 Elasticsearch 处理搜索及日志分析用例。工作之余,他喜欢旅行和探索新地方。他的生活口号是:吃 旅行 重复。
Rahul Sharma 是亚马逊网络服务的技术客户经理。他热衷于利用数据技术将数据视为战略资产的能力,现居纽约市。