【发布时间】:2018-01-19 14:07:53
【问题描述】:
我认为这可能吗? 我在 sam 模板中定义了一个 lambda 和 api 网关。我使用 sam-local 来启动它。在我的 lambda 中,我想连接到我的本地 dynamoDB,但 lambda 一直超时。 代码如下:
let AWS = require('aws-sdk')
let dyn= new AWS.DynamoDB({ endpoint: new AWS.Endpoint("http://localhost:8000") })
function handler(event, context, callback) {
dyn.listTables({Limit: 10}, function(err, data) {
if (err) {
console.log("Error", err.code)
} else {
console.log("Table names are ", data.TableNames)
}
})
let response = {
statusCode: 200
}
callback(null, response)
}
如果此代码在 lambda 之外运行,则可以正常工作
【问题讨论】:
-
尝试添加更多调试行并将 lambda 超时设置为 300 秒(最大值)。如果缩小到一行,您应该能够缩小范围。
-
我收到以下错误:{ 错误:在 Export._exceptionWithHostPort (util.js:1041: 20) 在 TCPConnectWrap.afterConnect [as oncomplete] (net.js:1086:14) 消息:'connect ECONNREFUSED 127.0.0.1:8000',代码:'NetworkingError',errno:'ECONNREFUSED',系统调用:'connect',地址:'127.0.0.1',端口:8000,区域:'us-east-1',主机名:'localhost',可重试:true,时间:2018-01-22T08:54:57.175Z }
-
听起来 DynamoDB 没有运行,或者在不同的端口上运行。您如何在本地启动 DynamoDB?
-
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb 给出:使用以下配置初始化 DynamoDB Local:端口:8000 InMemory:false DbPath:null SharedDb:true shouldDelayTransientStatuses : 假 CorsParams: *
标签: lambda amazon-dynamodb aws-api-gateway dynamo-local