Создание EC2-инстанса через CloudFormation — быстрый гайд

Перед началом предполагается базовое понимание сервиса EC2 на AWS и его компонентов. Если вам нужно руководство по созданию EC2 через AWS Console, сначала ознакомьтесь с отдельной статьёй по этому вопросу. В этой инструкции мы создадим EC2‑инстанс на базе последнего Amazon Linux AMI с помощью CloudFormation. Знание основ CloudFormation полезно, но не обязательно — ниже есть четкая пошаговая инструкция.
В статье не охвачены все возможные параметры CloudFormation для ресурса EC2. Для полного списка опций используйте официальную документацию AWS.
Предварительные требования
- Учётная запись AWS. Создайте, если её нет.
- Базовое понимание шаблонов CloudFormation.
- Базовое понимание EC2-инстансов и SSH.
Что мы сделаем
- Зайдём в AWS Management Console.
- Подготовим шаблон CloudFormation.
- Создадим стек через консоль.
- Удалим стек и проверим удаление ресурсов.
Вход в AWS
Перейдите на страницу входа в AWS и введите учётные данные вашей учётной записи.

После входа вы увидите главную панель управления AWS Management Console.

Создание шаблона
Создайте файл create-ec2-instance.template на локальной машине со следующим содержимым. Также шаблон доступен в репозитории GitHub по ссылке в оригинальном материале.
AWSTemplateFormatVersion: '2010-09-09'
Metadata:
License: Apache-2.0
Description: 'Create an AWS EC2 instance running the AWS Linux AMI.'
Parameters:
KeyName:
Description: Name of an existing EC2 KeyPair
Type: AWS::EC2::KeyPair::KeyName
ConstraintDescription: must be the name of an existing EC2 KeyPair.
InstanceType:
Description: AWS EC2 instance type
Type: String
Default: t3.small
AllowedValues: [t2.nano, t2.micro, t2.small, t2.medium, t2.large, t2.xlarge, t2.2xlarge,
t3.nano, t3.micro, t3.small, t3.medium, t3.large, t3.xlarge, t3.2xlarge,
m4.large, m4.xlarge, m4.2xlarge, m4.4xlarge, m4.10xlarge,
m5.large, m5.xlarge, m5.2xlarge, m5.4xlarge,
c5.large, c5.xlarge, c5.2xlarge, c5.4xlarge, c5.9xlarge,
g3.8xlarge,
r5.large, r5.xlarge, r5.2xlarge, r5.4xlarge, r3.12xlarge,
i3.xlarge, i3.2xlarge, i3.4xlarge, i3.8xlarge,
d2.xlarge, d2.2xlarge, d2.4xlarge, d2.8xlarge]
ConstraintDescription: must be a valid EC2 instance type.
SSHLocation:
Description: The IP address range allowed to SSH to the EC2 instances
Type: String
MinLength: 9
MaxLength: 18
Default: 0.0.0.0/0
AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})
ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.
LatestAmiId:
Type: 'AWS::SSM::Parameter::Value'
Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2'
Resources:
EC2Instance:
Type: AWS::EC2::Instance
Properties:
InstanceType: !Ref 'InstanceType'
SecurityGroups: [!Ref 'InstanceSecurityGroup']
KeyName: !Ref 'KeyName'
ImageId: !Ref 'LatestAmiId'
InstanceSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Enable SSH access on port 22
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: !Ref 'SSHLocation'
Outputs:
InstanceId:
Description: Id of the newly created AWS EC2 instance
Value: !Ref 'EC2Instance'
AZ:
Description: AZ of the newly created AWS EC2 instance
Value: !GetAtt [EC2Instance, AvailabilityZone]
PublicDNS:
Description: Public DNS Name of the newly created AWS EC2 instance
Value: !GetAtt [EC2Instance, PublicDnsName]
PublicIP:
Description: Public IP address of the newly created AWS EC2 instance
Value: !GetAtt [EC2Instance, PublicIp]Примечание: шаблон выбирает последний доступный Amazon Linux 2 AMI через параметр SSM. Это удобно, потому что AMI обновляется автоматически в SSM Parameter Store.
Создание стека CloudFormation через консоль
- В AWS Console перейдите в Services и найдите CloudFormation.

- Нажмите Создать стек → С новыми ресурсами (стандартно).

- Выберите «Загрузить файл шаблона» и укажите ранее созданный файл. Нажмите Далее.

- Укажите имя стека, тип инстанса, ключ SSH (KeyPair) и диапазон IP для SSH. Если хотите разрешить SSH со своего IP — впишите CIDR вида x.x.x.x/32. По умолчанию шаблон предлагает 0.0.0.0/0 (всех), но это небезопасно.

- Теги необязательны. Добавьте при необходимости и нажмите Далее.

- Прокрутите вниз и нажмите Создать стек.

Создание займёт несколько минут. После успешного выполнения вы увидите статус CREATE_COMPLETE.

