【AWS】CloudFormation で Amazon EC2 インスタンスを作成する手順【単純な作成】【Part.1】

CloudFormation を利用して Amazon E2 インスタンスを作成する手順について解説します。

以前、CloudFormation を利用して VPC の作成をしました。

 

【AWS】CloudFormation の基本的な解説(VPCの作成手順)

 

今回は更に EC2 インスタンスの作成も加えます。

 

 

 

 

CloudFormation の設計

最初に何をどうしたいのかを設計します。

 

  • EC2 インスタンス ← 1台新規作成します。
  • EC2 インスタンスのプラットフォーム(OS) ← Red Hat Linux
  • EC2 インスタンスの AMI(Amazon マシン イメージ) ←  ami-03c6a4362c5fb8c61(Red Hat Enterprise Linux 8 (HVM), SSD Volume Type) 
  • EC2 インスタンスタイプ ← m2.micro 
  • VPC ← 1 つ新規作成します。
  • CIDR ← 10.0.0.0/16
  • サブネット ← 10.0.1.0/24
  • パブリック IP ← 付けます。
  • インターネットゲートウェイ ← インターネットに接続するために作成します。
  • セキュリティグループ ← TCP/22 へのアクセス許可
  • ルートテーブル ← 1 つ新規作成します。

 

設定について

  • インターネットゲートウェイを作成して VPC に結びつきます。
  • ルートテーブルを作成しデフォルトゲートウェイ(宛先 0.0.0.0/0)のターゲットに新規作成したインターネットゲートウェイを割り当てます。

 

 

 

 

最初に全部作ろうとせずに少しずつ構築していく

最初から一度に VPC からルートテーブルから EC2 インスタンスからインターネットゲートウェイまで一気に構築しようと考えていましたが、正直なところ具体的な YAML ファイルの作成には進みませんでした。

始める前から何から手をつければいいのか分からずに立ち止まってしまったような感じです。

そのため最初から全部作ろうとせずに少しずつ構築していくことにしました。

 

 

 

 

【疑問】YAML ファイルの値にダブルクォーテーションは必要か?

様々なサイトを調べたところ YAML ファイルの値にダブルクォーテーション(”)を使用しているパターンと、使用していないパターンがありました。

AWS CloudFormation の YAML ファイルの場合は、ダブルクォーテーションを使用するのが正しいのでしょうか?

 

公式サイトを確認するとダブルクォーテーションやシングルクォーテーションは不要

AWS の公式サイトを確認するとダブルクォーテーションやシングルクォーテーションは付けていません。

かと言って 100% 絶対ついてないかと言われると、中には付いているものもあります。

 

【参考】

https://www.slideshare.net/yktko/cloudformation-getting-started-with-yaml

 

「文字列を明示するにはダブルクォートやシングルクォート」と記載がありますが、文字列にもあったりなかったりするので、自分が明示したい場合にダブルクォートやシングルクォートを使うということでいいのではないかと思います。 

 

 

EC2 インスタンスのみ構築する

まずは何も考えずに EC2 インスタンスだけ構築します。

 

AWS::EC2::Instance

参考URL:https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#aws-properties-ec2-instance-examples

 

 

EBS ブロックデバイスマッピングを持つ EC2 インスタンス

【AWS 公式サイトの例】

AWSTemplateFormatVersion: “2010-09-09” 
Description: “Ec2 block device mapping” 
Resources:  
  MyEC2Instance:  
    Type: AWS::EC2::Instance 
    Properties:  
      ImageId: “ami-79fd7eee” 
      KeyName: “testkey” 
      BlockDeviceMappings:  
        – DeviceName: “/dev/sdm” 
          Ebs:  
            VolumeType: “io1” 
            Iops: “200” 
            DeleteOnTermination: “false” 
            VolumeSize: “20” 
        – DeviceName: “/dev/sdk” 
          NoDevice: {} 

 

上記公式サイトのテンプレートを以下のように修正

