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
EBS ブロックデバイスマッピングを持つ EC2 インスタンス
【AWS 公式サイトの例】
AWSTemplateFormatVersion: “2010-09-09” |
上記公式サイトのテンプレートを以下のように修正
↓
AWSTemplateFormatVersion: “2010-09-09” # Red Hat Enterprise Linux 8 (HVM) # 既存のキーペアを指定します。 KeyName: “RedHat_20190429.pem” |
特に VPC の情報もなく、IPアドレスの情報もありませんが、とりあえずこのテンプレートを実行してみます。
ファイル名を「HelloEC2.yml」にしました。
「CloudFormation」のダッシュボードより「スタックの作成」ボタンをクリックします。
「スタックの作成」画面で「テンプレートの準備完了」ボタンをクリックし「テンプレートファイルのアップロード」ボタンをクリックします。
「ファイルの選択」ボタンが表示されるのでクリックします。
ファイルがアップロードされたことを確認し「次へ」ボタンをクリックします。
下図のように「スタックの名前」を入力し「次へ」ボタンをクリックします。
「スタックオプションの設定」画面で必要な個所を設定し「次へ」ボタンをクリックします。
確認画面で設定内容を確認し「スタックの作成」ボタンをクリックします。
下図のように「CREATE_COMPLETE」のメッセージが出力されることを確認します。
作成された EC2 インスタンスを確認する
作成された EC2 インスタンスを確認します。
- VPC の指定なしの場合 ← デフォルトの VPC に割り当てられます。
- プライベート IP アドレスの指定がない場合 ← 自動的に IP アドレスが割り当てられます。
- インスタンスタイプの指定がない場合 ← m1.small が割り当てられます。
- セキュリティグループの指定がない場合 ← 「default」が割り当てられます。
セキュリティグループを割り当てないとログインができない
EC2 インスタンスを作成する際に「セキュリティグループ」を割り当てないと構築後にログインができません。
ちなみに「default」のセキュリティグループの設定は以下です。
「default」のセキュリティグループを確認するとソースが自身(sg-7311f116)になっています。
セキュリティグループのソースにセキュリティグループを指定した場合、そのセキュリティグループに所属する EC2 インスタンスからのアクセスを許可します。
つまり、この場合オフィスや出先などの外部からインターネット経由のアクセスはできないということになります。
セキュリティグループに所属できるのは AWS 上のオブジェクトのみになるからです。
パブリックの EIP を割り当てても適切なセキュリティグループを割り当てなければリモートログインができないので注意しましょう。
セキュリティグループを変更する
EC2 インスタンスに割り当てられている「セキュリティグループ」を変更します。
対象の EC2 インスタンスを選択して右クリックし「ネットワーキング」–「セキュリティグループの変更」をクリックします。
下図のように「セキュリティグループの変更」画面で対象のセキュリティグループにチェックを入れて「セキュリティグループの割り当て」ボタンをクリックします。
下図のようにセキュリティグループが割り当てられたことを確認します。
EC2 インスタンスにログインできることを確認します。
S3 のファイルを削除する
最後に S3 上にアップロードしたファイルおよびバケットを削除します。
ファイル自体はローカル PC 上にあり、S3 バケットに保存し続けると料金が発生するため、CloudFormation を実行したら都度削除します。
参考サイト
AWS CloudFormationを使ってEC2インスタンスを作成する
AWS CloudFormation テンプレート
コメント