【问题标题】:Is there a way to keep costs low with AWS Amplify DataStore @searchable directive?有没有办法使用 AWS Amplify DataStore @searchable 指令降低成本?
【发布时间】:2020-04-03 13:42:28
【问题描述】:

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

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

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

【问题讨论】:

    标签: amazon-web-services aws-elasticsearch


    【解决方案1】:

    在开发我的 MVP 时,我还发现 Elasticsearch 的成本很烦人,因此我创建了 graphql-algolia-transformer,它允许您使用 Algolia 代替您的搜索,该搜索具有不错的免费配额,并且从那里按记录/请求付费。

    【讨论】:

    • 这太棒了@thefinnomenon!
    【解决方案2】:

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

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

    我也有类似的情况,正在讨论设置一个运行 MeiliSearch 或迁移到 Algolia 的小型服务器。

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

    【讨论】:

      【解决方案3】:

      如果您的架构不是那么复杂,那么您可以使用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

      【讨论】:

      • 请注意,listPersons 在数据库上运行扫描,然后只过滤它得到的内容,因为您的数据扩展扫描成为对所有数据运行的非常繁重的操作。 youtu.be/VG2XWoD-rS0?t=460
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      • 2023-03-20
      • 2023-02-24
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多