Введение
Вашей команде нужен сервер для небольшого приложения отчётов. В этой лабораторной работе вы запустите инстанс Amazon EC2, подключитесь по SSH, измените приветствие приложения и проверите его ответ через AWS View. Затем завершите инстанс и подтвердите окончательное состояние.
Вы должны знать базовые команды терминала и назначение VPC, подсети и группы безопасности. Среда предоставляет сеть, образ Ubuntu, пару ключей SSH и приложение. Инстанс приложения вы создадите и настроите самостоятельно.
Связь с сертификацией
Эта работа отрабатывает программные операции AWS и выбор EC2 как вычислительного сервиса, связанные с задачами 3.1 и 3.3 целей домена 3 AWS Certified Cloud Practitioner CLF-C02. Вы также научитесь различать образ, тип инстанса и работающий инстанс.
Запустить инстанс приложения
На этом шаге вы проверите подготовленный образ и запустите один инстанс EC2 в предоставленной сети.
Инстанс EC2 — виртуальный сервер. Amazon Machine Image (AMI) предоставляет его операционную систему и начальное программное обеспечение. Тип инстанса определяет сочетание вычислительной мощности и памяти. Для этого вводного приложения вы выберете t3.micro, небольшой тип общего назначения.
Начните в каталоге проекта:
cd /home/labex/project
Файл launch.env содержит идентификаторы подготовленных образа, подсети и группы безопасности. Просмотрите его, чтобы узнать используемые ресурсы:
cat launch.env
Это ID ресурсов, которые различаются между средами. Загрузите их в текущую оболочку с помощью source, который читает присваивания переменных из файла:
source launch.env
Проверьте AMI. Параметр --image-ids выбирает образ, а --query ограничивает отображаемые поля:
aws ec2 \
describe-images \
--image-ids "$AMI_ID" \
--query 'Images[].{Image:ImageId,Name:Name,Architecture:Architecture}'
Найдите имя образа report-server-ubuntu-2204 и архитектуру x86_64. Образ содержит Ubuntu и приложение отчётов, поэтому вы сможете сосредоточиться на запуске и эксплуатации сервера.
Подсеть определяет сетевое расположение инстанса. Предоставленная группа безопасности разрешает SSH на порту 22 и запросы приложения на порту 8081 из сети доступа лабораторной работы. Пара ключей report-key предоставляет открытый ключ, установленный на инстансе; закрытый ключ находится в каталоге проекта для подключения по SSH.
Запустите один инстанс с подготовленными ресурсами. --count 1 создаёт один сервер, а тег присваивает ему узнаваемое имя report-server:
aws ec2 \
run-instances \
--image-id "$AMI_ID" \
--instance-type t3.micro \
--subnet-id "$SUBNET_ID" \
--security-group-ids "$SECURITY_GROUP_ID" \
--key-name report-key \
--count 1 \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=report-server}]'
Ответ содержит ID нового инстанса и его начальное состояние. Сохраните ID в переменной оболочки для следующих команд. Синтаксис $(...) выполняет команду внутри скобок и сохраняет её вывод; --output text возвращает ID в виде обычного текста:
INSTANCE_ID=$(aws ec2 \
describe-instances \
--filters Name=tag:Name,Values=report-server \
--query 'Reservations[0].Instances[0].InstanceId' \
--output text)
Проверьте состояние и адреса инстанса:
aws ec2 \
describe-instances \
--instance-ids "$INSTANCE_ID" \
--query 'Reservations[].Instances[].{Instance:InstanceId,State:State.Name,PrivateIPv4:PrivateIpAddress,PublicIPv4:PublicIpAddress}'
Подтвердите состояние running и наличие частного и публичного IPv4-адресов. Если состояние ещё pending, немного подождите и повторите команду. Частный адрес идентифицирует сервер внутри VPC; публичный адрес используется для подключения через сеть доступа лабораторной работы.
Подключиться и настроить приложение
На этом шаге вы подключитесь к инстансу по SSH, измените приветствие приложения отчётов и проверите ответ в AWS View.
Получите публичный IPv4-адрес инстанса и сохраните его в другой переменной оболочки:
PUBLIC_IP=$(aws ec2 \
describe-instances \
--instance-ids "$INSTANCE_ID" \
--query 'Reservations[0].Instances[0].PublicIpAddress' \
--output text)
SSH создаёт зашифрованное терминальное подключение к серверу. Образы Ubuntu используют имя входа ubuntu. Предоставленный ssh_config выбирает закрытый ключ и маршрут подключения лабораторной работы; -F указывает SSH прочитать этот файл конфигурации:
ssh -F ssh_config ubuntu@"$PUBLIC_IP"
Теперь ваш терминал находится внутри инстанса приложения. Подтвердите пользователя:
whoami
Вывод должен быть ubuntu. Это отличает инстанс приложения от терминала LabEx, где пользователь — labex.
Предоставленное приложение читает приветствие из /etc/report-app/config.json. Для изменения этого системного файла нужны права администратора. sudo tee записывает следующий текст в файл, а here-document между маркерами JSON предоставляет этот текст:
sudo tee /etc/report-app/config.json <<'JSON'
{
"message": "Hello from EC2"
}
JSON
Приложение перечитывает конфигурацию при каждом запросе. Используйте curl, чтобы обратиться к его endpoint проверки состояния через loopback-адрес инстанса:
curl -sS http://127.0.0.1:8081/health
Ответ JSON должен указывать сервис Report server и содержать "message": "Hello from EC2". Это доказывает, что приложение отвечает внутри инстанса с вашей конфигурацией.
Выйдите из сеанса SSH, чтобы вернуться в терминал LabEx:
exit
Откройте AWS View и нажмите Refresh resources. Найдите report-server в таблице инстансов. Подтвердите состояние running и сравните публичный IPv4-адрес с адресом из CLI.
В Application requests выберите работающий инстанс и нажмите Check application. Подтвердите ответ HTTP 200 с Hello from EC2. Запрос направляется на текущий публичный адрес инстанса и проверяет приложение через сеть в дополнение к проверке внутри сервера.

Пример контрольной точки: приложение возвращает HTTP 200 с Hello from EC2. Ваши ID ресурсов и адреса будут отличаться.
Завершить свой сервер
На этом шаге вы завершите инстанс приложения и убедитесь, что он больше не работает.
Завершение окончательно удаляет инстанс. Используйте сохранённый ID, чтобы выбрать только свой сервер приложения:
aws ec2 \
terminate-instances \
--instance-ids "$INSTANCE_ID"
Ответ показывает предыдущее и текущее состояния. AWS CLI также предоставляет waiter, который опрашивает ресурс до достижения указанного состояния. Дождитесь окончания завершения:
aws ec2 \
wait instance-terminated \
--instance-ids "$INSTANCE_ID"
Waiter заканчивает работу без вывода, когда условие выполнено. Проверьте окончательное состояние:
aws ec2 \
describe-instances \
--instance-ids "$INSTANCE_ID" \
--query 'Reservations[].Instances[].{Instance:InstanceId,State:State.Name}'
Подтвердите terminated. Запись инстанса может оставаться видимой после завершения; это не означает, что сервер продолжает работать.
Нажмите Refresh resources в AWS View. Инстанс должен показывать terminated и больше не быть доступной работающей целью приложения. Оставьте подготовленные сеть и пару ключей.
Итоги
Вы запустили инстанс EC2 с помощью AMI, типа инстанса, сетевых ресурсов и пары ключей SSH. Подключились к серверу, настроили приложение отчётов и проверили его ответ через AWS View. Наконец, завершили инстанс и подтвердили окончательное состояние.



