Интерфейс командной строки AWS, DynamoDB добавляет атрибут ко всей таблице

#amazon-dynamodb #aws-cli

#amazon-dynamodb #aws-cli

Вопрос:

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

В этих примерах всегда используется индекс:

 aws dynamodb update-item 
--region MY_REGION 
--table-name MY_TABLE_NAME 
--key='{"AccountId": {"S": accountId}}' 
--update-expression 'SET conf=:newconf' 
--expression-attribute-values '{":newconf":{"S":"new conf value"}}'
 

Кроме того, это обновление для атрибута, который уже есть в таблице.

Как можно добавить новый атрибут к каждой записи таблицы?

Комментарии:

1. —обновление -НАБОР выражений автоматически добавит новый атрибут, если он не существует

Ответ №1:

Не существует API, который автоматически добавлял бы атрибут ко всем элементам таблицы. DynamoDB просто так не работает.

Единственный способ добавить атрибут ко всем элементам в таблице — это просканировать таблицу и для каждого элемента выполнить запрос updateItem, чтобы добавить нужный атрибут. Это можно сделать для отсутствующих атрибутов (т.Е. Добавить Новые) или атрибутов, которые уже существуют и только обновляются.

Некоторые предостережения:

  • Если таблица небольшая и обновляется не слишком часто, это может сработать, как задумано, за один проход
  • Если таблица больше и обновляется относительно быстро (т.е. каждую секунду), то вам нужно будет убедиться, что код, обновляющий таблицу, также добавляет атрибут к новым элементам или обновляемым элементам и что обновления не сбиваются
  • Наконец, если таблица большая, это может занять МНОГО места из-за сканирования и обновления для каждого элемента, поэтому планируйте, что это займет много времени (также учитывайте потребляемую емкость и выделенную емкость) — лучше иметь некоторое ограничение скорости в сценарии обновления