Aws lambda 如何使用DynamoDB调用单个项目?

Aws lambda 如何使用DynamoDB调用单个项目?,aws-lambda,amazon-dynamodb,aws-sdk,aws-sdk-nodejs,Aws Lambda,Amazon Dynamodb,Aws Sdk,Aws Sdk Nodejs,我正在尝试调用DynamoDB的getItem。我使用的是文档中的代码示例,但是,我得到的全部是null 我有一个名为table的表 我有一个主分区键为id(number)的表行 我没有主排序键 Lambda函数具有Allow:dynamodb:GetItem 我的项id为123的附加了几行,我想在控制台日志中检索它们 // Load the AWS SDK for Node.js var AWS = require('aws-sdk'); // Set the region AWS.co

我正在尝试调用DynamoDB的
getItem
。我使用的是文档中的代码示例,但是,我得到的全部是null

  • 我有一个名为
    table
    的表
  • 我有一个主分区键为
    id
    (number)的表行
  • 我没有主排序键
  • Lambda函数具有
    Allow:dynamodb:GetItem
我的
id为
123
附加了几行,我想在控制台日志中检索它们

// Load the AWS SDK for Node.js
var AWS = require('aws-sdk');
// Set the region 
AWS.config.update({ region: 'eu-central-1' });

exports.handler = async (event) => {

  // Create the DynamoDB service object
  ddb = new AWS.DynamoDB({ apiVersion: '2012-10-08' });

  var params = {
    TableName: 'table',
    Key: {
      'id': { N: '123' },
    }
  };

  // Call DynamoDB to read the item from the table
  ddb.getItem(params, function (err, data) {
    if (err) {
      console.log("Error", err);
    } else {
      console.log("Success", data.Item);
    }
  });

};

getItems调用是异步的,并且Lambda函数在dynamodb调用返回结果之前完成,因此没有记录任何内容。您的实际数据库调用可能工作正常


您的getItems调用是异步的,并且在dynamodb调用返回结果之前,Lambda函数已经完成,因此没有记录任何内容。您的实际数据库调用可能工作正常


这是我的lambda函数的示例(请将执行环境更改为Node.js 6.10以及表和id名称和值)。这样做有效,并记录一些信息。请试试

'use strict';

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

exports.handler = (event, context, callback) => {
    var params = {
        TableName: "trans",
        Key: {
            "transid": {"S": "Bk6ZQF0Q7"}
        }
    };

    console.log("Attempting a call getitem...");

    dbCon.getItem(params, function (err, data) {
        if (err) {
            console.error("Unable to getItem. Error JSON:", JSON.stringify(err, null, 2));
        }
        else {
            console.log("getItem succeeded:", JSON.stringify(data, null, 2));
        }
    });

    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    }; 

    callback(null, response); 
};

这是我的lambda函数的示例(请将executionenv更改为Node.js 6.10以及table和id名称和值)。这样做有效,并记录一些信息。请试试

'use strict';

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

exports.handler = (event, context, callback) => {
    var params = {
        TableName: "trans",
        Key: {
            "transid": {"S": "Bk6ZQF0Q7"}
        }
    };

    console.log("Attempting a call getitem...");

    dbCon.getItem(params, function (err, data) {
        if (err) {
            console.error("Unable to getItem. Error JSON:", JSON.stringify(err, null, 2));
        }
        else {
            console.log("getItem succeeded:", JSON.stringify(data, null, 2));
        }
    });

    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    }; 

    callback(null, response); 
};
这是我的lambda示例,您可以尝试一下



这是我的lambda示例,您可以尝试一下

那么什么是cosole.log生产?guzial我一个都没有。那么什么是cosole.log生产?guzial我一个都没有。谢谢你善良的灵魂。我明天会查出来喔:)我看到你后来接受了和我一样的答案:)哦,该死,我欠你因果报应。很抱歉。喝杯啤酒吧,谢谢你善良的灵魂。我明天会查出来喔:)我看到你后来接受了和我一样的答案:)哦,该死,我欠你因果报应。很抱歉。取而代之的是,你没有使用exports.handler(导出处理程序)
?这是一个简单的节点…但是你可以在exports.handler(导出处理程序)中添加此节点。如果没有明显的句柄代码,则无法在Lambda上运行。你可以提供一个在Lambda上运行的示例吗?这是我有问题的部分。你当前的例子与我在问题中所发布的几乎相同。谢谢你。@很抱歉我很忙。.现在有空了,它工作了吗?或者现在我可以给你一个正确的答案那太好了…我很高兴…任何时候都可以寻求帮助aws和docker angular和node你没有使用
exports.handler
?这是一个简单的节点…但是你可以在exports.handler.中添加这个。如果没有handle代码,显然不能在Lambda上运行,你可以提供一个在Lambda上运行的示例吗?这是我有问题的部分。你当前的例子与我在问题中所发布的几乎相同。谢谢你。@很抱歉我很忙。.现在有空了,它工作了吗?或者现在我可以给你适当的回答,那太好了…我的荣幸…随时都可以向aws和docker angular and node寻求帮助