在 AWS lambda 上运行 graphql 应用程序

Posted

技术标签:

【中文标题】在 AWS lambda 上运行 graphql 应用程序【英文标题】:Running a graphql app on AWS lambda 【发布时间】:2019-01-22 01:58:32 【问题描述】:

我正在尝试在 AWS lambda 上运行 apollo graphql 服务器。服务器当前的架构是这样的——

一个包含模式的主要 lambda 函数,这是客户端与之交谈的函数。此函数中的每个解析器都会调用其他包含解析器核心逻辑的 lambda 函数。其他 lambda 函数使用 lambda.invoke 方法调用。

一堆其他 lambda 函数,每个函数都包含特定任务的逻辑。这些将由解析器在主 lambda 函数中使用。这些函数还与 dynamoDB 进行通信以进行存储。

问题 - 客户端发出请求,主 lambda 函数接收它,调用另一个 lambda 函数获取结果,主函数获取结果,将结果返回给用户。 主 lambda 函数不必要地运行,直到它从它调用的 lambda 函数返回结果。这会增加成本,而且链也可能会超过 2 个级别。

建议的一种解决方案是将所有内容都集中到一个函数中。但这在未来不会很难扩展吗?当它长大时,我将再次开始面临同样的问题。

人们通常如何在 lambda 上构建他们的 graphql 服务器?

【问题讨论】:

【参考方案1】:

我已经在生产环境中运行“将所有内容都集成到一个 lambda 函数”架构大约一年了,它的可扩展性非常好(数百名用户请求庞大的 GIS 数据,由 5 名左右的开发人员组成的团队构建解析器)。

如果你想看的话,我已经在 GitHub 上写了一个参考实现:https://github.com/rozenmd/graphql-resolvers/tree/master/api

通常我们会将resolvers.js 拆分到它自己的文件夹中,每个数据库模型都有一个文件。

【讨论】:

好的。看起来可用的选项并不多。谢谢朋友。

以上是关于在 AWS lambda 上运行 graphql 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 AWS lambda 上使用 graphql 'isValidJSValue' 或 'coerceValue'?

在 AWS lambda Web 控制台上测试 Apollo graphql 查询

AWS Lambda 中的 Apollo Server Graphql

ReactJS - NodeJS - 在 AWS Lambda 上连接到 Graphql 的问题

如何将签名的 HTTP 请求从 AWS Lambda 发送到 AppSync GraphQL?

AWS-LAMBDA:没有这样的文件或目录,打开 './src/graphql/schema.graphql'