问题描述
我使用无服务器在Lambda函数上将DynamoDB与nodeJS一起使用。 当我从本地计算机扫描项目时,它可以工作,但是当我部署功能扫描时,它没有响应。没有错误
const docclient = new AWS.DynamoDB.DocumentClient({
apiVersion: "2012-08-10",});
const checkApiKey = async (apiKey,) => {
try {
log.debug("before scan");
let result = await docclient
.scan({
"MY_TABLE",FilterExpression: "#apiKey = :apiKey",ExpressionAttributeNames: {
"#apiKey": "apiKey",},ExpressionAttributeValues: { ":apiKey": apiKey },})
.promise();
log.debug("after scan");
} catch (error) {
log.error("Can not get dynamo object",{ message: error.message });
throwError(error);
}
};
当我在AWS上调用此函数时,可以在日志before scan
中看到,但看不到after scan
或catch发出的错误消息。
DynamoDB操作(例如“创建”)工作正常。
几天来我一直在寻找解决方案……没有成功
解决方法
我不确定这是否是导致您出现问题的原因,但首先引起我注意的是您如何在扫描调用中定义表名:
.scan({
"MY_TABLE",...
根据文档,它应该是键/值对
.scan({
TableName: "MY_TABLE",...
如果您使用的是无服务器框架,那么运行本地功能和远程功能会得到不同的结果吗?
例如,从命令行在本地运行该功能:
sls invoke local --function <FUNCATION NAME from serverless.yml>
从命令行远程(在AWS中)运行该功能
sls invoke --function <FUNCATION NAME from serverless.yml>
,
请尝试添加对public MainWindow()
{
InitializeComponent();
Test.TouchDown += Test_TouchDown;
}
private void Test_TouchDown(object sender,TouchEventArgs e)
{
var point = e.GetTouchPoint(this);
var size = point.Size // Why I have 0?
}
的承诺的回调
我的意思是:
await docClient.scan().promise()
并检查结果,也许图片变得清晰了。