
Хранение данных о вымышленных существах
Модуль 3. Сохранение информации о вымышленных существах
В этом модуле вы настроите базу данных Amazon DynamoDB для сохранения информации о вымышленных существах в центральной таблице базы данных.
Обзор
Теперь, когда у вас есть развернутый сервис и работающий конвейер CI/CD для автоматической доставки изменений в этот сервис при каждом обновлении репозитория кода, вы можете быстро перемещать новые функции приложения из концепции и предоставлять посетителям веб-сайта Mythical Mysfits доступ к ним. Благодаря этой повышенной динамичности в архитектуру веб-сайта Mythical Mysfits можно добавить еще один базовый элемент функциональности – уровень данных.
В этом модуле вы создадите таблицу в Amazon DynamoDB, управляемом и масштабируемом сервисе баз данных NoSQL от AWS, обеспечивающем чрезвычайно высокую производительность. Вместо того, чтобы сохранять все вымышленные существа в статическом файле JSON, мы сохраним их в базе данных. Это позволит расширять и масштабировать веб-сайты в дальнейшем.
Схема архитектуры

Время выполнения
20 минут
Используемые сервисы
Попробуйте сервис Github
Инструкции по внедрению
-
Шаг 1. Добавление базы данных NoSQL в приложение Mythical Mysfits
A. Создайте таблицу DynamoDB
Чтобы добавить таблицу DynamoDB в архитектуру, мы включили еще один входной файл JSON CLI, который определяет таблицу с именем MysfitsTable. У этой таблицы будет первичный индекс, определенный атрибутом хэш-ключа под названием MysfitId, и еще два вторичных индекса. Первый вторичный индекс будет иметь хэш-ключ Species и ключ типа «диапазон» MysfitId, а второй вторичный индекс будет иметь хэш-ключ Alignment и ключ типа «диапазон» MysfitId.
Эти два вторичных индекса позволят нам выполнить запросы к таблице, чтобы получить все вымышленные существа, которые соответствуют заданным ключам Species или Alignment, и включить функцию фильтра, которая, как вы, возможно, заметили, еще не работает на веб-сайте. Этот файл находится в следующем расположении: ~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json. Этот файл не требует изменений и готов к выполнению. Подробнее об индексах в базе DynamoDB и других основных понятиях см. на этой странице.
Чтобы создать таблицу с помощью интерфейса командной строки AWS, выполните следующую команду в терминале Cloud9:
aws dynamodb create-table --cli-input-json file://~/environment/aws-modern-application-workshop/module-3/aws-cli/dynamodb-table.json
После выполнения команды можно просмотреть подробные сведения о созданной таблице, выполнив в терминале следующую команду с помощью интерфейса командной строки AWS:
aws dynamodb describe-table --table-name MysfitsTable
Если выполнить следующую команду для извлечения всех элементов, сохраненных в таблице, последняя отобразится пустой:
aws dynamodb scan --table-name MysfitsTable
{ "Count": 0, "Items": [], "ScannedCount": 0, "ConsumedCapacity": null }
B: Добавьте элементы в таблицу DynamoDB
Также предоставляется файл JSON, который можно использовать для пакетной вставки нескольких элементов Mysfit в эту таблицу. Эта операция выполняется через интерфейс API BatchWriteItem базы данных DynamoDB.
Чтобы открыть этот интерфейс API с помощью предоставленного файла JSON, выполните в терминале следующую команду (в ответе сервиса должно быть указано, что все элементы обработаны):
aws dynamodb batch-write-item --request-items file://~/environment/aws-modern-application-workshop/module-3/aws-cli/populate-dynamodb.json
Теперь, если выполнить ту же команду для сканирования всего содержимого таблицы, можно увидеть, что элементы загружены в таблицу:
aws dynamodb scan --table-name MysfitsTable
-
Шаг 2. Первое настоящее изменение кода
A. Скопируйте обновленный код сервиса Flask
Данные добавлены в таблицу. Теперь следует изменить код приложения, чтобы считывать их в таблице, не вызывая статический файл JSON, который использовался в модуле 2. Мы добавили новый набор файлов Python для вашего микросервиса Flask, но сейчас вместо считывания статический файл JSON выполнит запрос в базу DynamoDB.
Запрос формируется с помощью набора средств AWS SDK для Python под названием boto3. Набор SDK – это мощное и простое средство взаимодействия с сервисами AWS через код Python. Он позволяет использовать определения и функции клиентов сервиса, сочетающиеся с интерфейсами API и командами в интерфейсе командной строки AWS, которые вы уже выполняли в ходе этого семинара. Использование набора boto3 облегчает перевод этих команд в рабочий код Python.
Чтобы скопировать новые файлы в каталог репозитория CodeCommit, выполните в терминале следующую команду:
cp ~/environment/aws-modern-application-workshop/module-3/app/service/* ~/environment/MythicalMysfitsService-Repository/service/
B. Скопируйте обновленный код сервиса Flask
Теперь необходимо проверить эти изменения кода в репозитории CodeCommit с помощью клиента командной строки git.
Выполните следующие команды, чтобы проверить изменения в новом коде и запустить конвейер CI/CD:
cd ~/environment/MythicalMysfitsService-Repository
git add .
git commit -m "Add new integration to DynamoDB."
git push
Всего через 5–10 минут, вы увидите изменения кода, выполненные через весь конвейер CI/CD сервиса CodePipeline в развернутом сервисе Flask для ядра AWS Fargate в Amazon ECS.
Вы можете открыть консоль AWS CodePipeline, чтобы увидеть, как происходят изменения в конвейере.
-
Шаг 3. Обновление контента веб-сайта в хранилище S3
В завершение требуется опубликовать новую страницу index.html в корзине S3, чтобы включить новые функции интерфейса API, использующие строки запросов для фильтрации ответов. Новый файл index.html находится в следующем расположении: ~/environment/aws-modern-application-workshop/module-3/web/index.html.
Откройте этот файл в сервисе Cloud9 IDE и замените строку с текстом REPLACE_ME, как и в модуле 2, соответствующим адресом NLB. Не забудьте добавить путь /mysfits.
При необходимости просмотрите файл, уже отредактированный в каталоге модуля 2 (/module-2/). После замены заполнителя адресом NLB загрузите новый файл index.html, выполнив следующую команду (с заменой именем корзины, созданной в модуле 1):
aws s3 cp --recursive ~/environment/aws-modern-application-workshop/module-3/web/ s3://your_bucket_name_here/
Снова зайдите на веб-сайт Mythical Mysfits, чтобы увидеть, как новые вымышленные существа загружаются из таблицы DynamoDB, и узнать, как работают функции фильтрации!
На этом модуль 3 завершен.