Учебное пособие по созданию приложений на Amazon Web Services (AWS)
Amazon Web Services (AWS) — одна из самых популярных в мире платформ облачных вычислений. С AWS вы можете создавать и запускать приложения, не приобретая физические серверы, не выделяя серверное пространство и не поддерживая собственную инфраструктуру. В этой статье мы рассмотрим создание простого приложения на AWS, используя распространенный подход: развертывание веб-приложения с помощью вычислительных сервисов (EC2), управляемой базы данных (RDS) в качестве опции, а также хранилища и домена при необходимости. Хотя приведенный ниже пример является общим, его можно применять ко многим типам приложений.
-
1. Начальная подготовка: Бухгалтерский учет и основные понятия
Прежде чем начать, убедитесь, что у вас есть учетная запись AWS. Многие сервисы AWS предлагают бесплатный уровень (бесплатно в определенных пределах), который идеально подходит для практики.
Вот несколько важных понятий, которые вам необходимо понимать:
– Регион: местоположение центра обработки данных AWS (например: Singapore/ap-southeast-1). Выберите ближайший регион для обеспечения низкой задержки.
– IAM (управление идентификацией и доступом): система управления доступом. Рекомендация: не используйте учетную запись root для повседневной работы.
– VPC (виртуальное частное облако): виртуальная сеть, в которой работают ваши сервисы.
– Группа безопасности: «брандмауэр» для регулирования входящего/исходящего доступа с сервера.
Понимая эти четыре момента, вам будет гораздо проще освоить основы AWS.
-
2. Создание пользователей IAM и защита учетных записей.
Безопасность всегда является для нас приоритетом номер один. Войдите в консоль AWS от имени root, затем:
1. Откройте службу IAM.
2. Создайте нового пользователя (например, `admin-dev`) и установите флажок «Предоставить пользователю доступ к консоли управления AWS».
3. Предоставление прав доступа: для практики можно использовать AdministratorAccess (хотя в реальных проектах его следует ограничить).
4. Включите многофакторную аутентификацию (MFA) для повышения уровня безопасности.
После этого выйдите из системы от имени root и войдите снова, используя только что созданного пользователя IAM.
-
3. Определите архитектуру приложения.
В этом уроке мы построим простую архитектуру:
– EC2: запуск веб-приложений (например, Node.js/Express, Python Flask или PHP).
– Дополнительно: управляемая база данных RDS (MySQL/PostgreSQL), обеспечивающая аккуратное хранение данных.
– S3 (необязательно): хранит статические файлы, такие как изображения, документы или резервные копии.
– Маршрут 53 (необязательно): управление доменами.
– CloudWatch: базовый мониторинг.
Если вы только начинаете, сосредоточьтесь на EC2 для запуска ваших приложений в первую очередь.
-
4. Создайте сервер EC2.
а) Создайте экземпляр
1. Войдите в сервис EC2.
2. Нажмите «Запустить экземпляр».
3. Выберите операционную систему, например, Ubuntu Server 22.04 LTS.
4. Выберите тип экземпляра: для бесплатного уровня используйте `t2.micro` или `t3.micro` (в зависимости от доступности).
5. Создайте или выберите пару ключей (например, `aws-key.pem`). Сохраните файл `.pem` в безопасном месте, так как он будет использоваться для SSH.
b) Настройка сети и брандмауэра
– Убедитесь, что экземпляр находится в VPC по умолчанию (это просто для тренировки).
– Настройка группы безопасности:
– Доступ по порту 22 (SSH) только с вашего IP-адреса (например, `Мой IP`)
– Порт 80 (HTTP) `0.0.0.0/0` (публичный)
– Порт 443 (HTTPS) с `0.0.0.0/0`, если позже будет использоваться SSL.
Примечание: предоставление доступа к SSH для всех пользователей сопряжено с риском. Всегда ограничивайте доступ по IP-адресам.
Нажмите «Запустить» и дождитесь запуска экземпляра.
-
5. Войдите на сервер через SSH.
В Windows можно использовать WSL или PuTTY. В macOS/Linux это можно сделать непосредственно из терминала.
1. Измените ключ доступа:
«баш»
chmod 400 aws-key.pem
«`
2. Подключитесь к серверу по SSH (используйте публичный IPv4 с EC2):
«баш»
ssh -i aws-key.pem ubuntu@PUBLIC_IP
«`
В случае успешного выполнения команды вы подключены к серверу AWS Ubuntu.
-
6. Установите веб-сервер и среду выполнения приложений.
Вот пример приложения на Node.js, поскольку этот язык широко используется в современном веб-разработке.
а) Обновите и установите зависимости.
«баш»
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git
«`
b) Установите Node.js (версия LTS).
«баш»
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt install -y nodejs
узел -v
npm -v
«`
-
7. Создайте простое приложение.
Создайте папку проекта:
«баш»
mkdir myapp && cd myapp
инициализация npm -y
npm установить экспресс
«`
Создайте файл `index.js`:
«`js
const express = require («экспресс»);
константное приложение = экспресс();
app.get("/", (req, res) => {
res.send(“Привет! Ваше приложение работает на AWS EC2.”);
});
app.listen(3000, () => console.log(“Сервер запущен на порту 3000”));
«`
Запустите приложение:
«баш»
узел index.js
«`
Попробуйте зайти через браузер:
– `http://PUBLIC_IP:3000`
Однако порт 3000 в данный момент не открыт в группе безопасности. Вы можете:
1) открыть порт 3000 в группе безопасности, или
2) Используйте обратный прокси (более рекомендуется), чтобы приложение оставалось на внутреннем порту, но было доступно через порты 80/443.
-
8. Использование Nginx в качестве обратного прокси (доступ через порт 80)
Установите Нгинкс:
«баш»
sudo apt install -y nginx
sudo systemctl включить nginx
sudo systemctl start nginx
«`
Настройка конфигурации Nginx:
«баш»
sudo nano /etc/nginx/sites-available/myapp
«`
Содержимое конфигурации:
«`nginx
сервер {
слушать 80;
имя сервера _;
местоположение /
прокси_пасс http://127.0.0.1:3000;
прокси_http_версия 1.1;
proxy_set_header Обновить $ http_upgrade;
proxy_set_header Соединение «обновление»;
proxy_set_header Host $ host;
proxy_cache_bypass $http_upgrade;
}
}
«`
Включить конфигурацию:
«баш»
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl перезагрузить nginx
«`
Доступно сейчас:
– `http://PUBLIC_IP/`
Приложение работает на порту 3000, но доступ к нему для широкой публики осуществляется через порт 80.
-
9. Постоянный запуск приложений с помощью PM2
Чтобы предотвратить сбои приложения при отключении SSH, используйте PM2:
«баш»
sudo npm установить -g pm2
pm2 start index.js –name myapp
pm2 сохранить
запуск pm2
«`
Команда `pm2 startup` предоставит дополнительные инструкции. Выполните указанную команду, чтобы приложение автоматически запускалось при перезагрузке сервера.
-
10. (Необязательно) Добавление базы данных с RDS
Если вашему приложению требуется база данных, RDS упрощает этот процесс, поскольку AWS управляет резервным копированием, обновлением и масштабированием.
Короткие шаги:
1. Откройте службу RDS → Создать базу данных.
2. Выберите MySQL или PostgreSQL (правила бесплатного уровня доступны для определенных конфигураций).
3. Установите имя пользователя/пароль.
4. Убедитесь, что экземпляр RDS находится в той же VPC, что и EC2.
5. Настройте группу безопасности RDS так, чтобы она принимала подключения только от группы безопасности EC2 (а не от общедоступных серверов).
После запуска базы данных получите доступ к конечной точке RDS и подключитесь к ней из своего приложения, используя драйвер базы данных.
-
11. (Необязательно) Включите HTTPS с SSL-сертификатом.
Для использования в производственной среде HTTPS является обязательным. Типичный метод:
– Используйте доменное имя (например, от Route 53 или другого регистратора).
– Установите SSL-сертификат через Let's Encrypt (Certbot) на EC2.
Вкратце:
«баш»
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx
«`
Следуйте инструкциям мастера, чтобы выбрать домен и включить перенаправление HTTPS.
-
12. Мониторинг и затраты
AWS предоставляет CloudWatch для просмотра таких метрик, как загрузка ЦП, использование сети и отдельные журналы. Вам также следует отслеживать свои расходы, чтобы ничего не упустить.
Важные советы:
– Включите оповещение о платежах в CloudWatch (например, оповещение, если сумма платежа превышает 5 долларов).
– Выключайте экземпляр, когда он не используется.
– Удалите неиспользуемые ресурсы (балансировщики нагрузки, EBS, эластичные IP-адреса, снимки), поскольку они могут по-прежнему нести расходы.
-
обложка
Поздравляем! Вы освоили основы создания приложений на AWS с использованием EC2, запуска веб-приложений, настройки обратного прокси-сервера Nginx и обеспечения его постоянной доступности с помощью PM2. Вы также получили общее представление о дополнительных сервисах, таких как RDS для баз данных, S3 для хранения данных и HTTPS-сертификаты для обеспечения безопасности.
Если вы хотите перейти на следующий уровень, обычно выполняются следующие шаги:
– Автоматизированное развертывание с использованием CI/CD (GitHub Actions + SSH или AWS CodeDeploy),
– Использование контейнеров с Docker и систем оркестровки, таких как ECS или EKS.
– Использование бессерверной архитектуры с Lambda + API Gateway.
Если хотите, пожалуйста, укажите тип разрабатываемого вами приложения (Node.js, Laravel, Django, React и т. д.) и его предназначение (демо-версия, продакшн, крупномасштабное приложение). Я смогу адаптировать руководство, добавив более конкретные шаги.