起動テンプレート作成、EC2 Auto Scalingの作成

何度かAuto Scaling グループを作ったことがあった。最近、起動設定（Launch Configuration）があまり推奨されなくなったとのことで、その後継と言われる起動テンプレート（Launch Template）を使うことになった。慣れ親しんだものから新しいものへ。

# 概要図
イメージとしてはこんな形。昔はここの起動テンプレートの部分が、起動設定だったが、完全に置き換わった形となる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/03e81812-cf59-1d7e-e352-ea3b10e19ab8.png)

# 前提
- EC2インスタンスのAMIは取得済
- ELB、ターゲットグループ、リスナーも作成済

# 作り方

## 起動テンプレートを作る
EC2の起動テンプレートを開いて新規作成画面にいく。起動テンプレート名を適切なものに指定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/03ba6f3d-1ea3-8548-d7d4-7a2dc27ab981.png)

AMIを選ぶ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/6d97a7b7-6f58-90c1-3eb9-7e809f36b935.png)

自分で作成したAMIを選ぶ場合、以下のようにする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/89266f3f-96f8-9b47-f18c-71aa4a30f118.png)

インスタンスタイプも選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/f0d043d8-e5aa-679d-0dc5-ffeaa5718c23.png)

キーペアを指定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/3d366f67-1431-5355-192a-006f3d934e06.png)

ネットワーク設定として、サブネットやセキュリティグループを設定できる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/828b1c87-5b59-b01e-623d-c2e101991a70.png)

高度な詳細でIAMロール等を設定可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/a83f1dca-3ece-ad60-1a5f-255b0a35fa7f.png)

ユーザーデータもここで設定が可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/6fa1b11d-c271-dec1-904d-16002434eea9.png)

作成が完了すると以下画面になる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/6144a454-48ee-3b99-77b8-fb05cc3111b8.png)

## AutoScalingグループを作る
EC2からAutoScalingグループへ進み、作成するボタンを押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/0259b867-4084-3e2e-71ce-639d5f0e363b.png)

AutoScalingの名前を決める。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/01767144-9b63-a526-7960-874bdff9479d.png)

先ほど作った起動テンプレートを指定する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/2b05cae8-30bf-0c40-a1a4-a18c4330b4d8.png)

起動テンプレートを指定すると、バージョンという奇妙な設定が出る。新規作成のときは「Default」でOK.後々、起動テンプレートのAMIを更新すると、このバージョンの数がインクリメントされていく。AMIを変える度に、AutoScalingグループのこのバージョンを変えていくこととなる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/b480adee-94e3-a258-ac38-462dbf21e962.png)

次へをクリックする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/8f58bd01-0239-179e-6458-ea4a1429a47c.png)

ネットワーク設定としてVPCやAZ、サブネットを選択可能。起動テンプレートにも同じようなネットワーク設定があった気がするが、要件に応じてどちらかにする。
個人的には起動テンプレートで、セキュリティグループをつけて、AutoScalingグループでVPCとAZ（サブネット）を割り当てる方針としている。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/bcfef368-0198-bfe5-6716-af93cd60e7e4.png)

インスタンスタイプについても同様に、起動テンプレートと重複している。ここでは起動テンプレートで決めたインスタンスタイプから変える理由がないので、そのまま次へ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/c8217c38-08c8-a2b7-0c25-fcc1cec7d1ad.png)

詳細オプションでELBとの連動もできる。ここは後から設定できるので、今はロードバランサーなしで進む。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/51163e79-f45f-9a06-77c1-d4e8609220e8.png)

グループサイズを設定する。インスタンスをいくつデプロイするか？という設定。以下のように全部1にすると、AutoScalingを用いたAutoHealingという動きになる（必ず1台起動しろ、という設定なので、ヘルスチェックに違反すると既存のEC2が終了し、新たにEC2が立ち上がる）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/c39e0ea8-7218-cd16-c142-3087926b5c93.png)

スケーリングポリシーなどは要件に応じて設定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/823da918-15ff-349b-ef95-833127acb21c.png)

通知やタグも任意設定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/3aa95220-fe04-bc4f-0cd6-8daf8425746d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/56db0fe7-32c0-1861-446a-bc29c2f82777.png)

確認画面が出るので、今までの設定を確認して作成！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/f9becdc7-75d9-9026-7a20-54645dd8f7d9.png)

AutoScalingグループが新たに作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/9c1f7de7-4a49-cf92-e8e4-cc71c1e0a6d2.png)


## ELBとAutoScalingグループの連携
先ほど作成したAutoScalingグループより、ELBとの連携設定をする。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/b6d42afc-c6e3-88bd-36df-a7208211d0c6.png)

アプリケーション、ネットワークまたはGWLBターゲットグループをチェックして、対象ELBのターゲットグループを選ぶ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/5b03abf0-65a1-63c2-bd1c-34686b162481.png)

更新ボタンをポチる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/8cba7768-80ce-66ef-e036-d7c1ca596e6d.png)

ポチリ後、更新される。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/8d07280a-a47b-c6a2-a8d3-28958ed25463.png)

ELBとのヘルスチェックをAutoScalingグループに連動させるため、ヘルスチェックを編集する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/c74032ac-f3d5-4383-07e9-515eede1720b.png)

ヘルスチェックのタイプ「ELB」にチェックを入れる。猶予期間も任意に変更して、更新。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/96cd25fd-e63b-0c77-ddc8-a245c144536b.png)

これでEC2のヘルスチェックだけでなく、ELBのヘルスチェックからもAutoScalingグループの発動が判断されるようになる。

# まとめ
起動テンプレートは初めてでしたが、あんまり起動設定と変わらないというか、ちょっときめ細かになった感じで、少し便利になった感はありました。逆にそれ以外は何が変わったんだ？というレベルでもあったというか（笑）

# おまけ
## 起動テンプレートの更新
AMIを更新したいときは、起動テンプレートの以下画面から更新する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/35f0225e-f160-075e-bd67-52737a99090d.png)

もろもろAMI変えるなどの設定をして、「テンプレートのバージョンを作成」を押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/44523182-16a3-6062-a7a8-e9b3f035aa65.png)

作成したAutoScalingグループに戻り、起動テンプレートを編集する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/c612faee-208c-db11-7e1f-02ec42d6ffe5.png)

ここのバージョンを選択して、もっとも大きい数値に変える。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/547dff26-7a81-b4dd-cccb-f280faf9a377.png)

Latestにしておけば、勝手に新しい起動テンプレートのバージョンを見に行ってくれる。ただし、新バージョンの起動テンプレートに誤りがあったら・・・後の祭り。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229539/6a46ae3e-6445-4cab-7b13-3111b91e103f.png)


楽しいAutoScalingライフを。。。