PropertyDefinition несовместим
У меня есть следующий шаблон, который я использую в пользовательском интерфейсе cloudformation для создания таблицы dynamoDB. Я хочу создать таблицу с PrimaryKey как ID и sortKey как значение
{
"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"
}
]
},
"TableName": "TableName"
}
}
}
В интерфейсе CF, я нажимаю на новый стек, укажу на файл template
с моего локального компьютера, дайте стек имя и нажмите далее. После некоторого времени я получаю сообщение об ошибке Property AttributeDefinitions несовместимо с KeySchema таблицы и вторичными индексами
Ответы
Ответ 1
Проблема состоит в том, что ключ Resources.Properties.AttributeDefinitions
должен определять только столбцы, используемые для индексов или ключей. Другими словами, ключи в Resources.Properties.AttributeDefinitions
должны соответствовать тем же ключам, которые определены в Resources.Properties.KeySchema
.
Документы AWS:
AttributeDefinitions: список объектов AttributeName и AttributeType, которые описывают схему ключей для таблицы и индексов.
итоговый шаблон будет выглядеть так:
{
"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"
}
}
}
}
Ответ 2
Я изучаю DynamoDB, и я создаю таблицу ниже, и я получаю ошибку "Свойство AttributeDefinitions несовместимо с KeySchema таблицы и вторичных индексов". Может кто-нибудь подсказать, что я здесь делаю не так.
{
"DDBTable": {
"Type": "AWS::DynamoDB::Table",
"Properties": {
"AttributeDefinitions": [
{
"AttributeName": "SchoolId",
"AttributeType": "N"
},
{
"AttributeName": "Name",
"AttributeType": "S"
},
{
"AttributeName": "Address",
"AttributeType": "S"
},
{
"AttributeName": "City",
"AttributeType": "S"
}
],
"TableName": "School",
"KeySchema": [
{
"AttributeName": "SchoolId",
"KeyType": "HASH"
},
{
"AttributeName": "Name",
"KeyType": "RANGE"
}
],
"LocalSecondaryIndexes": [
{
"IndexName": "LastPostIndex",
"KeySchema": [
{
"AttributeName": "SchoolId",
"KeyType": "HASH"
},
{
"AttributeName": "City",
"KeyType": "RANGE"
}
],
"Projection": {
"ProjectionType": "KEYS_ONLY"
}
}
],
"ProvisionedThroughput": {
"ReadCapacityUnits": 5,
"WriteCapacityUnits": 5
},
"Tags": [
{
"Key": "Owner",
"Value": "BlueTeam"
}
]
}