#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, чтобы добавить нужный атрибут. Это можно сделать для отсутствующих атрибутов (т.Е. Добавить Новые) или атрибутов, которые уже существуют и только обновляются.
Некоторые предостережения:
- Если таблица небольшая и обновляется не слишком часто, это может сработать, как задумано, за один проход
- Если таблица больше и обновляется относительно быстро (т.е. каждую секунду), то вам нужно будет убедиться, что код, обновляющий таблицу, также добавляет атрибут к новым элементам или обновляемым элементам и что обновления не сбиваются
- Наконец, если таблица большая, это может занять МНОГО места из-за сканирования и обновления для каждого элемента, поэтому планируйте, что это займет много времени (также учитывайте потребляемую емкость и выделенную емкость) — лучше иметь некоторое ограничение скорости в сценарии обновления