Управление EC2 через AWS CLI

К чему это подходит
- Быстро управлять EC2 из терминала.
- Автоматизировать повторяющиеся задачи в скриптах.
- Работать без веб‑консоли при SSH/CI/CD процессах.
Предварительные требования
- AWS аккаунт.
- Базовое понимание EC2.
- IAM‑пользователь с политикой AmazonEC2FullAccess и его access/secret ключи.
- Установленный AWS CLI на вашей машине.
- Пара ключей (Key‑Pair) в нужном регионе.
Важно: для продакшен‑окружений используйте IAM‑роли и профиль конфигурации aws-cli вместо экспорта секретных ключей в окружение.
Что мы сделаем
- Проверим установленный aws‑cli и экспортируем ключи.
- Создадим EC2‑инстанс через aws‑cli.
- Выполним базовые операции: остановка, изменение типа, запуск, удаление.
Проверка aws cli и экспорт ключей на локальной машине
Проверьте версию aws‑cli:
aws --versionЕсли aws‑cli не настроен, команда ниже вернёт ошибку:
aws sts get-caller-identityЭкспортируйте ключи IAM‑пользователя в сессию терминала (пример для Linux/macOS):
export AWS_ACCESS_KEY_ID=export AWS_SECRET_ACCESS_KEY=Теперь можно снова проверить свою идентичность:
aws sts get-caller-identity
Создание EC2‑инстанса через aws cli
Чтобы создать инстанс, выполните команду (подставьте свои значения):
aws ec2 run-instances --image-id ami-0a0d71ff90f62f72a --count 1 --instance-type t2.micro --key-name howtoforge-test --security-group-ids sg-7fa4d512 --subnet-id subnet-ae1a35c7 --region eu-west-3В этой команде замените:
- –image-id — ID AMI;
- –count — количество инстансов;
- –instance-type — тип инстанса;
- –key-name — название существующей key‑pair;
- –security-group-ids — ID security group;
- –subnet-id — ID подсети;
- –region — регион.
После выполнения проверьте консоль EC2, где появится созданный инстанс.
Базовые операции над EC2‑инстансом через aws‑cli
Перед изменением типа инстанса его нужно остановить.
Получите ID запущенного инстанса (в примере используется фильтр на статус running):
aws ec2 describe-instances --filters Name=instance-state-name,Values=running --region eu-west-3 | grep InstanceIdЕсли попытаться изменить тип инстанса в запущенном состоянии, операция не пройдёт:
aws ec2 modify-instance-attribute --instance-id i-0f9a0305493735b13 --instance-type "{\"Value\": \"m1.small\"}" --region eu-west-3Остановите инстанс по его ID:
aws ec2 stop-instances --instance-id i-0f9a0305493735b13 --region eu-west-3
Измените тип инстанса (пример):
aws ec2 modify-instance-attribute --instance-id i-0f9a0305493735b13 --instance-type "{\"Value\": \"t2.small\"}" --region eu-west-3Запустите инстанс снова:
aws ec2 start-instances --instance-id i-0f9a0305493735b13 --region eu-west-3
Проверьте в консоли, сменился ли тип инстанса.
Чтобы удалить инстанс:
aws ec2 terminate-instances --instance-id i-0f9a0305493735b13 --region eu-west-3
Таблица быстрых команд
| Действие | Команда (пример) |
|---|---|
| Создать | run-instances (пример выше) |
| Остановить | aws ec2 stop-instances –instance-id |
| Запустить | aws ec2 start-instances –instance-id |
| Изменить тип | aws ec2 modify-instance-attribute –instance-id |
| Удалить | aws ec2 terminate-instances –instance-id |
| Получить ID | aws ec2 describe-instances –filters Name=instance-state-name,Values=running –region |
Чек‑лист перед изменением инстанса
- Убедитесь, что у вас есть резервная копия данных.
- Проверьте зависимые сервисы и сетевые настройки.
- Остановите инстанс перед изменением типа.
- Убедитесь, что выбранный тип доступен в регионе и зоне.
- Проверьте лимиты аккаунта для нового типа.
Мини‑методология: безопасное изменение типа инстанса
- Снимите снапшот/AMI важного тома.
- Остановите инстанс.
- Измените instance‑type.
- Запустите и проверьте логи/приложение.
- Откатите изменения при ошибках.
Инцидентный рукбук: откат при ошибочной модификации
- Если инстанс не запускается после изменения типа — отключите его.
- Восстановите AMI или снимок, созданный перед изменением.
- Запустите новый инстанс из AMI и проверьте сетевые настройки.
- Переключите трафик (если применимо) на новый инстанс.
- Удалите повреждённый инстанс после проверки.
Критерии приёмки
- Инстанс успешно запускается и проходит проверочные тесты приложения.
- Производительность соответствует ожидаемой для выбранного типа.
- Нет ошибок в системных логах, сервисы работают.
Сценарии тестирования / Test cases
- После изменения типа проверьте доступность сервиса (HTTP/SSH).
- Проверяйте нагрузку и метрики CPU/IO в течение N минут.
- Тесты восстановления: восстановление из AMI/снапшота.
Риски и смягчения
- Потеря данных при неправильном удалении: всегда делайте снапшоты.
- Неподдерживаемый тип в регионе: проверьте доступность заранее.
- Неавторизованные операции: используйте IAM‑роли и журналы CloudTrail.
Рекомендации по безопасности
- Не храните секреты в переменных окружения длительно. Используйте профили aws‑cli или IAM‑роли.
- Включите MFA для критичных IAM‑пользователей.
- Минимизируйте права: выдавайте принцип наименьших привилегий.
- Ограничьте SSH по IP и используйте SSM Session Manager для доступа без открытых портов.
- Регулярно ротируйте ключи и проверяйте CloudTrail на подозрительные операции.
Примечания по приватности и соответствию
Если вы работаете с персональными данными, следуйте требованиям локального законодательства и GDPR. Удаление инстанса не обязательно удаляет данные из снапшотов и резервных копий — учитывайте это при планировании удаления данных.
Ментальные модели и эвристики
- “Стоп — изменить — запустить”: изменение типа всегда делайте на остановленном инстансе.
- “Снимок перед действием”: перед крупными изменениями делайте AMI/снапшот.
- “Малые шаги”: меняйте конфигурацию по одной опции, чтобы быстрее отлаживать.
Быстрый чек‑лист ролей
- Операторы: проверка статуса, остановка/запуск, мониторинг.
- Девы: тестирование приложения после изменения, откат при проблемах.
- Архитектора: планирование типов инстансов и сетевой архитектуры.
Короткая сводка
Управление EC2 через aws‑cli даёт гибкость и возможность автоматизировать операции. Следуйте чек‑листу перед изменением, делайте снапшоты и используйте принципы безопасности. В случае ошибок используйте AMI/снапшоты для отката.
Важное: удаляйте ресурсы, когда они не нужны, чтобы избежать ненужных затрат.
Похожие материалы
Организация контактов на Android
Быстрый запуск MySQL в Docker
Виджет «Новости и интересы» в Windows 10
Microsoft Store не скачивает игры — как исправить
Защитить фото паролем на iPhone и iPad