DynamoDB docClient扫描不响应

问题描述

我使用无服务器在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()

并检查结果,也许图片变得清晰了。