Cloudformationを使用してEC2インスタンスを作成する方法

先に進む前に、AWSのEC2サービスを知っていて、その基本コンポーネントを知っていることを前提としています。 AWSコンソールを使用してEC2インスタンスを作成し、EC2インスタンスの基本を理解するには、私の記事にアクセスすることをお勧めします。ここをクリックして記事に移動してください。 この記事では、Cloudformationを使用して最新のLinux AMIでEC2インスタンスを作成するため、クラウド形成の基本を理解する必要があります。 Cloudformationに気づいておらず、Cloudformationを使用してインスタンスを作成したい場合でも、心配する必要はありません。記事を続行してください。

この記事では、Cloudformation forEC2で利用できるすべてのオプションについて説明するわけではありません。 Cloudformation for EC2サービスで利用できるすべてのオプションを知りたい場合は、AWSの公式ドキュメントにアクセスしてください ここに

前提条件

  1. AWSアカウント(作成する お持ちでない場合)。
  2. Cloudformationテンプレートの基本的な理解。
  3. EC2インスタンスの基本的な理解。

何する?

  1. AWSにログインします。
  2. テンプレートを作成します。
  3. Cloudformationスタックを作成する
  4. Cloudformationスタックを削除します

AWSにログインします

クリック ここに AWSログインページに移動します。 ユーザーの認証情報を入力して、AWSアカウントにログインします。

ログインページ

AWSアカウントに正常にログインすると、次のようなメインのAWS管理コンソールが表示されます。

AWS管理コンソール

テンプレートを作成する

次のコンテンツを使用して、ローカルマシンにテンプレートcreate-ec2-instance.templateを作成します。

テンプレートをGithubリポジトリからダウンロードすることもできます。テンプレートへのリンクは以下に記載されています。

https://github.com/shivalkarrahul/DevOps/blob/master/aws/cloudformation/create-ec2-instance/create-ec2-instance.template

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<:ec2::image::id>'
    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]</:ec2::image::id>

Cloudformationスタックを作成する

Cloudformationダッシュボードに移動するには、画面の左上にあるサービスをクリックして、Cloudformationを検索します。

Cloudformationを検索する

これがCloudformationのメインダッシュボードです。 選択したリージョンのアカウントに、すでに1つのスタックが作成されています。

Cloudformationダッシュボード

新しいスタックを作成するには、[スタックの作成]->[新しいリソースを使用(標準)]をクリックします。

新しいリソースでスタックを作成する

ここで、[テンプレートファイルのアップロード]を選択し、前の手順でローカルマシンに作成したテンプレートを選択します。 続行するには、[次へ]ボタンをクリックしてください。

テンプレートをアップロードする

スタックに名前を指定し、インスタンスタイプを選択し、アカウントから既存のキーを選択します。 サーバーへのSHを許可する特定のIPを指定できます。それ以外の場合は、0.0.0.0 / 0を維持して、ポート22での着信トラフィックを許可します。[次へ]ボタンをクリックして続行します。

スタックの詳細を指定する
タグはオプションです。このステップでタグを追加する場合と追加しない場合があります。 「次へ」ボタンをクリックしてください。必要に応じてタグを追加します

ページの最後をスクロールして、[スタックの作成]ボタンをクリックします。

スタックを作成する

作成には数分かかります。作成が完了すると、ステータスが「CREATE_COMPLETE」として表示されます。

スタックの作成が完了しました

インスタンスが作成されているかどうかを確認するには、EC2ダッシュボードに移動します。 EC2ダッシュボードに移動するには、画面の左上にあるサービスをクリックしてEC2を検索します。

EC2を検索

EC2ダッシュボードで、左側のパネルの[インスタンス]をクリックします。

EC2ダッシュボード

ここで、新しいインスタンスが作成されたことがわかります。 詳細を確認できます。

インスタンスの確認

Cloudformationスタックを削除します

インスタンスが不要になったら、Cloudformationスタックを削除してインスタンスを削除できます。 Cloudformationスタックを削除すると、作成したリソースが削除されます。 スタックを削除するには、「削除」ボタンをクリックしてください。

スタックを削除します

表示されたポップアップで削除アクションを確認します。

削除の確認

削除が成功すると、ステータスが「DELETE_COMPLETE」と表示されます。

削除完了

削除が成功したかどうかを確認するには、EC2ダッシュボードに移動してインスタンスの状態を確認します。 次のスクリーンショットでは、インスタンスの状態が終了していることがわかります。同じステータスが表示されます。

インスタンスの状態を確認する

結論

この記事では、Cloudformationスタックを使用してEC2インスタンスを作成するのがいかに簡単であるかを見ました。 同じテンプレートを使用して、複数のスタックを作成できます。 また、Cloudformationスタックを使用して作成されたリソースは、スタック自体を削除することで削除できることもわかりました。

Hope this helps!

Source link