ПР. Загрузка данных, выполнение запросов AWS CLI
Кратко:
- Работа с AWS CLI для работы с AWS DynamoDB.
- Создание сервисного аккаунта и ключа доступа.
- Установка AWS CLI и настройка для работы с базой данных.
- Создание таблицы с помощью AWS DynamoDB CLI.
- Добавление данных в таблицу с помощью AWS DynamoDB CLI.
- Чтение данных из таблицы с помощью AWS DynamoDB CLI.
- Удаление таблицы с помощью AWS DynamoDB CLI.
Практика. Загрузка данных, выполнение запросов AWS CLI
На предыдущем уроке мы рассмотрели, как работать с YDB через Document API — низкоуровневый HTTP API, совместимый с AWS DynamoDB API. В этом уроке рассмотрим операции создания таблицы, записи, чтения, изменения и удаления данных в таблице с помощью AWS CLI.
Сервисный аккаунт и ключ доступа
Для работы инструментов AWS вам понадобится создать сервисный аккаунт в облаке.
Выберите вкладку Сервисные аккаунты в каталоге, где расположена БД.

Нажмите кнопку Создать сервисный аккаунт.
Введите имя сервисного аккаунта. Чтобы назначить сервисному аккаунту роль на текущий каталог, нажмите Добавить роль и выберите роль, например
editor
.
Нажмите кнопку Создать.

Выберите созданный сервисный аккаунт и нажмите на строку с его именем. Нажмите кнопку Создать новый ключ на верхней панели. Выберите пункт Создать статический ключ доступа.
Сохраните идентификатор и секретный ключ.

Работа с AWS CLI
Установите AWS CLI с сайта https://aws.amazon.com/ru/cli/.
Для Windows: загрузите и запустите 64- или 32-разрядный установщик.
Для Mac и Linux: установите AWS CLI с помощью утилиты pip (требуется Python 2.6.5 или более поздней версии).
pip install awscli
Для настройки AWS CLI запустите команду:
aws configure
Введите сохраненные значения идентификатора ключа
AWS Access Key ID
и ключа AWS Secret Access Key
и укажите ru-central1
в качестве Default region name.Убедитесь, что в качестве переменной окружения
ENDPOINT
указано корректное значение эндпойнта вашей базы данных, либо добавьте его, как вы это делали в прошлом уроке: сохраните значение эндпойнта, указанное в строке Document API эндпоинт, в переменной окружения с помощью команды
export ENDPOINT=<значение endpoint>
Создание таблицы
Создайте таблицу с помощью команды:
aws dynamodb create-table \
--table-name docapitest/series \
--attribute-definitions \
AttributeName=series_id,AttributeType=N \
AttributeName=title,AttributeType=S \
--key-schema \
AttributeName=series_id,KeyType=HASH \
AttributeName=title,KeyType=RANGE \
--endpoint $ENDPOINT
Убедитесь, что в директории
docapitest
появилась таблица series
.
Добавление данных в таблицу
Добавьте в таблицу две строки c помощью команд:
aws dynamodb put-item \
--table-name docapitest/series \
--item '{"series_id": {"N": "1"}, "title": {"S": "IT Crowd"}, "series_info": {"S": "The IT Crowd is a British sitcom produced by Channel 4, written by Graham Linehan, produced by Ash Atalla and starring Chris ODowd, Richard Ayoade, Katherine Parkinson, and Matt Berry."}, "release_date": {"S": "2006-02-03"}}' \
--endpoint $ENDPOINT
и
aws dynamodb put-item \
--table-name docapitest/series \
--item '{"series_id": {"N": "2"}, "title": {"S": "Silicon Valley"}, "series_info": {"S": "Silicon Valley is an American comedy television series created by Mike Judge, John Altschuler and Dave Krinsky."}, "release_date": {"S": "2014-04-06"}}' \
--endpoint $ENDPOINT
Чтение данных из таблицы
Для того чтобы прочитать данные из таблицы, выполните команду:
aws dynamodb get-item --consistent-read \
--table-name docapitest/series \
--key '{"series_id": {"N": "1"}, "title": {"S": "IT Crowd"}}' \
--endpoint $ENDPOINT
В качестве вывода вы увидите:
{
"Item": {
"release_date": {
"S": "2006-02-03"
},
"series_id": {
"N": "1"
},
"series_info": {
"S": "The IT Crowd is a British sitcom produced by Channel 4, written by Graham Linehan, produced by Ash Atalla and starring Chris ODowd, Richard Ayoade, Katherine Parkinson, and Matt Berry."
},
"title": {
"S": "IT Crowd"
}
}
}
Для того, чтобы выбрать данные из таблицы
series
по ключу series_id
, выполните следующую команду:
aws dynamodb query \
--table-name docapitest/series \
--key-condition-expression "series_id = :name" \
--expression-attribute-values '{":name":{"N":"2"}}' \
--endpoint $ENDPOINT
В качестве результата вы увидите:
{
"Items": [
{
"release_date": {
"S": "2014-04-06"
},
"series_id": {
"N": "2"
},
"series_info": {
"S": "Silicon Valley is an American comedy television series created by Mike Judge, John Altschuler and Dave Krinsky."
},
"title": {
"S": "Silicon Valley"
}
}
],
"Count": 1,
"ScannedCount": 1,
"ConsumedCapacity": null
}
Удаление таблицы
aws dynamodb delete-table \
--table-name docapitest/series \
--endpoint $ENDPOINT
На следующем практическом занятии мы разберём пример использования AWS SDK для работы с YDB в serverless-режиме.