AWS Notes
4.75K subscribers
228 photos
30 videos
10 files
2.41K links
AWS Notes — Amazon Web Services Educational and Information Channel

Chat: https://t.me/aws_notes_chat

Contacts: @apple_rom, https://www.linkedin.com/in/roman-siewko/
Download Telegram
Работа с DynamoDB из aws-cli

scan

Предположим, в таблице много билдов разных проектов. Получим все записи таблицы с ограничением максимум 100 значений.

aws dynamodb scan --table-name jenkins --max-items 100

Это будут все проекты, можно вывести лишь нужный, например, aws-notes с помощью #query:

aws dynamodb scan --table-name jenkins --query 'Items[?jenkinsProject.S==`aws-notes`]'


query

Сделать выборку по проекту jenkinsProject - получить все билды:

aws dynamodb query --table-name jenkins --max-items 100 --key-condition-expression "jenkinsProject = :jp" --expression-attribute-values '{":jp": { "S": "aws-notes" } }'

Как найти последнее значение билда (не обязательно совпадающее с количеством записей)? Для этого сделаем реверсивную выборку и получим последний элемент, выделив его с помощью #query и сделав таблицу:

aws dynamodb query --table-name jenkins --key-condition-expression "jenkinsProject = :jp" --expression-attribute-values '{":jp": { "S": "aws-notes" } }' --no-scan-index-forward --max-items 1 --query Items[].buildNumber.N[] --output table

-------
|Query|
+-----+
| 3 |
+-----+



delete-item

Удалим билд 1 из таблицы:

aws dynamodb delete-item --table-name jenkins --key '{ "jenkinsProject": {"S": "aws-notes"}, "buildNumber": {"N": "1"} }'


delete-table

Удалим таблицу .

aws dynamodb delete-table --table-name jenkins


#DynamoDB #aws_cli
Single-Table Design with DynamoDB

Хорошая разъясняющая статья по #best_practices архитектуры для DynamoDB:

https://www.alexdebrie.com/posts/dynamodb-single-table/

Подробно описаны свойства и преимущества single-table архитектуры, а также случаи, когда это неуместно.

#DynamoDB #design
NoSQL Workbench for Amazon DynamoDB:

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/workbench.html

Клиентское приложение для разработчиков, чтобы работать с DynamoDB. Есть версия под MacOS и Windows (линуксоиды в пролёте :/ ).

Описание функционала NoSQL Workbench (ещё когда оно было в Preview):

https://aws.amazon.com/blogs/aws/nosql-workbench-for-amazon-dynamodb-available-in-preview/

#DynamoDB
​​Пример query в aws cli с фильтрацией:

aws dynamodb query --table-name jenkins \
--key-condition-expression "Project = :jp" \
--filter-expression "#repo = :ecr" \
--expression-attribute-names '{"#repo": "Repo"}' \
--expression-attribute-values '{
":jp": { "S": "my-service" },
":ecr": { "S": "888888888888.dkr.ecr.eu-central-1.amazonaws.com/my-repo" }
}'

Как-то писал, что подобных конкретных примеров по DynamoDB мало, потому стоит порекомендовать хороший сайт по ней:

https://www.dynamodbguide.com

В частности, добавлю, что его автор, Alex DeBrie (AWS Data Hero), недавно выпустил полноценную книжку:

https://www.dynamodbbook.com/

Её шибко хвалят известные господа в данной области, так что наверняка стоит прочитать, если это ваша тема или у вас много DynamoDB в проекте.

#DynamoDB #aws_cli
​​В консоли DynamoDB появился PartiQL редактор (см. картинку).

PartiQL ­- язык, запиленный Амазоном в 2019-м году для возможности работать в SQL-подобном стиле с данными любого формата:

https://aws.amazon.com/ru/blogs/opensource/announcing-partiql-one-query-language-for-all-your-data/

Или на русском на Хабре:

https://habr.com/ru/news/t/463253/

Кроме того, теперь любые изменения таблиц DynamoDB можно стримить в Kinesis.

#DynamoDB
Как удалить большой объём данных из DynamoDB:

https://medium.com/analytics-vidhya/how-to-delete-huge-data-from-dynamodb-table-f3be586c011c

Если у вас терабайты данных, то в зависимости от ситуации есть 4 варианта:
1️⃣ drop & re-create (2-4 минуты)
2️⃣ update TTL column (в течение 2 суток)
3️⃣ delete-item (тысячи записей в минуту)
4️⃣ batch-write-item (десятки тысяч записей в минуту)

#DynamoDB
DynamoDB Standard-IA:

https://aws.amazon.com/blogs/aws/new-dynamodb-table-class-save-up-to-60-in-your-dynamodb-costs/

Отличная возможность сэкономить в два с половиной раза на стоимости редко используемых объёмных таблиц DynamoDB.

Важно отметить, что данный тариф для большого объёма данных, ибо на малых и часто востребованных данных можно лишь потерять, т.к. запросы записи-чтения дороже, а первые 25 ГБ не бесплатны для нового тарифа Standard-IA.

DynamoDB Standard table class
▪️ First 25 GB stored per month is free using the DynamoDB Standard table class
▪️ $0.25 per GB-month thereafter

DynamoDB Standard-Infrequent Access (DynamoDB Standard-IA) table class
▪️ $0.10 per GB-month

#DynamoDB #cost_optimization