【问题标题】:AWS Lambda, DynamoDB unable to delete objectAWS Lambda,DynamoDB 无法删除对象
【发布时间】:2017-08-13 20:01:06
【问题描述】:

这是我的 lambda 函数

var AWS = require("aws-sdk");
var dynamodb = new AWS.DynamoDB();
var docClient = new AWS.DynamoDB.DocumentClient();
exports.handler = (event, context, callback) => {

var params = {
    TableName: 'xx',
    Key: {
        project_id : event.id,
        name: event.name
    }
};

docClient.delete(params, function(err, data) {
    if (err) {
        console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
    } else {
         callback(null, data);
     }}
 );
};

我的测试事件是

{
"id": "1490022172442",
"name":"xcv"
}

我仍然收到错误“提供的关键元素与架构不匹配”。 POST 和 GET 运行良好,但我被困在这里。

【问题讨论】:

  • 您的表是否将 project_id 定义为哈希键并将名称定义为排序键? GET 和 POST 工作正常是什么意思?你的意思是创建项目和获取项目工作正常吗?
  • 就是这个原因,我错过了排序键!

标签: node.js amazon-web-services lambda amazon-dynamodb


【解决方案1】:

下面给出了一个代码sn-p,用于删除只有主键且没有提供排序键的项目

ar AWS = require("aws-sdk");
var dynamodb = new AWS.DynamoDB();
var docClient = new AWS.DynamoDB.DocumentClient();
exports.handler = (event, context) => {
console.log('event= ' + JSON.stringify(event));
console.log('context= ' + JSON.stringify(context));

var params = {
TableName: 'TableName',
Key: {
    kundeId : event.kundeId,
    name: event.name
}
};

docClient.delete(params, function(err, data) {
if (err) {
    console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
} else {
     console.log("DEBUG:  deleteItem worked. ");
    context.succeed(data);

 }}
 );
 };

【讨论】:

    【解决方案2】:

    为了从 DynamoDB 表中删除项目,您必须在键属性中提供分区键和排序键。如果您在键属性上包含排序键,它应该可以工作。

    【讨论】:

    • 有没有其他方法可以只使用索引键来获取项目?
    猜你喜欢
    • 2015-04-09
    • 1970-01-01
    • 2021-11-24
    • 2021-07-29
    • 2017-12-31
    • 2021-06-28
    • 1970-01-01
    • 2022-10-18
    • 1970-01-01
    相关资源
    最近更新 更多