Чтобы убедиться, что инстанс создан, перейдите в EC2 Dashboard (Services → EC2) и откройте Instances.

Вы увидите новый инстанс и сможете проверить его свойства.

Удаление стека и ресурсов
Когда инстанс больше не нужен, удалите CloudFormation‑стек. Это автоматически удалит все ресурсы, созданные стеком.
- В CloudFormation выберите нужный стек и нажмите Удалить.

- Подтвердите действие во всплывающем окне.

После успешного удаления статус станет DELETE_COMPLETE.

Проверьте EC2 Dashboard — инстанс будет в состоянии terminated.

Мини‑шпаргалка: SSH и полезные команды
- Подключение по SSH (пример): ssh -i /path/to/key.pem ec2-user@PUBLIC_IP
- Просмотр логов стека в CloudFormation: откройте стек → Events.
- Получение Outputs через AWS CLI: aws cloudformation describe-stacks –stack-name STACK_NAME –query “Stacks[0].Outputs”
Альтернативные подходы
- Terraform — декларативный инструмент с поддержкой множества провайдеров. Подходит для многоплатформенных проектов.
- AWS CDK — писать инфраструктуру на языке программирования (TypeScript, Python и т.д.). Удобно, если хотите генерацию шаблонов через код.
- Ручное создание через Console — быстро для одноразовых тестов, но хуже для повторяемости.
Когда этот подход не подходит
- Если нужно управлять инфраструктурой на нескольких облаках — CloudFormation привязан к AWS.
- Если вы предпочитаете писать логику развёртывания на языке программирования — рассмотрите CDK.
- Для сложных конвейеров с частыми изменениями конфигурации может быть удобнее Terraform.
Безопасность и рекомендации
- Никогда не оставляйте SSH доступ открытым 0.0.0.0/0 в продакшене.
- Используйте ключи с ограниченным доступом и дополнительно включайте IAM‑политики принципа наименьших привилегий.
- Рассмотрите использование Systems Manager Session Manager для доступа без открытия SSH.
Важное: шаблон использует Security Group со входящим правилом SSH. При реальном развёртывании замените Default SSHLocation на конкретный CIDR вашего офиса или VPN.
Критерии приёмки
- Стек создан со статусом CREATE_COMPLETE.
- В Outputs присутствуют InstanceId, PublicIP и PublicDNS.
- EC2‑инстанс доступен (если разрешён SSH) или корректно удалён после удаления стека.
Чек‑лист ролей
- Администратор инфраструктуры:
- Подготовил ключи и IAM‑права.
- Загрузил шаблон и создал стек.
- Разработчик:
- Проверил доступность инстанса и приложений.
- Аудитор/безопасник:
- Проверил группы безопасности и логи CloudTrail.
Краткая методология
- Подготовьте шаблон и ключи.
- Разверните стек в тестовом аккаунте/регионе.
- Проверяйте Outputs и логи CloudFormation.
- Приведите шаблон к требованиям безопасности.
- Пригодность тестируйте через SSH/управление приложением.
Примеры команд AWS CLI (быстрый SOP)
- Создание стека:
aws cloudformation create-stack –stack-name my-ec2-stack –template-body file://create-ec2-instance.template –parameters ParameterKey=KeyName,ParameterValue=YOUR_KEY ParameterKey=SSHLocation,ParameterValue=YOUR_CIDR
- Проверка статуса:
aws cloudformation describe-stacks –stack-name my-ec2-stack –query “Stacks[0].StackStatus”
- Удаление стека:
aws cloudformation delete-stack –stack-name my-ec2-stack
Короткий словарь
- CloudFormation — сервис AWS для декларативного описания инфраструктуры.
- Stack — экземпляр шаблона CloudFormation и набор создаваемых им ресурсов.
- AMI — образ виртуальной машины в AWS.
Когда это может не сработать — типичные ошибки и решения
- Ошибка при создании: “Insufficient permissions” — проверьте IAM‑права.
- Проблема с KeyPair — KeyName должен уже существовать в регионе.
- Неправильный AllowedPattern для SSHLocation — используйте корректный CIDR.
- Если AMI недоступен в регионе — измените параметр LatestAmiId на региональный AMI.
Заключение
Мы показали, как быстро и повторяемо создать EC2‑инстанс с помощью CloudFormation и как корректно удалить ресурсы через удаление стека. Шаблон можно переиспользовать для множества стеков или расширить дополнительными ресурсами (EBS, IAM, UserData). Следуйте рекомендациям по безопасности и используйте подходящие инструменты (Terraform/CDK), если требуются мультиоблачные возможности или генерация инфраструктуры кодом.
Краткое резюме:
- CloudFormation упрощает повторяемое развёртывание.
- Шаблон использует последний Amazon Linux 2 AMI из SSM.
- Убедитесь в безопасности правил доступа перед продакшен‑развёртыванием.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone