gpt4 book ai didi

node.js - 无服务器函数在 lambda 上总是超时

转载 作者:太空宇宙 更新时间:2023-11-03 21:54:55 26 4
gpt4 key购买 nike

我编写了一个简单的查询调用,我的 hello 处理程序是这个

'use strict';

const pg = require('pg');
const conn = 'pg://postgres:user:pass@rds_host:5432/database_name';

module.exports.hello = (event, context, callback) => {
const client = new pg.Client(conn);
client.connect();

client.query('SELECT column_a FROM table_b', function(err, result) {
client.end();
if (err) {
callback(null, {error: err});
} else {
const response = {
statusCode: 200,
body: JSON.stringify({
data: result.rows
}),
};

callback(null, response);
}
});

// Use this code if you don't use the http event with the LAMBDA-PROXY integration
// callback(null, { message: 'Go Serverless v1.0! Your function executed successfully!', event });
};

我已经通过手动调用在本地执行了这个脚本

const handler = require('../server/handler');

handler.hello({}, {}, function(err, response) {
console.log(err, response);
});

当我打电话时,它可以工作

$ serverless invoke local -f hello -l

也可以,但是调用 lambda 总是失败,

$ SLS_DEBUG=* serverless invoke -f hello -l 


{
"errorMessage": "2017-04-21T01:11:19.580Z 697e69bc-262f-11e7-8fee-0331cc761e9a Task timed out after 6.00 seconds"
}
--------------------------------------------------------------------
START RequestId: 697e69bc-262f-11e7-8fee-0331cc761e9a Version: $LATEST
END RequestId: 697e69bc-262f-11e7-8fee-0331cc761e9a
REPORT RequestId: 697e69bc-262f-11e7-8fee-0331cc761e9a Duration: 6000.71 ms Billed Duration: 6000 ms Memory Size: 1024 MB Max Memory Used: 20 MB
2017-04-21T01:11:19.580Z 697e69bc-262f-11e7-8fee-0331cc761e9a Task timed out after 6.00 seconds



Error --------------------------------------------------

Invoked function failed

For debugging logs, run again after setting the "SLS_DEBUG=*" environment variable.

Stack Trace --------------------------------------------

Error: Invoked function failed
at AwsInvoke.log (/home/rkmax/my-project/node_modules/serverless/lib/plugins/aws/invoke/index.js:122:31)
From previous event:
at Object.invoke:invoke [as fn] (/home/rkmax/my-project/node_modules/serverless/lib/plugins/aws/invoke/index.js:22:10)
at BbPromise.reduce (/home/rkmax/my-project/node_modules/serverless/lib/classes/PluginManager.js:210:55)
at runCallback (timers.js:672:20)
at tryOnImmediate (timers.js:645:5)
at processImmediate [as _immediateCallback] (timers.js:617:5)
From previous event:
at PluginManager.invoke (/home/rkmax/my-project/node_modules/serverless/lib/classes/PluginManager.js:210:22)
at PluginManager.run (/home/rkmax/my-project/node_modules/serverless/lib/classes/PluginManager.js:225:17)
at Serverless.run (/home/rkmax/my-project/node_modules/serverless/lib/Serverless.js:97:31)
at serverless.init.then (/home/rkmax/my-project/node_modules/serverless/bin/serverless:23:50)

Get Support --------------------------------------------
Docs: docs.serverless.com
Bugs: github.com/serverless/serverless/issues
Forums: forum.serverless.com
Chat: gitter.im/serverless/serverless

Your Environment Information -----------------------------
OS: linux
Node Version: 7.9.0
Serverless Version: 1.11.0

最佳答案

您的 lambda 是否与您的 Postgres 数据库位于同一 VPC 和子网中?如果您创建了 lambda 并且没有明确说明它属于哪个子网,那么它实际上是“公共(public)”的,这意味着它可以访问互联网资源、DynamoDB、SNS、S3...,但它无法与私有(private)子网通信RDS 实例。要将 lambda 添加到数据库所在的 VPC,请转到“配置”->“高级设置”选项卡,并使用显示 VPC 内启用的流量的规则设置类似于以下内容的内容... Advanced Settings with VPC & Subnets & Security Groups configured

关于node.js - 无服务器函数在 lambda 上总是超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43532359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com