Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js AWS Lambda和DynamoDB零响应_Node.js_Amazon Web Services_Aws Lambda_Amazon Dynamodb - Fatal编程技术网

Node.js AWS Lambda和DynamoDB零响应

Node.js AWS Lambda和DynamoDB零响应,node.js,amazon-web-services,aws-lambda,amazon-dynamodb,Node.js,Amazon Web Services,Aws Lambda,Amazon Dynamodb,我试图从Lambda函数写入DynamoDB表。当我测试运行该函数时,它返回null,没有错误消息,也没有任何内容写入表中。函数如下所示。我已经使用允许访问“产品”表的权限策略为此功能设置了服务角色。我看到一些教程提到创建一个“AWS Lambda应用程序”,然后创建Lambda函数,但我不认为这对我的使用是必要的 const AWS = require('aws-sdk'); const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'

我试图从Lambda函数写入DynamoDB表。当我测试运行该函数时,它返回null,没有错误消息,也没有任何内容写入表中。函数如下所示。我已经使用允许访问“产品”表的权限策略为此功能设置了服务角色。我看到一些教程提到创建一个“AWS Lambda应用程序”,然后创建Lambda函数,但我不认为这对我的使用是必要的

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

exports.handler = async (event, context, callback) => {

  dynamodb.putItem({
      TableName: "Products",
      Item: {
          "sku": {S: "29574839"},
          "name": {S: "Test Code"}
      }
  }, function(err, data) {
      if (err) {
          console.log(err, err.stack);
          return callback(null, {
              statusCode: '500',
              body: err
          });
      } else {
          return callback(null, {
              statusCode: '200',
              body: 'Adding to table!'
          });
      }
  });

};
我还尝试使用DocumentClient
constdocclient=newdynamodb.DocumentClient(),我得到错误:“dynamodb.DocumentClient不是构造函数”

我错过了什么?谢谢

CloudWatch日志显示(我删除了请求id): 功能日志: 开始请求ID:版本:$LATEST 结束请求ID: REPORT RequestId:Duration:491.07毫秒计费持续时间:500毫秒内存大小:128 MB最大使用内存:87 MB初始持续时间:405.37毫秒因为您正在使用,我认为问题在于您的函数在处理程序的主体有机会运行之前完成

纠正这种情况的一种方法是使用
Promise
,如中所示。例如:

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

exports.handler = async (event, context, callback) => {

    const promise = new Promise(function(resolve, reject) {

      dynamodb.putItem({
          TableName: "Products",
          Item: {
              "sku": {S: "29574839"},
              "name": {S: "Test Code"}
          }
      }, function(err, data) {
          if (err) {
              console.log(err, err.stack);
              return callback(null, {
                  statusCode: '500',
                  body: err
              });
          } else {
              return callback(null, {
                  statusCode: '200',
                  body: 'Adding to table!'
              });
          }
      });
  })

  return promise;   
};

以上更改仅为示例性更改,因此可能仍需要进行一些调整。

您检查了cloudwatch日志吗?@NishuTayal我在问题中添加了这一点。它们似乎没有显示任何有用的东西。谢谢!成功了!我还可以删除'async',它可以按原样工作。我应该注意到的!