【问题标题】:Use graphQL with API Gateway (apollo-server-lambda) vs. AppSync将 graphQL 与 API Gateway (apollo-server-lambda) 与 AppSync 结合使用
【发布时间】:2021-04-24 15:07:03
【问题描述】:

这是一个让我很困惑的问题。虽然 AppSync 是针对 GraphQL 销售的,而 API Gateway 是针对 REST 的。但 API Gateway 也可以通过 lambda 中的 apollo 服务器与 GraphQL 一起使用。

那么究竟是什么让一个比另一个更好?

【问题讨论】:

    标签: amazon-web-services aws-api-gateway aws-appsync


    【解决方案1】:

    这取决于您希望对后端服务执行的控制程度、您想编写多少代码,当然还有您愿意支付多少费用。

    使用 API Gateway 和 Lambda,您正在编写一个处理程序函数,该函数针对您使用 Lambda 运行时设置的任何语言编写的解析器定义执行完整的 graphql 请求。您必须考虑您的应用程序需要多少内存,以及您想要支持什么样的功能。您还需要做一些工作才能让订阅与 websockets 一起使用。

    AWS AppSync 更像是一项托管服务,您可以在其中向 AppSync 注册您的 GraphQL 架构,该服务会处理查询验证、批处理调用以及开箱即用订阅等事务。在其中,您只需要定义您希望如何使用 VTL(速度模板语言)“映射”GraphQL 请求来定义对下游数据源的调用,即。特别是 DynamoDB、ElasicSearch、HTTP、Aurora Serverless RDS 或 Lambda。请记住,您为 AppSync 编写的 Lambda 函数只需处理一个解析器,而使用 Apollo Server,您将在代码中编写所有解析器逻辑。

    最终,无论您选择哪种方式,都有其优点和缺点。使用 Lambda 上的 Apollo Server,您可以控制整个 HTTP GraphQL 请求周期,但会增加这样做的复杂性。使用 AppSync,您可以获得更“托管”的服务,您只需定义解析器即可与您的数据源对话(在许多情况下,这些可以使用 Amplify CLI 为您自动生成),但代价是更好地控制整个 GraphQL 请求。

    【讨论】:

    • 很好的答案。您是否了解其中的“然后当然要支付多少”部分?假设 AppSync 更便宜是因为您不必运行完整的 Apollo 服务器,还是因为它是“托管的”而更昂贵?
    猜你喜欢
    • 2018-02-16
    • 2017-04-19
    • 2021-07-30
    • 2021-05-17
    • 2020-11-12
    • 2019-01-18
    • 2019-12-18
    • 2020-08-01
    • 2020-06-12
    相关资源
    最近更新 更多