首页 > 解决方案 > 如何从 AWS Lambda 函数中扫描 dynamodb 表

问题描述

我正在尝试从我的以下代码中扫描 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-servicesaws-lambdaamazon-dynamodb

解决方案


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

将您的扫描电话​​替换为以下内容:

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

有关更多信息,请查看有关使用Promise 的 AWS 文档。


推荐阅读