DynamoDB - это хранилище данных без схемы, поэтому обычно нет необходимости объявлять атрибуты заранее.
Исключением является любой атрибут, который действует как ключ либо для самой таблицы (первичный ключ, ключ сортировки), либо для вторичного индекса. Они должны быть определены как часть определения таблицы, потому что DynamoDB должен знать, как структурировать необходимые индексы для эффективного запроса по этим атрибутам.
Это более подробно упомянуто в документации:
Определить только те атрибуты на объекте таблицы, которые будут использоваться
как:
- Ключ хэша таблицы или ключ диапазона
- Хэш-ключ LSI или GSI или ключ диапазона
Три атрибута UserId
, GameTitle
и TopScore
из примера используются для индексов hash_key
, range_key
и GameTitleIndex
соответственно, и поэтому они должны быть приняты.
Чтобы установить атрибут, который не является ключом, вам просто нужно включить его при записи элемента в таблицу. DynamoDB сохранит этот результат и вернет его при получении элемента, но вы не сможете использовать его в качестве фильтра или ключа сортировки при запросе таблицы.