有没有办法通过 AWS Amplify DataStore @searchable 指令保持低成本?

Is there a way to keep costs low with AWS Amplify DataStore @searchable directive?

我正在使用 AWS Amplify DataStore 创建离线第一笔记应用程序。为了能够搜索我的笔记,我只需将 @searchable 指令添加到架构中,然后我的数据库文档就会流式传输到 AWS 弹性服务。

但是,我对此的初步测试最终花费了我很多钱。仅通过添加 ES 节点,我的开发项目就从每月 2 美元变成了每月 30 美元。似乎没有办法从 AWS 控制台缩减服务规模。

有谁知道在 ES 中不为 12kb 数据每月支付 30 美元的方法吗?

根据 documentation@searchable 指令设置了一个 ElasticSearch 实例并在那里传输数据。此外,t2.micro 个实例不兼容 - 可能是您无法缩小规模的原因。

AWS Amplify Github 存储库中有许多问题与您的问题类似 - 请参阅 this and this

我也处于类似的境地,正在考虑设置一个小型服务器 运行 MeiliSearch or migrating to Algolia

FWIW,AppSync 文档搜索由 Algolia 提供支持:-)。

如果您的模式不是那么复杂,那么您可以只使用 filter

假设您有 schema.graphql:

type Person @model {
  id: ID!
  firstName: String!
  lastName: String!
}

那么您可以通过查询进行搜索:

listPersons(filter: {
  or: [
    { firstName: { contains: "Alex" } },
    { lastName: { contains: "Alex" } }
  ]
}) {
  items {
    id
    firstName
    lastName
  }
}

但如果您的搜索查询更复杂,则需要使用 ElasticSearch。

https://docs.amplify.aws/cli/graphql-transformer/examples#blog-queries

我还发现在开发我的 MVP 时 Elasticsearch 的成本很烦人,所以我创建了 graphql-algolia-transformer 它允许您使用 Algolia 代替您的搜索,它有一个不错的免费配额并且按 record/request 从那里开始。