【发布时间】:2021-04-24 15:07:03
【问题描述】:
这是一个让我很困惑的问题。虽然 AppSync 是针对 GraphQL 销售的,而 API Gateway 是针对 REST 的。但 API Gateway 也可以通过 lambda 中的 apollo 服务器与 GraphQL 一起使用。
那么究竟是什么让一个比另一个更好?
【问题讨论】:
标签: amazon-web-services aws-api-gateway aws-appsync
这是一个让我很困惑的问题。虽然 AppSync 是针对 GraphQL 销售的,而 API Gateway 是针对 REST 的。但 API Gateway 也可以通过 lambda 中的 apollo 服务器与 GraphQL 一起使用。
那么究竟是什么让一个比另一个更好?
【问题讨论】:
标签: amazon-web-services aws-api-gateway aws-appsync
这取决于您希望对后端服务执行的控制程度、您想编写多少代码,当然还有您愿意支付多少费用。
使用 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 请求。
【讨论】: