Мое устройство собирает некоторые данные и отправляет его AWS, используя свой интерфейс IoT MQTT.
Моя лямбда читает данные и сохраняет их в DynamoDB.
Ниже приведен пример записи в моем динамо, где timeStamp является основным ключом раздела.
Item{3}
message String: DOWN
payloadMap{4}
direction String: -
message String: DOWN
timeStamp String: 2018-08-30 07:18:09.247373
value String: -70.0000
timeStamp String: 2018-08-30 07:18:09.247373
Затем я пытаюсь запросить динамо в моем приложении для небольших узлов, и я не могу получить доступ к данным, используя следующий скрипт:
dynamodb.getItem({
TableName: 'myTableName',
Key: {
'timeStamp' : {'S': '2018-08-30 07:18:09.247373'}
}
},(err,result)=>{
if(err){
console.log(err);
}
else {
console.log('success');
}
});
Ниже моя инициализация DynamoDB:
function initDynamoAWS(){
AWS.config.apiVersion = {dynamodb: '2012-08-10'};
AWS.config.update({accessKeyId:access_key_id,
secretAccessKey:secret_access_key,
region:'us-west-2'});
dynamodb = new AWS.DynamoDB({ARN:ARN});
}
Все учетные данные в порядке, так как я могу получить DynamodB.describeTable со всеми подробностями, но я не могу получить один элемент из моей таблицы, но все, что я могу получить, это «Ошибка: предоставленный ключевой элемент не соответствует схеме».
Чего мне не хватает?
Когда я изменил код на:
let params = {};
let key = {'timeStamp' :'2018-08-30 07:18:09.247373'};
params.TableName = 'myTableName';
params.Key = key;
dynamodb.getItem(params,(err,result)=>{
if(err){
// debugger;
console.log(err);
}
else {
console.log('success');
}
});
Я получаю другую ошибку:
"InvalidPatemeterType: ожидается, что params.Key ['timeStamp'] будет структурой"
"UnexpectedPatameter: в params найден неожиданный ключ '0'. Ключ ['timeStamp']" ... и та же ошибка для чисел до 25.
Я могу получить ниже подробную информацию о своей таблице из AWS через "описать таблицу"
Table : AttributeDefinitions :
Array(2)
0 : AttributeName : "message"
AttributeType : "S"
1 : AttributeName : "timeStamp"
AttributeType : "S"
ItemCount : 42
TableSizeBytes : 5434 TableStatus : "ACTIVE"
KeySchema:
Array(2)
0:{AttributeName: "timeStamp", KeyType: "HASH"}
1:{AttributeName: "message", KeyType: "RANGE"}