1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWSテンプレートを使用してインフラ環境構築

1
Posted at

今回使用する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で作成したサブネットと関連付けておきます。
ルートを編集
image.png

アクション→ルートを編集
左下にあるルートを追加、上で作成したインターネットゲートウェイを追加します。

image.png

4.インスタンスの起動

・Amazon Linux 2023
・t3.micro
・キーペアの作成
・パブリックIP 有効
・セキュリティグループ
ssh 22 デフォルト
HTTP 80 0.0.0.0

その他の設定はデフォルトでインスタンスの起動をします。

image.png

2.Apacheをインストール

Windows検索バーから「ターミナル」を検索
インスタンスに割り当てられているパブリックIPからSSH接続します。

$ssh -i [キーペアのフルパス] ec2-user@[パブリックIPアドレス]

image.png

下記のコマンドでインストールから起動までを実行します

$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です

image.png

3.テストページの作成

image.png

まずは上記で作成したテストページが出来ているかコマンドで確認します

curl localhost

バッチリ出来てますね

image.png

次にWebサイト上で確認します

http://IPアドレス

image.png

4.AMIを作成

コンソールに戻り、上部メニューの「インスタンスの状態」から「イメージとテンプレート」→「イメージの作成」を選択

image.png

名前を適当に入れて、あとは特に触らず一番右下のイメージを作成を押下AMI作成完了まで待ちます。

左メニューの中にAMIがあるので、中を見ると

image.png

先程作成したAMIが出来ていますので、画像左下にあるAMI IDを控えておきます。
後でCloudFormationにて使用します。

image.png

5.テンプレートの修正

先程作成したAMIのIDに置き換え

image.png

DependsOn:myInterneetGateway
→AttachGateway

image.png

SSHが全世界に公開されているので自身のグローバルIPに変更します。

image.png

修正が完了したら保存します、念の為修正版として別名で保存しておきます。

6.CloudFormationでスタック作成

AWSコンソール上部の検索窓に「CloudFormation」を検索
スタックの作成を押下

image.png

テンプレートファイルのアップロードを選択してyamlファイルをアップロードします。

その他の設定は、キーペアのみ実際に所持しているものを選択して送信を押下して完了です。

image.png

ステータスがCREATE_COMPRETEになったらOK

image.png

作成したスタック内の「LoadBalancerDNS」右側にある値を以下でWeb検索すると、

http://LoadBalancerDNS名

image.png

「3.テストページの作成」で作成したページが表示されます。

image.png

7.ドメインを使用してのHTTPS通信

1.ACMで証明書を作成
AWSコンソールで 「Certificate Manager」を検索
リージョンは「東京」にします。
パブリック証明書をリクエスト→ドメイン名入力→リクエスト
(今回ドメインはルート53で作成したものを使います。)

image.png

2.DNS検証
上記で証明書が作成出来たら検証用のCNAMEレコード情報が出ますので
以下のボタンを押下→レコードを作成

image.png

ステータスが完了になるまで待つ(Certificate Manager)

8.ALBにHTTPS(443)リスナーを追加

証明書のステータスがIssuedになっていることを確認したら、EC2左タブ下の方にあるロードバランサーから作成済みのALBを選択
image.png
リスナーとルールタブからリスナーの追加を選択
image.png

プロトコルをHTTPS:443
先ほど作成した証明書を選択します。
設定出来たら、リスナーの追加を押下、セキュリティグループにもHTTPS:443を許可します

image.png

9.Route 53でドメインをALBへ向ける

Route53を開きすでに作成済みのホストゾーンを選択
その中のレコードを作成を押下

入力内容は以下

レコードタイプ:A - IPv4 address
エイリアス: ON
リージョン:東京
対象ALB:cf-elb

レコードの作成が完了したら

https://ホストゾーン名

「3.テストページの作成」で作成したページが表示されます。

image.png

10.HTTPをHTTPSにリダイレクト

EC2→ロードバランサー→対象ロードバランサー「リスナーとルールタブ」→HTTP:80を選択でルールを編集

image.png

デフォルトを転送からリダイレクトに変更

image.png

ここまで完了できたら

http://ホストゾーン名→https://ホストゾーン名
自動でhttpsに変更されればOK

12.SNSトピック作成

左上部検索メニューからSNSと検索

一番右側にあるトピックの作成を押下

image.png

今回はスタンダードを使用します。

image.png

作成完了したら、サブスクリプションの作成を押下
プロトコルをEメールにしてサブスクリプションを作成しました。

image.png

13.CloudWatchアラーム作成

SNSの作成が完了したら次は何を通知するのか設定していきます。
まずはEC2のCPU使用率が高い時の通知を作成します。

左上部検索バーからCloudWatchを検索

アラームを作成を押下

image.png

image.png

メトリクスを設定したら次は条件を設定

image.png

先ほど作成下SNSで通知するように設定します。

image.png

同じ容量で以下のアラームも作成します。

StatusCheckFailed
ALBのUnHealthyHostCount
CPU低下アラーム(20%未満)

アラームが作成完了したら設定したメールアドレスで動作確認することを忘れず

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?