Гид по технологиям

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

5 min read Cloud AWS Обновлено 20 Nov 2025
EC2 через CloudFormation — быстрый гайд
EC2 через CloudFormation — быстрый гайд

Обложка: AWS EC2 и CloudFormation

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

В статье не охвачены все возможные параметры CloudFormation для ресурса EC2. Для полного списка опций используйте официальную документацию AWS.

Предварительные требования

  • Учётная запись AWS. Создайте, если её нет.
  • Базовое понимание шаблонов CloudFormation.
  • Базовое понимание EC2-инстансов и SSH.

Что мы сделаем

  1. Зайдём в AWS Management Console.
  2. Подготовим шаблон CloudFormation.
  3. Создадим стек через консоль.
  4. Удалим стек и проверим удаление ресурсов.

Вход в AWS

Перейдите на страницу входа в AWS и введите учётные данные вашей учётной записи.

Страница входа в AWS

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

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 через консоль

  1. В AWS Console перейдите в Services и найдите CloudFormation.

Обзор CloudFormation

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

Создать стек — новый ресурс

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

Загрузка шаблона

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

Детали стека

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

Добавление тегов

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

Кнопка создать стек

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

Стек успешно создан

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

Панель EC2

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

Проверка инстанса в списке

Удаление стека и ресурсов

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

  1. В CloudFormation выберите нужный стек и нажмите Удалить.

Удаление стека

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

Подтвердите удаление стека

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

Удаление завершено

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

Инстанс в состоянии 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.

Краткая методология

  1. Подготовьте шаблон и ключи.
  2. Разверните стек в тестовом аккаунте/регионе.
  3. Проверяйте Outputs и логи CloudFormation.
  4. Приведите шаблон к требованиям безопасности.
  5. Пригодность тестируйте через 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.
  • Убедитесь в безопасности правил доступа перед продакшен‑развёртыванием.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство