AWS-其中一个必需的密钥没有给定值

AWS - One of the required keys was not given a value

本文关键字:密钥 一个 AWS-      更新时间:2023-09-26

AWS新手,尝试将数据放入表中。在阅读了文档并尝试遵循示例之后,我遇到了这个验证错误。

One of the required keys was not given a value

我的代码:

var conf = require("/directory");
var AccessKey = 'supersecretkey';
var SecretKey = 'supersecretkey';
var tableName = conf.tableCS;
var AWS = require('aws-sdk');
console.log("Endpoint: " + conf.endpoint);
AWS.config.update({
    accessKeyId: AccessKey,
    secretAccessKey: SecretKey,
    region: conf.region,
    endpoint: conf.endpoint
});
var docClient = new AWS.DynamoDB.DocumentClient();
var file = process.argv[2];
console.log("File: " + file);
var csv = require("fast-csv");
csv.fromPath(file)
    .on("data", function(data) {
        // Uncomment to see CSV data
        // console.log(data);
        var arrayLength = data.length;
        for (var i = 0; i < arrayLength; i++) {
            // console.log(data[i]);
            var params = {
                TableName: tableName,
                Key: {
                       RefID: data
                }
            };
            console.log("Adding a new item...");
            docClient.put(params, function(err, data) {
                if (err) {
                    console.error("Unable to add item. Error JSON:", JSON.stringify(err, null, 2));
                }
                else {
                    console.log("Added item:", JSON.stringify(data, null, 2));
                }
            });
            // Looping through, now putItem into database
        }
    })
    .on("end", function() {
        console.log("done");
    });

我发现了这个,但不了解range的关键部分。我在下面的代码中创建表,并且有hash键,但没有range键。这是我的问题吗?我将如何制作范围键?

var conf = require("/directory");
var AccessKey = 'supersecretkey';
var SecretKey = 'supersecretkey';
var tableName = conf.tableCSV;
// Take input from command line
process.argv.forEach(function(val, index, array) {
    console.log(index + ': ' + val);
});
console.log("Table: " + tableName);
var AWS = require('aws-sdk');
console.log("Endpoint: " + conf.endpoint);
AWS.config.update({
    accessKeyId: AccessKey,
    secretAccessKey: SecretKey,
    region: conf.region,
    endpoint: conf.endpoint
});
var dynamodb = new AWS.DynamoDB();
var params = {
    TableName: tableName,
    KeySchema: [{
        AttributeName: 'RefID',
        KeyType: 'HASH'
    }],
    AttributeDefinitions: [{
        AttributeName: 'RefID',
        AttributeType: 'S'
    }],
    ProvisionedThroughput: {
        ReadCapacityUnits: 1,
        WriteCapacityUnits: 1
    }
};
dynamodb.createTable(params, function(err, table) {
    if (err) {
        console.log(err);
    }
    else {
        console.log("TABLED CREATED");
        console.log(table);
    }
});

在表定义中,您将键命名为Ref-ID,但在put操作中,您命名的是键Info。如果您的表有一个名为Ref-ID的哈希键,那么您插入的每个记录都需要一个Ref-ID的值。