【问题标题】:AWS Appsync + DynamoDB with business logic具有业务逻辑的 AWS Appsync + DynamoDB
【发布时间】:2019-02-08 00:41:47
【问题描述】:

当数据源是 dynamoDB 时,是否可以在我的 AppSync 的突变上有业务逻辑?

我对 GraphQL 和 Appsync 还很陌生。我的理解是,当您使用普通的 GraphQL 时,您可以在解析器中包含业务逻辑,以便在更新之前进行验证。当您将 GraphQL 架构以 DynamoDB 作为数据源时,您将如何使用 AWS AppSync 实现相同的目标?

【问题讨论】:

    标签: amazon-web-services graphql aws-appsync


    【解决方案1】:

    在 AWS AppSync 中,您可以将解析程序附加到映射到 DynamoDB 数据源的字段。然后,您可以使用 Velocity 模板在解析器中包含您的自定义业务逻辑以进行任何验证。

    请参阅 AWS 解析器映射模板编程指南中的 following documentation

    Here is the mapping template reference 用于 DynamoDB 解析器。

    【讨论】:

    • 谢谢。我看到了 VTL,但暗暗希望这不是这样做的方法。我明白为什么人们似乎更喜欢在 Lambda 中使用自己的 GraphQL,而不是使用 AppSync。
    • 我们意识到,使用 VTL 是当今使用 AWS AppSync 时最痛苦的部分,我们正在努力使这个过程尽可能简单,因此几乎没有 VTL为大多数场景编写的代码。例如,查看 amplify-cli 中的 GraphQL Transformer:github.com/aws-amplify/amplify-cli/blob/master/…
    【解决方案2】:

    根据AWS AppSync's Website借助 AppSync,您的应用可以访问 Amazon DynamoDB 中的数据、触发 AWS Lambda 函数或运行 Amazon Elasticsearch 查询

    您可以将其视为客户端访问不同后端(数据源)的网关,这些后端由附加到 GraphQL 字段(解析器)的映射模板定义。

    AppSync 原生支持 DynamoDB 和 ElasitcSearch 查询,但如果您想执行业务逻辑,您必须添加 AWS Lambda 数据源,然后使用 AWS 开发工具包来 R/W DynamoDB 或其他任何东西,例如另一个 API,甚至可能是excel文件!

    此外,您可以将Apache VTL 与 AppSync 的可用帮助程序(例如 $context)一起使用,以帮助您执行授权或基于权限的字段数据访问。请记住,您的 DynamoDB 或 ES 解析器最后只能执行 1 次操作,Apache VTL 仅帮助您构建将由 AppSync 运行的解析器。

    这是比较传统方法与 appsync 的两个图表

    【讨论】:

      猜你喜欢
      • 2020-07-10
      • 2011-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      • 2011-06-25
      • 1970-01-01
      • 2018-06-23
      相关资源
      最近更新 更多