Поиск по сайту:

Как использовать Cloudformation для создания экземпляра EC2


На этой странице

  1. Предварительные условия
  2. Что будем делать?
  3. Войти в AWS
  4. Создать шаблон
  5. Создание стека Cloudformation
  6. Удалить стек Cloudformation
  7. Заключение

Прежде чем мы продолжим, я предполагаю, что вы знакомы с сервисом EC2 на AWS и знакомы с его основными компонентами. Я бы рекомендовал посетить мою статью, чтобы создать инстанс EC2 с помощью консоли AWS и понять основы инстанса EC2. Нажмите здесь, чтобы перейти к статье. В этой статье мы создадим экземпляр EC2 с последней версией Linux AMI с помощью Cloudformation, поэтому необходимо знать основы формирования облака. Даже если вы не знакомы с Cloudformation и просто хотите создать с его помощью экземпляр, не беспокойтесь и продолжайте читать статью.

В этой статье мы не будем рассматривать все варианты, доступные в Cloudformation для EC2. Если вы хотите узнать, какие параметры доступны в сервисе Cloudformation for EC2, посетите официальную документацию AWS здесь.

Предпосылки

  1. Аккаунт AWS (создайте, если у вас его нет).
  2. Основное понимание шаблонов Cloudformation.
  3. Основные сведения об экземплярах EC2.

Что мы будем делать?

  1. Войдите в AWS.
  2. Создайте шаблон.
  3. Создание стека Cloudformation
  4. Удалить стек Cloudformation

Войти в АВС

Нажмите здесь, чтобы перейти на страницу входа в AWS. Введите свои учетные данные пользователя, чтобы войти в свой аккаунт AWS.

После успешного входа в свою учетную запись AWS вы увидите основную консоль управления AWS, как показано ниже.

Создать шаблон

Создайте шаблон 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]

Создайте стек Cloudformation

Чтобы перейти на панель инструментов Cloudformation, щелкните службы в левом верхнем углу экрана и выполните поиск Cloudformation.

Вот главная панель инструментов Cloudformation. У меня уже есть один стек, созданный в моей учетной записи в выбранном регионе.

Чтобы создать новый стек, нажмите Создать стек --> С новыми ресурсами (стандартно).

Здесь выберите \Загрузить файл шаблона\ и выберите шаблон, который вы только что создали на своем локальном компьютере на предыдущем шаге. Чтобы продолжить, нажмите кнопку «Далее».

Укажите имя стека, выберите тип экземпляра и существующий ключ из своего аккаунта. Вы можете указать определенный IP-адрес, который будет разрешен для SH на сервере, в противном случае оставьте 0.0.0.0/0, чтобы разрешить входящий трафик через порт 22. Нажмите кнопку «Далее», чтобы продолжить.

Прокрутите страницу до конца и нажмите кнопку «Создать стопку».

Создание займет несколько минут, после завершения создания вы увидите статус \CREATE_COMPLETE\.

Чтобы проверить, был ли создан экземпляр, перейдите на панель инструментов EC2. Чтобы перейти на панель инструментов EC2, нажмите на сервисы в левом верхнем углу экрана и выполните поиск EC2.

На панели управления EC2 нажмите \Экземпляры\ на левой панели.

Здесь вы можете видеть, что был создан новый экземпляр. Вы можете проверить и подтвердить его данные.

Удалить стек Cloudformation

Когда вам больше не нужен экземпляр, вы можете удалить его, удалив стек Cloudformation. Удаление стека Cloudformation удаляет созданные им ресурсы. Чтобы удалить стек, нажмите на кнопку «Удалить».

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

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

Чтобы убедиться, что удаление прошло успешно, перейдите на панель управления EC2 и посмотрите состояние экземпляра. На следующем снимке экрана видно, что состояние экземпляра завершено, вы увидите тот же статус.

Заключение

В этой статье мы увидели, как легко создать инстанс EC2 с помощью стека Cloudformation. Мы можем использовать один и тот же шаблон для создания нескольких стеков. Мы также увидели, что ресурсы, созданные с помощью стека Cloudformation , также можно удалить, удалив сам стек.