【问题标题】:How to scan the dynamodb table form the AWS Lambda function如何从 AWS Lambda 函数中扫描 dynamodb 表
【发布时间】:2020-10-09 01:10:33
【问题描述】:

我正在尝试从我的以下代码中扫描 Dynamodb 表,谁能指导我这里出了什么问题。

const AWS = require("aws-sdk");
const dynamodb = new AWS.DynamoDB({
  region: "eu-west-1",
  apiVersion: "2012-08-10"
});

exports.handler = async (event, callback) => {
   const params = {
    TableName: "job_Status"
  };
  
  dynamodb.scan(params, (err, data) => {
      
    if (err) {
      console.log(err);
      callback(err);
    } else {
      console.log(data);
      callback(null, data);
      
    }
  });
};

我已经为函数赋予了完整的 dynamodb 访问角色,但它仍然给了我空响应。知道这里有什么问题吗?

回应:

我尝试使用 dynaomClient,但它也不起作用。

    const AWS = require("aws-sdk");

const db = new AWS.DynamoDB.DocumentClient({
   region : 'eu-west-1' 
});

exports.handler = async (event, callback) => {
   const params = {
    TableName: "job_Status"
  };
  
  db.scan(params, (err, data) => {
      
    if (err) {
      console.log(err);
      callback(err);
    } else {
      console.log(data);
      callback(null, data);
      
    }
  });
};

【问题讨论】:

标签: amazon-web-services aws-lambda amazon-dynamodb


【解决方案1】:

您的 Lambda 函数是异步的,但您的代码使用回调。到达回调时,您的函数已经被终止,因为它是异步运行的。我推测您看到的 null 输出是 Lambda 函数的返回值,而不是您的 console.log

将您的调用替换为以下内容:

try{
  let results = await db.scan(params).promise()
  console.log(results);
} catch(err){
  console.log(err)
}

有关更多信息,请查看有关 working with promises 的 AWS 文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-15
    • 2023-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-15
    • 1970-01-01
    相关资源
    最近更新 更多