PropertyDefinition inconsistent
Solution 1:
The issue is that the Resources.Properties.AttributeDefinitions
key must only define columns used for indexes or keys. In other words, the keys in Resources.Properties.AttributeDefinitions
must match the same keys defined in Resources.Properties.KeySchema
.
AWS docs:
AttributeDefinitions: A list of AttributeName and AttributeType objects that describe the key schema for the table and indexes.
so the resulting template would look like this:
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "DB Description",
"Resources" : {
"TableName" : {
"Type" : "AWS::DynamoDB::Table",
"Properties" : {
"AttributeDefinitions": [ {
"AttributeName" : "ID",
"AttributeType" : "S"
} ],
"ProvisionedThroughput":{
"ReadCapacityUnits" : 1,
"WriteCapacityUnits" : 1
},
"KeySchema": [
{
"AttributeName": "ID",
"KeyType": "HASH"
}
] ,
"TableName": "table5"
}
}
}
}
Solution 2:
The accepted answer is correct in the cause of the error, but you said you wanted the sort key to be Value
. So you should change your CloudFormation to include that:
{
"AWSTemplateFormatVersion" : "2010-09-09",
"Description" : "DB Description",
"Resources" : {
"TableName" : {
"Type" : "AWS::DynamoDB::Table",
"Properties" : {
"AttributeDefinitions": [ {
"AttributeName" : "ID",
"AttributeType" : "S"
}, {
"AttributeName" : "Value",
"AttributeType" : "S"
} ],
"KeySchema": [
{
"AttributeName": "ID",
"KeyType": "HASH"
},
{
"AttributeName": "Value",
"KeyType": "RANGE"
}
]
},
"TableName": "TableName"
}
}
}