Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 与API网关(apollo server lambda)和AppSync一起使用graphQL_Amazon Web Services_Aws Api Gateway_Aws Appsync - Fatal编程技术网

Amazon web services 与API网关(apollo server lambda)和AppSync一起使用graphQL

Amazon web services 与API网关(apollo server lambda)和AppSync一起使用graphQL,amazon-web-services,aws-api-gateway,aws-appsync,Amazon Web Services,Aws Api Gateway,Aws Appsync,这个问题一直让我困惑。尽管AppSync是针对GraphQL销售的,而API网关是针对REST销售的。但API网关也可以通过lambda中的apollo服务器与GraphQL协同工作 那么,究竟是什么让一个选项比另一个更好呢?这取决于您对后端服务执行的控制程度,您想编写多少代码,当然还有您想支付多少费用 使用API网关和Lambda,您正在编写一个处理程序函数,该函数针对您的解析器定义执行完整的graphql请求,您可以使用Lambda运行时设置为的任何语言编写解析器定义。你必须考虑你的应用程序

这个问题一直让我困惑。尽管AppSync是针对GraphQL销售的,而API网关是针对REST销售的。但API网关也可以通过lambda中的apollo服务器与GraphQL协同工作


那么,究竟是什么让一个选项比另一个更好呢?

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

使用API网关和Lambda,您正在编写一个处理程序函数,该函数针对您的解析器定义执行完整的graphql请求,您可以使用Lambda运行时设置为的任何语言编写解析器定义。你必须考虑你的应用程序需要多少内存,以及你想要支持什么样的特性。您还需要做一些腿部工作来获得使用WebSocket的订阅

AWS AppSync更像是一个托管服务,您可以在其中向AppSync注册GraphQL模式,该服务负责查询验证、批处理调用,当然还有开箱即用的订阅。在它中,您只需要定义如何使用VTL(Velocity Templateing Language)来“映射”GraphQL请求,以定义对下游数据源的调用,特别是DynamoDB、ElasicSearch、HTTP、Aurora无服务器RDS或Lambda。请记住,为AppSync编写的Lambda函数只需处理一个解析器,而使用Apollo Server,则在代码中编写所有解析器逻辑

不管你选择哪种方式,最终都有其利弊。使用Lambda上的Apollo Server,您可以控制整个HTTP GraphQL请求周期,但这样做会增加复杂性。有了AppSync,您就有了一个更“受管理”的服务,您只需要定义解析程序来与数据源通信(在许多情况下,这些解析程序可以使用Amplify CLI自动生成),而代价是对整个GraphQL请求进行更精细的控制