【发布时间】:2017-09-04 09:38:45
【问题描述】:
我在本地运行 DynamoDB:
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb
我正在尝试运行lambda-local 示例:
lambda-local -f aws -e event.json
但是,我根本没有从 dynamodb 得到任何输出。 没有错误,看起来对dynamodb.listTables()的调用被跳过/忽略了。怎么了?
我的aws.js如下:
var AWS = require("aws-sdk");
AWS.config.update({
region: "us-west-2",
endpoint: "http://localhost:8000",
accessKeyId: "BLAH",
secretAccessKey: "BLAH"
});
var dynamodb = new AWS.DynamoDB();
exports.handler = function(event, context) {
console.log("EVENT: ", event);
event.int++;
console.log("LIST TABLES:");
dynamodb.listTables(function(err, data) {
if (err) {
console.log("Error: ", err.code);
} else {
console.log("Table names are: ", data.TableNames);
}
});
console.log("---SUCCEED:---");
context.succeed(event);
};
和event.json:
{
"obj" : { "a" : "b" },
"int" : 1,
"str" : "qwerty",
"arr" : [ 1, 2, 3, 4 ]
}
输出是:
EVENT: { obj: { a: 'b' }, int: 1, str: 'qwerty', arr: [ 1, 2, 3, 4 ] }
LIST TABLES:
---SUCCEED:---
OUTPUT
--------------------------------
{
"obj": {
"a": "b"
},
"int": 2,
"str": "qwerty",
"arr": [
1,
2,
3,
4
]
}
我希望至少在 LIST TABLES 和 --SUCCEED 之间看到一些东西:---
然而没有输出,也没有错误。我还检查了 DynamoDB 日志,那里什么也没有。 event.int++ 行运行良好,我看到所有其他 console.log() 调用。
此外,我从节点运行此代码只是为了证明 DynamoDB 正在工作并且它确实列出了表格:
node ListTables.js
ListTables.js 的内容(与上面的代码基本相同):
var AWS = require("aws-sdk");
AWS.config.update({
region: "us-west-2",
endpoint: "http://localhost:8000",
accessKeyId: "BLAH",
secretAccessKey: "BLAH"
});
var dynamodb = new AWS.DynamoDB();
dynamodb.listTables(function(err, data) {
if (err) {
console.log("Error: ", err.code);
} else {
console.log("Table names are: ", data.TableNames);
}
});
按预期输出: 表名是:['Movies']
我之前创建该表只是为了证明 DynamoDB 确实在运行并接受来自node 的连接。
【问题讨论】:
标签: node.js amazon-web-services lambda amazon-dynamodb