在进行 postgresql 查询后调用 google 工作表时 Lambda 函数超时

Lambda function times out when calling google sheets after making postgresql query

我正在尝试编写一个 Lambda 函数(使用 AWS Cloud9)来查询 Redshift(使用 node-postgres 包),然后将结果写入 Google Sheet(使用 googleapis 包)。

我目前将代码分布在两个单独的 Lambda 函数上 - 一个用于进行查询,一个用于写入 sheet,尽管我在单个函数中尝试时发生了同样的错误。

这两个功能单独运行良好。查询函数进行查询并 returns 结果,写入查询将测试负载写入 sheet。 但是,如果我尝试从查询函数调用写入函数,整个过程就会冻结并最终超时。这是来自 运行.

的确切日志
Error: 
Read timeout on endpoint URL: "https://lambda.us-east-2.amazonaws.com/2015-03-31/functions/queryRedshift/invocations"

    at convertStderrToError (https://d28a1z68q19s1r.cloudfront.net/content/ce0bff16a8467f5a19e655ab833e28a385f3a62f/@aws/aws-toolkit-cloud9/configs/bundle.js:424:33)
    at exports.EventEmitter.<anonymous> (https://d28a1z68q19s1r.cloudfront.net/content/ce0bff16a8467f5a19e655ab833e28a385f3a62f/@aws/aws-toolkit-cloud9/configs/bundle.js:416:70)
    at exports.EventEmitter.EventEmitter.emit (https://d373lap04ubgnu.cloudfront.net/c9-af167ac416de-ide/build/configs/ide/@aws/cloud9/configs/ide/environment-default.js:20:23)
    at Consumer.onExit (https://d373lap04ubgnu.cloudfront.net/c9-af167ac416de-ide/build/configs/ide/@aws/cloud9/configs/ide/environment-default.js:47444:80)
    at Consumer.<anonymous> (https://d373lap04ubgnu.cloudfront.net/c9-af167ac416de-ide/build/configs/ide/@aws/cloud9/configs/ide/environment-default.js:47204:4)
    at Consumer.Agent._onMessage (https://d373lap04ubgnu.cloudfront.net/c9-af167ac416de-ide/build/configs/ide/@aws/cloud9/configs/ide/environment-default.js:47289:4)
    at EngineIoTransport.EventEmitter.emit (https://d373lap04ubgnu.cloudfront.net/c9-af167ac416de-ide/build/configs/ide/@aws/cloud9/configs/ide/environment-default.js:47041:16)
    at module.exports.onMessage (https://d373lap04ubgnu.cloudfront.net/c9-af167ac416de-ide/build/configs/ide/@aws/cloud9/configs/ide/environment-default.js:47348:6)
    at module.exports.EventEmitter.emit (https://d373lap04ubgnu.cloudfront.net/c9-af167ac416de-ide/build/configs/ide/@aws/cloud9/configs/ide/environment-default.js:19:23)
    at module.exports.ReliableSocket.onMessage (https://d373lap04ubgnu.cloudfront.net/c9-af167ac416de-ide/build/configs/ide/@aws/cloud9/configs/ide/environment-default.js:47560:76)

我已经尝试重新编写代码以分离事物,但实际上我不确定从哪里开始,因为我只能找到 one other similar problem with no answer,并且日志没有指向事物所在的位置卡住了(据我所知 - 我在这方面不是很有经验)。

如果有人至少能为我指出正确的方向,那将非常有帮助!

提前致谢!


编辑:我现在也尝试了 node-redshift 包,结果相同。

根据您提供的信息,可能是以下情况:

  • 查询 lambda 能够连接到 AWS 中的 redshift。
  • 写 lambda 可以通过 Internet 连接到 google sheet api。

查询 lambda 没有互联网连接可以连接到

lambda.us-east-2.amazonaws.com

要让 VPC 内的 Lambda 函数访问互联网,您必须执行以下操作,

https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/

您的所有子网都已连接到 Internet 网关,但如果我没记错的话,其中 none 个子网具有 NAT 网关。