AQ Tech Blog

CloudFormationを用いたEC2 AutoScalingGroupスタックの作成 | AQ Tech Blog

作成者: yu.yamada|2020年08月01日

20新卒入社の加島です。

最近はAWSをやっているのでAWSの周辺で検証をしてみようかと思います。

今回はCloudFormation(以下CFn)を用いたEC2 Auto Scaling Groupスタックの作成を目指します。

目標とする構成

次の図の通りです:

VPCの中にサブネットを切って、そのサブネットの中にAuto Scaling によってインスタンスが作られるというのを目指します。

Auto Scaling Groupには起動設定が食わせてあり、インスタンスはこの起動設定に応じて適切に作成されます。

ネットワークスタックの作成

Auto Scaling Groupスタックの作成の前に、まず、VPCを作っていきましょう。

チュートリアル: 別の AWS CloudFormation スタックのリソース出力を参照するのステップ1を参考にしています。

まず次のようなyaml形式のファイルを作りましょう。
大雑把には以下を行うテンプレートです。

  • VPCを作る
  • サブネットを切る
  • インターネットゲートウェイを作る
  • VPCにインターネットゲートウェイをアタッチする
  • ルートテーブルを作成する
  • 上記ルートテーブルにインターネットに出られるように設定を行う
  • サブネットにルートテーブルを関連付ける
  • あるIPアドレスからのSSH接続だけ許すようなセキュリティグループを作成する
  • 作ったリソースを他のスタックが名前で参照できるようにする

作成したらAWSマネジメントコンソールでCloudFormation > スタックから「スタックの作成」を行いましょう。

「スタックの作成」で、テンプレートの準備では「テンプレートの準備完了」を選択し、テンプレートの指定では作成した上記テンプレートファイルをアップロードすればOKです。

次に「スタックの詳細を指定」で、スタックの名前といくつかのパラメータの設定を行います。

スタックの名前は何でも構いませんが、後述の手順でこの名前を用いるので控えておいてください。この記事では "NetworkStack" とします。

パラメータは上で示した構成図と合わせるのであればPublicSubnetACidrBlockでは"10.2.1.0/24"、VpcCidrBlockでは"10.2.0.0/16"を指定してください。

あとは次へを何度かクリックするだけで大丈夫です。しばらく待てばネットワークスタックが完成します。

Auto Scaling Group スタックの作成

では本編、AutoScalingGroupスタックの作成に入ります。

手順としては起動設定の作成->Auto Scaling Groupの作成となります。

次のようなyaml形式のファイルを作りましょう。
大雑把には以下を行うテンプレートです。

  • 起動設定を作成する
    • AMIはAmazon Linux AMIとする
    • インスタンスタイプは t2.micro とする
    • 作成したセキュリティグループと関連付ける
  • Auto Scaling Groupを作成する
    • 作成したサブネットと関連付ける
    • インスタンスは1つだけ起動する
    • 作成したインスタンスはわかりやすいように名前をつけておく 

 

作成したらAWSマネジメントコンソールでCloudFormation > スタックから「スタックの作成」を行いましょう。

ネットワークスタック同様に作成したyamlファイルはアップロードしてください。

詳細設定でのスタック名は任意の名前で構いません。一方でパラメータ設定では、先に作った「ネットワークスタック」の名前を正しく入力する必要があります。本記事では"NetworkStack"です。

あとは次へを何度かクリックするだけです。

作成に随分と時間がかかりますが、しばらく待てばAuto Scaling Group スタックが作成され、インスタンスも起動します。

インスタンスへの接続

インスタンス一覧を見ればAuto Scalingによって作成されたインスタンスのパブリックIPアドレスが表示されているはずなので、お好きなSSHクライアントでアクセスしてみましょう。

はい、見慣れた表示がされましたね。これで完了です!