Хорошо, я не понимал, схема для создания таблицы была настолько сложной.Методом проб и ошибок с локальной DynamoDB он сказал мне, что для KeySchema должны существовать AttributeDefinitions.Именно эта схема ключей определяет имена «первичных» ключей, а типы находятся в совершенно отдельном поле.
Объект конструктора НЕ заполняет таблицу, он только устанавливает начальный раздел (первичный?) Ключи необязательный ключ сортировки, который сформирует составной ключ.
var AWS = require('aws-sdk');
AWS.config.update({
region: 'us-west-2',
endpoint: 'http://localhost:8000'
});
var db = new AWS.DynamoDB();
var awaitTable = db.describeTable({ TableName: 'app-content' }).promise();
awaitTable.catch(e => {
if (e.statusCode === 400) {
return db.createTable({
TableName: 'app-content',
KeySchema: [
{ 'AttributeName' : 'fooPartitionKeyName', 'KeyType' : 'HASH' },
{ 'AttributeName' : 'barSortKeyName', 'KeyType' : 'RANGE' }
],
AttributeDefinitions: [
{ 'AttributeName' : 'fooPartitionKeyName', 'AttributeType' : 'S' },
{ 'AttributeName' : 'barSortKeyName', 'AttributeType' : 'S' }
],
ProvisionedThroughput: {
ReadCapacityUnits: 5,
WriteCapacityUnits: 5,
},
}).promise();
} else { return Promise.reject('Unknown error fetching table.') }
}).then(table => {
console.log('table!', table);
});