AWSTemplateFormatVersion: “2010-09-09” 
Description: “Template EC2 Create” 
Resources:  
  MyEC2Instance:  
    Type: AWS::EC2::Instance 
    Properties:  

      # Red Hat Enterprise Linux 8 (HVM)
      ImageId: “ami-03c6a4362c5fb8c61” 

      # 既存のキーペアを指定します。

      KeyName: “RedHat_20190429.pem” 
      BlockDeviceMappings:  
        – DeviceName: “/dev/sdm” 
          Ebs:  
            VolumeType: “io1” 
            Iops: “200” 
            DeleteOnTermination: “false” 
            VolumeSize: “20” 
        – DeviceName: “/dev/sdk” 
          NoDevice: {} 

 

 

 

特に VPC の情報もなく、IPアドレスの情報もありませんが、とりあえずこのテンプレートを実行してみます。

ファイル名を「HelloEC2.yml」にしました。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

 

 

「CloudFormation」のダッシュボードより「スタックの作成」ボタンをクリックします。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

 

 

 

 

「スタックの作成」画面で「テンプレートの準備完了」ボタンをクリックし「テンプレートファイルのアップロード」ボタンをクリックします。

「ファイルの選択」ボタンが表示されるのでクリックします。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

 

 

 

ファイルがアップロードされたことを確認し「次へ」ボタンをクリックします。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

 

 

 

下図のように「スタックの名前」を入力し「次へ」ボタンをクリックします。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

 

 

 

 

「スタックオプションの設定」画面で必要な個所を設定し「次へ」ボタンをクリックします。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

 

 

 

確認画面で設定内容を確認し「スタックの作成」ボタンをクリックします。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

 

 

 

 

下図のように「CREATE_COMPLETE」のメッセージが出力されることを確認します。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

 

 

 

作成された EC2 インスタンスを確認する

作成された EC2 インスタンスを確認します。

  • VPC の指定なしの場合 ← デフォルトの VPC に割り当てられます。
  • プライベート IP アドレスの指定がない場合 ← 自動的に IP アドレスが割り当てられます。
  • インスタンスタイプの指定がない場合 ← m1.small が割り当てられます。
  • セキュリティグループの指定がない場合 ← 「default」が割り当てられます。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

 

 

セキュリティグループを割り当てないとログインができない

EC2 インスタンスを作成する際に「セキュリティグループ」を割り当てないと構築後にログインができません。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

ちなみに「default」のセキュリティグループの設定は以下です。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

 

 

 

「default」のセキュリティグループを確認するとソースが自身(sg-7311f116)になっています。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

セキュリティグループのソースにセキュリティグループを指定した場合、そのセキュリティグループに所属する EC2 インスタンスからのアクセスを許可します。

つまり、この場合オフィスや出先などの外部からインターネット経由のアクセスはできないということになります。

セキュリティグループに所属できるのは AWS 上のオブジェクトのみになるからです。

 

パブリックの EIP を割り当てても適切なセキュリティグループを割り当てなければリモートログインができないので注意しましょう。

 

 

 

セキュリティグループを変更する

EC2 インスタンスに割り当てられている「セキュリティグループ」を変更します。

対象の EC2 インスタンスを選択して右クリックし「ネットワーキング」「セキュリティグループの変更」をクリックします。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

 

 

 

下図のように「セキュリティグループの変更」画面で対象のセキュリティグループにチェックを入れて「セキュリティグループの割り当て」ボタンをクリックします。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

 

下図のようにセキュリティグループが割り当てられたことを確認します。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

 

EC2 インスタンスにログインできることを確認します。

【AWS】CloudFormation で EC2 インスタンスを作成する手順

 

 

 

 

 

S3 のファイルを削除する

最後に S3 上にアップロードしたファイルおよびバケットを削除します。

ファイル自体はローカル PC 上にあり、S3 バケットに保存し続けると料金が発生するため、CloudFormation を実行したら都度削除します。

 

 

 

 

 

 

参考サイト

AWS CloudFormationを使ってEC2インスタンスを作成する

AWS CloudFormation テンプレート

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください