
2025.02.12
職員一人あたり52時間の残業削減に成功 kintone導入がもたらした富士吉田市の自治体DX“変革”ハウツー
CloudFormationで爆速インフラ構築(全1記事)
リンクをコピー
記事をブックマーク
alichan氏:では私のLTを始めたいと思います。今回は「CloudFormationで爆速インフラ構築」というテーマでお話ししたいと思います。
最初に私の自己紹介です。「あなたは誰?」ということで、とあるIT企業で働きながら、AWSとかJavaなどを用いてWeb開発を行っている人です。会社では主にCodeシリーズとECRを使用したコンテナ資源の移送だったり、EC2内でのログ監視やバッチ実行などを行っています。
プライベートでは、AWSに関する記事を「Zenn」に書いて公開したりしています。一緒に勉強をしたりプログラミングイベントに参加したりしてくれる方を募集中なので、気軽につながりましょう、ということでよろしくお願いします。
(スライドを示して)題名にもありますが、今日やることはこちらです。「CloudFormationで爆速インフラ構築」ということで、AWSのCloudFormationというIaCツールを用いて「AWS上のインフラ環境の構築を一瞬で行う方法」を紹介したいと思います。
具体的に「CloudFormationって何?」「どんなインフラ環境をどうやって構築するの?」というところを次のスライドから伝えていこうと思います。
知っている方も多いと思いますが、「CloudFormationって何?」ということで、簡単にCloudFormationについて説明しようと思います。CloudFormationというのは、AWSサービスによるインフラ環境構築を、設定ファイルとボタン押下のみで行ってくれるサービスになっています。
AWSサービスによるインフラ環境というのは、例えばEC2上にWebアプリケーションを載せて公開されているサービスとか、API GatewayとLamdaで作成されたWeb APIを公開するサービスなどがあると思いますが、EC2だったり、API Gatewayだったり、Lamdaなどを指しています。
ふだんみなさんもやっていると思いますが、AWSサービスを立ち上げるために、マネジメントコンソールから手動で一つひとつサービスを立ち上げていることを行わなくてよくなるというのが、CloudFormationの利点になっています。
この2点をわかりやすく説明してみようと思います。(スライドを示して)この左の画像が、私が前にZennで書いたReactアプリケーションを手動でEC2に載せて公開する記事です。
これを実際の実務の現場で作るとなったら、すごく長い手順書になってしまいます。これを順々に実行しないといけないところ、手動でReactアプリケーションを順々に立ち上げることしかできなかったところを、CloudFormationを利用することで、EC2の立ち上げとReactアプリケーション起動用の設定を記載したyamlファイルを設置して、環境構築の実行ボタンを押す。
それだけでReactアプリケーションを一発で立ち上げられるようになるということが、CloudFormationでできます。このyamlファイルがテンプレートと呼ばれています。
次のスライドは環境構築のyamlファイルになります。どういう構造になっているのか、どういう属性が存在するのかを簡単に紹介していこうと思います。
では、CloudFormationで実際に使用するテンプレートの構造を見ていきます。スライドに書かれているように、テンプレートを記載して環境構築を行っていきます。
テンプレートのトップレベルの属性に複数の定義された要素がありますが、一番重要なのが「Resources:」です。これだけあれば最悪立ち上がるといったプロパティになっています。では、実際に「Resources:にはどういうものを置くの?」というところを次のスライドから見ていこうと思います。
(スライドを示して)こちらは後半に見せるデモで使用するテンプレート内に記載されているResources:の一部を取り上げたものです。後半のデモではCloudFormationでEC2上にReactアプリケーションを載せてWeb上に公開するところを動画で撮ったので、それを公開します。
その際に立ち上げるリソースがResources:配下にいくつか記載されていますが、ここではその一部のEC2インスタンスの記載に焦点を当てて、配下の各プロパティについてざっくり説明していきます。
トップに記載されているのがEC2Instance:です。EC2Instance:というResources:配下のすぐ下に記載されているものがあります。これは論理IDといって自分で決められるものです。自分で好きな名前をリソースに付けられます。
「Type:」が起動するリソースを決定するもので、ここで「AWS::EC2::Instance」と書くことで、「EC2インスタンスの設定を記載したものだよ」という合図になっています。その下の「Properties:」は下にいくつかの属性がありますが、このリソースに対して設定できる固有の設定になっています。
例えばマネジメントコンソールからEC2を立ち上げた方ならわかると思いますが、立ち上げの際に「Imageld:」というインスタンスのOSを決定するものだったり、「InstanceType:」を使用するEC2インスタンスのハードウェアの性能を決定するものを選択してから立ち上げています。
こういったリソースを立ち上げる際に設定する値を書くことで、EC2インスタンス立ち上げの際に設定値が反映されるようになります。
テンプレート内では組み込み関数というものが使用できます。例えば「SecurityGroupIds:」の下にある「GetAtt:」というものは、Resources:配下の他のリソースに紐づく値を取ってくることができます。
今はEC2インスタンスしか書いていないのですが、他のところにSecurityGroupを乗せているので、設定したセキュリティグループの下のGroupIdというものを取ってくることができる関数になっています。
もう1個が「Ref:」という関数です。「SubnetId:」の下にある「Ref:」という関数がありますが、これも別のリソース、EC2インスタンス以外のサブネットというリソースを取ってきて、それのIDを参照することができる関数になっています。
以上、ざっくりとしたテンプレートの説明でした。
では、実際に用意したテンプレートを使用してEC2上にReactアプリケーションを起動して、Web上に公開してみます。(スライドを示して)今回作成するインフラ環境のアーキテクチャはこちらになっています。
EC2上にWebサーバーを提供するためのソフトウェアのNginxを載せて、その中にReactアプリケーションを格納します。そして、Web上にReactアプリケーションを公開するというところを動画で簡単にやります。
これを手動でマネジメントコンソールで行うと大変面倒くさいのですが、テンプレートファイルとボタンクリックの実行のみで構築していきます。
ではデモタイムということで、実際にCloudFormationで環境を構築していきます。
(画面を示して)今回用意したテンプレートというのはざっくりとこんな感じです。
「AWSTemplateFormatVersion」。テンプレートのバージョンがあって、「Description」という説明があって、「Resources:」というEC2インスタンスを入れるVPCだったり、サブネットだったりなどの設定があって、ルートテーブルがあってといった感じで、AWS上を立ち上げるサービスを順々に記載しています。
最後にEC2インスタンスです。(画面を示して)こちらはEC2インスタンスの説明が記載されているかたちになっています。これで実行すれば、Resources:配下のすべてのリソースが立ち上がるかたちになっています。
立ち上げているところを動画で共有しますので、それを見てもらいます。(画面を示して)これはCloudFormationの画面になっています。ここでスタックの作成という、実際のリソースの塊を立ち上げる設定をして、次にyamlファイルを設定しています。
設定をしたら「次へ」を押して、立ち上げるリソースのグループの名前を設定します。名前をreact-serverと決めて「次へ」を押して、「次へ」を押して。
そのあとは特に設定することもないので、これで実行ということで、ファイルからリソースを立ち上げています。
イベントで、立ち上がったリソースはどれかをどんどん更新して見せてくれます。CREATE_COMPLETEは「このリソースの配下にあったものが立ち上がったよ」という表示が出ています。
これを更新し続けると、最終的にはすべてのリソースが立ち上がるような状況になっています。react-server自体もCREATE_COMPLETEになったので、これでEC2インスタンスが立ち上がったはずです。
EC2インスタンスを調べてみると、実行しているインスタンスが1つあります。これを調べてみて、インスタンスIDを押下して、パブリックIPv4アドレスをコピペしてブラウザに貼り付けると、Nginxの初期ページが表示されるというかたちになっています。
しばらく経てばEC2の最初のスクリプトが実行されて、Reactを入れます。Reactを立ち上げるかたちになったので、Reactが立ち上がりました。
こんな感じで、簡単にReactのWebアプリケーションをWeb上に公開することができるようになっています。
以上が私の発表になります。CloudFormationの良さが少しでも伝わっていたらうれしいです。
今日話した内容とさらに複雑な環境構築を行っているZenn記事を公開しているので、「おもしろそうだな」と思った方がいたら、この記事も読んでもらえるとうれしいです。
ご清聴ありがとうございました。
関連タグ:
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.02.14
報連相ができない部下に対するコミュニケーションの取り方 「部下が悪い」で終わらせない、管理職のスキル向上のポイント
2025.02.10
A4用紙を持ち歩いて殴り書きでアウトプット コクヨのワークスタイルコンサルタントが語る、2種類のメモ術
着想から2か月でローンチ!爆速で新規事業を立ち上げる方法
2025.01.21 - 2025.01.21
新人の報連相スキルはマネージメントで引きあげろ!~管理職の「他責思考」を排除~
2025.01.29 - 2025.01.29
【手放すTALK LIVE#45】人と組織のポテンシャルが継承されるソース原理 ~人と組織のポテンシャルが花開く「ソース原理」とは~
2024.12.09 - 2024.12.09
『これで採用はうまくいく』著者が語る、今こそ採用担当に届けたい「口説く」力のすべて
2024.11.29 - 2024.11.29
【著者来館】『成果を上げるプレイングマネジャーは「これ」をやらない』出版記念イベント!
2025.01.10 - 2025.01.10