今回使用するAWSサービス
1.CloudFormation
3.CloudWatch
4.SNS
今回の構成
検証環境
VPC
2つのAZ
各AZに1つずつパブリックサブネット
各パブリックサブネットにApache入りEC2を1台ずつ
インターネットゲートウェイ
ALB
ターゲットグループに2台のEC2を登録
HTTPS通信用に独自ドメイン + ACM証明書
CloudWatch + SNSによるメール通知
すでにymlでテンプレートが存在している状態ですのでそれをもとに環境構築を進めていきます。
構築前の確認事項
1.リージョン
「ap-northeast-1」
指定は特に無いので無難に東京リージョンにします。
2.OS
[Amazon Linux 2023]
Apache導入が簡単
AWSとの相性が良い
検証でも扱いやすい
という理由からLinuxにします。
3.EC2インスタンスタイプ
t3.micro 2台
検証用環境ということで無料枠のあるタイプにします。
4.ドメイン
独自ドメインを所有しているためそれを使用していきます。
1.AMI作成用のインスタンス起動前準備
1.サブネットの作成
2.インターネットゲートウェイの作成
今回VPCはデフォルトを使用します。
3.ルートテーブルの作成 (デフォルトルート)
アクションから1で作成したサブネットと関連付けておきます。
ルートを編集

アクション→ルートを編集
左下にあるルートを追加、上で作成したインターネットゲートウェイを追加します。
4.インスタンスの起動
・Amazon Linux 2023
・t3.micro
・キーペアの作成
・パブリックIP 有効
・セキュリティグループ
ssh 22 デフォルト
HTTP 80 0.0.0.0
その他の設定はデフォルトでインスタンスの起動をします。
2.Apacheをインストール
Windows検索バーから「ターミナル」を検索
インスタンスに割り当てられているパブリックIPからSSH接続します。
$ssh -i [キーペアのフルパス] ec2-user@[パブリックIPアドレス]
下記のコマンドでインストールから起動までを実行します
$sudo dnf update -y
$sudo dnf install -y httpd
$sudo systemctl enable httpd
$sudo systemctl start httpd
$sudo systemctl status httpd
以下のようにenabled,active(running)になっていればOKです
3.テストページの作成
まずは上記で作成したテストページが出来ているかコマンドで確認します
curl localhost
バッチリ出来てますね
次にWebサイト上で確認します
4.AMIを作成
コンソールに戻り、上部メニューの「インスタンスの状態」から「イメージとテンプレート」→「イメージの作成」を選択
名前を適当に入れて、あとは特に触らず一番右下のイメージを作成を押下AMI作成完了まで待ちます。
左メニューの中にAMIがあるので、中を見ると
先程作成したAMIが出来ていますので、画像左下にあるAMI IDを控えておきます。
後でCloudFormationにて使用します。
5.テンプレートの修正
先程作成したAMIのIDに置き換え
DependsOn:myInterneetGateway
→AttachGateway
SSHが全世界に公開されているので自身のグローバルIPに変更します。
修正が完了したら保存します、念の為修正版として別名で保存しておきます。
6.CloudFormationでスタック作成
AWSコンソール上部の検索窓に「CloudFormation」を検索
スタックの作成を押下
テンプレートファイルのアップロードを選択してyamlファイルをアップロードします。
その他の設定は、キーペアのみ実際に所持しているものを選択して送信を押下して完了です。
ステータスがCREATE_COMPRETEになったらOK
作成したスタック内の「LoadBalancerDNS」右側にある値を以下でWeb検索すると、
「3.テストページの作成」で作成したページが表示されます。
7.ドメインを使用してのHTTPS通信
1.ACMで証明書を作成
AWSコンソールで 「Certificate Manager」を検索
リージョンは「東京」にします。
パブリック証明書をリクエスト→ドメイン名入力→リクエスト
(今回ドメインはルート53で作成したものを使います。)
2.DNS検証
上記で証明書が作成出来たら検証用のCNAMEレコード情報が出ますので
以下のボタンを押下→レコードを作成
ステータスが完了になるまで待つ(Certificate Manager)
8.ALBにHTTPS(443)リスナーを追加
証明書のステータスがIssuedになっていることを確認したら、EC2左タブ下の方にあるロードバランサーから作成済みのALBを選択

リスナーとルールタブからリスナーの追加を選択

プロトコルをHTTPS:443
先ほど作成した証明書を選択します。
設定出来たら、リスナーの追加を押下、セキュリティグループにもHTTPS:443を許可します
9.Route 53でドメインをALBへ向ける
Route53を開きすでに作成済みのホストゾーンを選択
その中のレコードを作成を押下
入力内容は以下
レコードタイプ:A - IPv4 address
エイリアス: ON
リージョン:東京
対象ALB:cf-elb
レコードの作成が完了したら
「3.テストページの作成」で作成したページが表示されます。
10.HTTPをHTTPSにリダイレクト
EC2→ロードバランサー→対象ロードバランサー「リスナーとルールタブ」→HTTP:80を選択でルールを編集
デフォルトを転送からリダイレクトに変更
ここまで完了できたら
http://ホストゾーン名→https://ホストゾーン名
自動でhttpsに変更されればOK
12.SNSトピック作成
左上部検索メニューからSNSと検索
一番右側にあるトピックの作成を押下
今回はスタンダードを使用します。
作成完了したら、サブスクリプションの作成を押下
プロトコルをEメールにしてサブスクリプションを作成しました。
13.CloudWatchアラーム作成
SNSの作成が完了したら次は何を通知するのか設定していきます。
まずはEC2のCPU使用率が高い時の通知を作成します。
左上部検索バーからCloudWatchを検索
アラームを作成を押下
メトリクスを設定したら次は条件を設定
先ほど作成下SNSで通知するように設定します。
同じ容量で以下のアラームも作成します。
StatusCheckFailed
ALBのUnHealthyHostCount
CPU低下アラーム(20%未満)
アラームが作成完了したら設定したメールアドレスで動作確認することを忘れず





























