“Let’s Go! Media Inc. потрібно управляти та відслідковувати інформацію про їх медіа-контент, включаючи метадані, рейтинги та інші релевантні деталі. Компанія вирішила використовувати AWS DynamoDB для зберігання та управління даними про медіа-контент, щоб задовольнити цю потребу.
Вони створюють таблицю DynamoDB і додають інформацію про останні релізи фільмів. Щоб забезпечити безпечний доступ до таблиці DynamoDB, створіть EC2 інстанцію та налаштуйте її з мінімально необхідними дозволами, щоб лише авторизовані користувачі могли отримувати доступ до даних у таблиці, і не було ризику несанкціонованих змін.” - Level Up In Tech, CDA05-DynamoDB
Що таке DynamoDB і чому його варто використовувати?
AWS DynamoDB — це повністю керована NoSQL база даних. DynamoDB автоматично масштабується для обробки великих обсягів даних і високої пропускної здатності, забезпечуючи постійну продуктивність, коли ваш додаток розвивається. Її серверлесс-архітектура означає, що ви платите тільки за використані ресурси, що робить її економічно вигідною для змінних навантажень. З такими функціями, як глобальні таблиці для мульти-регіональної реплікації, вбудована безпека через AWS Identity and Access Management (IAM) і інтеграція з іншими сервісами AWS, DynamoDB є ідеальним варіантом для таких випадків використання, як аналітика в реальному часі, управління сесіями та IoT-додатки. Крім того, її гнучкий безсхемний дизайн дозволяє розробникам швидко адаптувати моделі даних, підтримуючи динамічні та змінювані бізнес-потреби.
Переваги використання AWS CLI
Використання CLI дозволяє користувачам автоматизувати і скриптувати задачі, роблячи повторювані дії швидшими та менш схильними до помилок. CLI дозволяє проводити масові операції, такі як створення або управління кількома ресурсами одночасно, що може бути виснажливим у консолі. І нарешті, для віддаленого управління CLI можна використовувати з будь-якого середовища з доступом до Інтернету, що робить його високою універсальністю для програмного управління ресурсами AWS.
Попередні вимоги
- Ознайомленість з AWS Console
- Ознайомленість з AWS DynamoDB
- Ознайомленість з AWS EC2
- Ознайомленість з AWS IAM
- Ознайомленість з AWS CLI
Створення таблиці DynamoDB
Перший крок — створення таблиці в консолі AWS. Спочатку ми зробимо все в консолі, а потім надамо команди CLI. Перейдіть до сервісу DynamoDB з головної сторінки консолі. Потім виберіть «створити таблицю», дайте їй ім’я та введіть роздільник. Ми будемо використовувати назву фільму як роздільник. Роздільник працює як основний ключ у реляційних базах даних і використовується для ефективної організації та отримання даних. Подумайте про бібліотеку, де книги зберігаються на полицях за категорією (наприклад, художня література, науково-популярна). Категорія — це як роздільник: вона допомагає швидко визначити, де знаходиться конкретна книга (предмет). Потім залиште всі налаштування за замовчуванням і створіть таблицю.
Додавання елементів до таблиці DynamoDB
Тепер, коли таблиця створена, давайте додамо до неї деякі елементи. Виберіть створену таблицю, виберіть «дії», а потім «створити елемент», введіть назву фільму, а потім додайте нові атрибути для жанру, року випуску та рейтингу. Коли ви створите елемент і будете готові створити інший, прокрутіть вниз до розділу «Повернуті елементи», виберіть «створити елемент» знову і повторіть, поки не створите всі елементи, які хочете додати до таблиці.
Створення EC2 інстанції
Тепер у вас має бути таблиця DynamoDB з усіма елементами. Далі перейдіть до EC2 і створіть інстанцію. Дайте їй ім’я, використовуйте Linux AMI (я завжди використовую Amazon Linux 2 AMI), виберіть тип інстанції ‘t2.micro’ та створіть пару ключів, якщо хочете.
Якщо це інстанція для продакшн середовища, обов'язково створіть пару ключів (для цієї лабораторної роботи я не використовував пару ключів, але найкраща практика — використовувати її). Якщо ви використовуєте пару ключів, створіть групу безпеки або використовуйте існуючу, яка дозволяє доступ через SSH.
Для додаткової інформації щодо створення EC2 інстанції, перейдіть до розділу «Launch Instances» за посиланням нижче:
[
Безпечне віддалене адміністрування EC2 інстанцій AWS
Налаштування безпечного віддаленого доступу до EC2 інстанцій
medium.com
](/@judewakim/secure-remote-administration-of-aws-ec2-instances-4cdb4dc80b6d?source=post_page-----26f82f30373f--------------------------------)
Створення IAM ролі
Тепер у вас також має бути EC2 інстанція, яку ви будете використовувати для віддаленого доступу до бази даних. Однак, перед тим як це зробити, необхідно надати їй правильні права доступу через IAM. Перейдіть до IAM, виберіть «roles», а потім створіть нову IAM роль. Ви повинні створити роль для сервісу AWS, в даному випадку це буде EC2, а під правами доступу додайте політику «AmazonDynamoDBReadOnlyAccess», після чого надайте ролі ім’я.
Прив’язка IAM ролі до EC2 інстанції
Тепер, коли роль створена, ми повинні прив’язати її до EC2 інстанції, яку ми щойно створили. Поверніться до EC2 інстанції, виберіть «дія», потім «змінити IAM роль», і виберіть роль, яку ви тільки що створили. Тепер ви повинні побачити IAM роль у вкладці безпеки інстанції.
Підключення до EC2 інстанції
На цьому етапі таблиця створена і містить елементи, EC2 інстанція створена і має відповідні дозволи. Тепер ви готові підключитися до EC2 інстанції. Якщо ви використовували пару ключів і дозволили доступ через SSH в групі безпеки, ви можете підключитися до EC2 інстанції за допомогою SSH. Для отримання додаткової інформації про підключення до EC2 інстанції через SSH перейдіть до розділу «SSH в Linux інстанцію» за посиланням нижче:
[
Безпечне віддалене адміністрування EC2 інстанцій AWS
Налаштування безпечного віддаленого доступу до EC2 інстанцій
medium.com
](/@judewakim/secure-remote-administration-of-aws-ec2-instances-4cdb4dc80b6d?source=post_page-----26f82f30373f--------------------------------)
Якщо ви не використовували пару ключів, тоді можна використовувати Instance Connect для доступу до інстанції. Для цього виберіть інстанцію, натисніть «connect», виберіть вкладку «EC2 Instance Connect», а потім натисніть «connect», щоб підключитися до інстанції.
Перегляд таблиці в EC2 інстанції
Після того як ви підключитесь до EC2 інстанції, ви будете використовувати команди AWS CLI для перегляду вмісту таблиці DynamoDB. Команда для сканування таблиці виглядає так: aws dynamodb scan --table-name [ІМ'Я ТАБЛИЦІ] --region [РЕГІОН, ДЕ БУЛА СТВОРЕНА ТАБЛИЦЯ]
. Коли ви пишете команди CLI з кількома параметрами, найкраща практика — організовувати їх ось так:
aws dynamodb scan \
--table-name [ІМ'Я ТАБЛИЦІ]
--region [РЕГІОН, ДЕ БУЛА СТВОРЕНА ТАБЛИЦЯ]
Результат цієї команди має виглядати приблизно так:
Давайте також перевіримо, чи правильно працює IAM політика «тільки для читання», і чи використовуємо ми принцип найменших привілеїв. Для цього давайте спробуємо виконати деякі операції для читання, намагаючись записати в таблицю та оновити деякі елементи.
Ми можемо використати цю команду, щоб спробувати оновити «title» і «releaseYear».
aws dynamodb update-item \
--table-name "movie-releases-table" \
--key '{"Title": {"S": "Hello"}}' \
--update-expression "SET #attr = :value" \
--expression-attribute-names '{"#attr": "ReleaseYear"}' \
--expression-attribute-values '{":value": {"N": "2025"}}' \
--region us-east-1
Результат цієї команди має виглядати приблизно так:
Якщо ви отримали подібну помилку «Access Denied» при спробі запису, але змогли прочитати вміст таблиці, ви досягли мети цієї лабораторної роботи, використовуючи консоль AWS. Тепер ми вивчимо, як створювати ці ресурси за допомогою AWS CLI замість використання консолі.
Створення ресурсів за допомогою AWS CLI
Встановлення AWS CLI
Для використання CLI перше, що вам потрібно, це встановити CLI на вашому комп'ютері, уявіть собі це. Більшість EC2 інстанцій за замовчуванням мають попередньо встановлений AWS CLI (принаймні, на Linux), але на вашому хост-машині необхідно буде встановити CLI перед початком роботи. Для цього на Windows перейдіть за посиланням нижче та запустіть його:
https://awscli.amazonaws.com/AWSCLIV2.msi
Після того як ви завантажите та запустите його, ви можете виконати цю команду для перевірки встановлення.
aws --version
Якщо ви використовуєте Mac або Linux, ознайомтесь з цією документацією AWS:
[
Встановлення або оновлення до останньої версії AWS CLI
Інструкції з установки або оновлення AWS CLI на вашу систему.
docs.aws.amazon.com
](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html?source=post_page-----26f82f30373f--------------------------------)
Результат команди aws --version
має виглядати так:
Тепер потрібно підключити AWS акаунт, для цього використовуйте команду aws configure
і введіть ключі доступу. Якщо вам потрібна допомога у створенні ключів доступу або введенні їх у команду, перейдіть за посиланнями нижче:
[
configure - Довідка по команді AWS CLI 1.36.35
Ви переглядаєте документацію для старої версії AWS CLI (версія 1). AWS CLI версії 2, найновіша...
docs.aws.amazon.com
](https://docs.aws.amazon.com/cli/latest/reference/configure/?source=post_page-----26f82f30373f--------------------------------)
[
Генерація ключів доступу
Дізнайтесь, як оновити ключі доступу для користувачів AWS Identity and Access Management.
docs.aws.amazon.com
](https://docs.aws.amazon.com/IAM/latest/UserGuide/id-credentials-access-keys-update.html?source=postpage-----26f82f30373f--------------------------------#rotatingaccesskeysconsole)
Тепер ви готові створювати таблиці DynamoDB.
Команди для створення таблиці DynamoDB
Щоб створити таблицю DynamoDB за допомогою CLI, використовуйте наступну команду:
aws create-table \
--table-name movies-table \
--key-schema AttributeName=Title, KeyType=HASH \
--attribute-definitions AttributeName=Title, AttributeType=S \
--region us-east-1
Перегляньте цю документацію, щоб побачити, як правильно виконувати цю команду:
[
create-table - Довідка по команді AWS CLI 1.36.35
Операція CreateTable додає нову таблицю до вашого акаунту.
У акаунті Amazon Web Services імена таблиць повинні бути…
docs.aws.amazon.com
](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/create-table.html?source=post_page-----26f82f30373f--------------------------------)
Команди для додавання даних до таблиці
Щоб створити таблицю DynamoDB за допомогою CLI, використовуйте наступну команду:
aws put-item \
--table-name movies-table \
--item '{"Title":{"S":"Inception"}, "ReleaseYear": {"N":"2006"}, "Genre": {"S": "Thriller"}}' \
--region us-east-1
Перегляньте цю документацію, щоб побачити, як правильно виконувати цю команду:
[
put-item - Довідка по команді AWS CLI 1.36.35
Створює новий елемент або замінює старий елемент новим. Якщо елемент з тим самим первинним ключем, що й новий елемент...
docs.aws.amazon.com
](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/put-item.html?source=post_page-----26f82f30373f--------------------------------)
Команди для створення EC2 інстанції
Щоб створити EC2 інстанцію за допомогою CLI, використовуйте наступну команду:
aws ec2 run-instances \
--
--instance-type t2.micro \
--security-groups launch-wizard-11 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=cda05-instance}]' \
--no-key-name \
--region us-east-1
Перегляньте цю документацію, щоб побачити, як правильно виконувати цю команду:
[
run-instances - Довідка по команді AWS CLI 1.36.35
Запускає зазначену кількість інстанцій за допомогою AMI, до яких у вас є дозволи. Ви можете вказати кількість...
docs.aws.amazon.com
](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html?source=post_page-----26f82f30373f--------------------------------)
Команди для створення IAM ролі
Щоб створити IAM роль за допомогою CLI, використовуйте наступну команду:
aws iam create-role \
--role-name EC2DynamoDBReadOnlyRole \
--assume-role-policy-document '{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}'
Перегляньте цю документацію, щоб побачити, як правильно виконувати цю команду:
[
create-role - Довідка по команді AWS CLI 1.36.35
Ви переглядаєте документацію для старої версії AWS CLI (версія 1). AWS CLI версії 2, найновіша...
docs.aws.amazon.com
](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html?source=post_page-----26f82f30373f--------------------------------)
Команди для прикріплення IAM політики до IAM ролі
Щоб прикріпити IAM політику до IAM ролі за допомогою CLI, використовуйте наступну команду:
aws iam attach-role-policy \
--role-name EC2DynamoDBReadOnlyRole \
--policy-arn arn:aws:iam::aws:policy/AmazonDynamoDBReadOnlyAccess
Перегляньте цю документацію, щоб побачити, як правильно виконувати цю команду:
[
attach-role-policy - Довідка по команді AWS CLI 1.36.35
Ім’я (дружнє ім’я, не ARN) ролі, до якої потрібно прикріпити політику. Цей параметр дозволяє (через регулярний вираз)...
docs.aws.amazon.com
](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html?source=post_page-----26f82f30373f--------------------------------)
Команди для створення профілю інстанції
Щоб створити профіль інстанції за допомогою CLI, використовуйте наступну команду:
aws iam create-instance-profile \
--instance-profile-name EC2DynamoDBReadOnlyProfile
Перегляньте цю документацію, щоб побачити, як правильно виконувати цю команду:
[
create-instance-profile - Довідка по команді AWS CLI 1.36.35
instance-profile-name (рядок) Ім’я профілю інстанції, який потрібно створити.
Цей параметр дозволяє (через його регулярний вираз)…
docs.aws.amazon.com
](https://docs.aws.amazon.com/cli/latest/reference/iam/create-instance-profile.html?source=post_page-----26f82f30373f--------------------------------)
Команди для додавання ролі до профілю інстанції
Щоб додати IAM роль до профілю інстанції, використовуйте наступну команду:
aws iam add-role-to-instance-profile \
--instance-profile-name EC2DynamoDBReadOnlyProfile \
--role-name EC2DynamoDBReadOnlyRole
Перегляньте цю документацію, щоб побачити, як правильно виконувати цю команду:
[
add-role-to-instance-profile - Довідка по команді AWS CLI 1.36.35
Додає зазначену IAM роль до вказаного профілю інстанції. Профіль інстанції може містити лише одну роль, і це…
docs.aws.amazon.com
](https://docs.aws.amazon.com/cli/latest/reference/iam/add-role-to-instance-profile.html?source=post_page-----26f82f30373f--------------------------------)
Команди для асоціації ролі з інстанцією
Щоб асоціювати IAM роль з EC2 інстанцією, використовуйте наступну команду:
aws ec2 associate-iam-instance-profile \
--instance-id \
--iam-instance-profile Name=EC2DynamoDBReadOnlyProfile \
--region us-east-1
Перегляньте цю документацію, щоб побачити, як правильно виконувати цю команду:
[
associate-iam-instance-profile - Довідка по команді AWS CLI 1.36.35
iam-instance-profile (структура) Профіль інстанції IAM. Arn -> (рядок) Ідентифікатор Amazon Resource Name (ARN) профілю…
docs.aws.amazon.com
](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-iam-instance-profile.html?source=post_page-----26f82f30373f--------------------------------)
Тепер ви відтворили все, що ми зробили в консолі, у CLI. Тепер у вас є EC2 інстанція з мінімальними правами доступу до таблиці DynamoDB, яка зберігає інформацію про випуски фільмів компанії.
Вітаємо! Якщо ви слідували за інструкціями і дійшли до цього етапу, ви повинні були змогти встановити AWS CLI, створити таблиці DynamoDB, додати елементи до таблиці, створити EC2 інстанції, створити IAM роль і прикріпити роль до інстанції як через консоль, так і через CLI. Тепер ви також знаєте, як виконувати команди для сканування таблиці DynamoDB на наявність її вмісту.
Для більше подібних проєктів, ознайомтесь з моїми іншими Medium постами і перевірте мій Github та LinkedIn.
Перекладено з: Create a Database to Manage and Track Data Using AWS DynamoDB and the AWS CLI