You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS Amplify(GraphQL与AppSync)中使用OpenSearch Serverless?

改用OpenSearch Serverless替代Amplify @searchable托管集群的方案

由于Amplify的@searchable指令目前仅支持创建托管OpenSearch集群,要切换到OpenSearch Serverless需要手动配置数据同步与GraphQL集成,具体步骤如下:

1. 创建OpenSearch Serverless集合

  • 登录AWS控制台,进入OpenSearch Serverless服务创建新集合
  • 配置数据访问策略,允许后续同步数据的IAM角色(如Lambda执行角色、AppSync服务角色)拥有该集合的读写权限
  • 记录集合的端点地址,用于后续配置

2. 搭建DynamoDB到OpenSearch Serverless的数据同步管道

@searchable的自动同步仅适配托管集群,需手动实现数据同步:

  • 开启目标DynamoDB表的流功能(建议选择"新图像"模式)
  • 创建Lambda函数,编写逻辑监听DynamoDB流事件,将数据转换为符合OpenSearch索引结构的格式后写入目标集合
  • 为Lambda角色添加权限:允许读取DynamoDB流、写入OpenSearch Serverless集合

3. 在AppSync中配置OpenSearch Serverless数据源

  • 进入AWS AppSync控制台,找到Amplify关联的API
  • 添加新数据源,类型选择OpenSearch Serverless,关联之前创建的集合端点,配置具备访问权限的IAM角色
  • 确保该IAM角色拥有OpenSearch Serverless集合的查询权限

4. 自定义GraphQL查询与Resolver

不再使用@searchable指令,手动扩展Schema:

  • 在GraphQL Schema中添加自定义搜索字段,示例:
    type Query {
      searchPosts(filter: PostFilterInput, limit: Int, nextToken: String): PostConnection
    }
    
  • 为该查询字段配置Resolver,关联到OpenSearch Serverless数据源,编写VTL模板实现搜索逻辑(如根据filter构建DSL查询)

5. 调整前端代码适配自定义查询

  • 替换Amplify自动生成的searchXXX查询,改为调用自定义的GraphQL查询
  • 根据自定义查询的返回结构,调整前端数据处理逻辑

注意事项

  • 确保OpenSearch Serverless的索引映射与DynamoDB表结构匹配,避免同步或查询出错
  • 清理之前通过@searchable创建的托管OpenSearch集群(若不再使用),避免不必要的费用
  • 测试数据同步完整性,确保DynamoDB的增删改操作能正确同步到OpenSearch Serverless

内容的提问来源于stack exchange,提问作者AbsIbs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 16:10:01