ПР. Загрузка данных, выполнение запросов 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 вам понадобится создать сервисный аккаунт в облаке.
Выберите вкладку Сервисные аккаунты в каталоге, где расположена БД.
image
Нажмите кнопку Создать сервисный аккаунт.
Введите имя сервисного аккаунта. Чтобы назначить сервисному аккаунту роль на текущий каталог, нажмите Добавить роль и выберите роль, например editor.
image
Нажмите кнопку Создать.
image
Выберите созданный сервисный аккаунт и нажмите на строку с его именем. Нажмите кнопку Создать новый ключ на верхней панели. Выберите пункт Создать статический ключ доступа.
Сохраните идентификатор и секретный ключ.
image

Работа с 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.
image

Добавление данных в таблицу

Добавьте в таблицу две строки 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-режиме.