4

У меня есть следующий шаблон, который я использую в пользовательском интерфейсе cloudformation для создания таблицы dynamoDB. Я хочу, чтобы создать таблицу с PrimaryKey как ID и SortKey в ЗначениеPropertyDefinition непоследовательный

{ 
    "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 UI, я нажимаю на новый стек, выберите файл template из моего локального компьютера, дайте стек имя и нажмите «Далее». Через некоторое время, я получаю ошибку, что говорит собственности AttributeDefinitions несовместим с KeySchema таблицы и вторичных индексов

+0

Возможный дубликат [CloudFormation настаивает мое творение DynamoDB JSON недействительный .. но я не могу видеть, как] (HTTP: // StackOverflow. com/questions/38142870/cloudformation-insists-my-dynamodb-creation-json-is-invalid-but-i-cant-see-h) – wjordan

ответ

7

Проблема в том, что атрибуты только определить столбцы, используемые для индексов или ключей.

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

Если мы удалим атрибут 'value' из атрибутов AttributeDefinitions, как мы можем добавить значение 'столбец к таблице? – Dilantha

+0

https://stackoverflow.com/questions/25606135/how-to-add-a-column-in-dynamodb После исследования нет необходимости определять все ваши столбцы при создании таблицы, только индексы, тогда вы может добавлять атрибуты «в пути» при вставке новой строки – ThomasP1988

+0

https://stackoverflow.com/questions/47385177/serverless-framework-dynamo-db-table-resource-definition-with-sort-key другой ответ, который объясняет, что – ThomasP1988

 Смежные вопросы

  • Нет связанных вопросов^_^