[参加レポート] 第25回クラウド女子会 AWS環境のコード管理 CloudFormationハンズオン編 #cloudgirl #jawsug

[参加レポート] 第25回クラウド女子会 AWS環境のコード管理 CloudFormationハンズオン編 #cloudgirl #jawsug

改めてハンズオンをすると学びがありました。

Clock Icon2024.6.29
facebook logohatena logotwitter logo

コーヒーが好きな emi です。

2024/6/29(土)に目黒セントラルスクエアでおこなわれた「第25回クラウド女子会 AWS環境のコード管理 CloudFormationハンズオン編」の参加レポートです。

ハンズオン内容

“AWS Hands-on for Beginners - AWS環境のコード管理 AWS CloudFormationでWebシステムを構築する“ 編を参加者全員で実施しました。このハンズオンは公開されていてどなた様も体験いただけます。名前や勤務先メールアドレス等必要事項を入力したうえでお試しください。

テンプレートファイルと PDF 資料がダウンロードできます。手順は動画で説明されます。

学んだこと

CloudFormation はまあまあ書いているつもりだったのですが、改めて学んだこともありました。

yaml コード

Fn::GetAZs

組み込み関数 Fn::GetAZs は、指定したリージョンのアベイラビリティーゾーン(AZ)をアルファベット順にリストした配列を返します。AZ 情報をハードコーディングせずに済む、という関数なのですが、注意点もあります。

デフォルト サブネットがあるアベイラビリティーゾーンがない場合を除き、Fn::GetAZs 関数はデフォルト サブネットがあるアベイラビリティーゾーンのみを返します。その場合、すべてのアベイラビリティーゾーンが返されます。

要するにデフォルト VPC に含まれる デフォルトのサブネットがある AZ のみを返す ということです。デフォルト VPC の設定に応じて異なる結果を返す可能性があり、必ずしもリージョン内の全ての AZ を返すとは限りません。

また、古い AWS アカウントをお使いの場合、廃止予定の AZ が自動で入力されてテンプレートの展開が失敗する ことがあります。

当日はこれらのエラーに引っかかってしまった方がいらっしゃいました。

Cloud9

Cloud9 IDE の画面は通常のマネジメントコンソール画面と UI が異なります。マネジメントコンソール画面に戻るには、画面左上の Cloud9 アイコンをクリックし「Go To Your Dashboard」をクリックすると戻れます。

Tab キーで入力されるインデントの数はデフォルトで 4 なのですが、設定から変更できます。
Cloud9 アイコンをクリックし「Preferences」を選択します。[Code Editor (Ace)] - [Soft Tabs] の +- をクリックすると増やしたり減らしたりできます。

CloudFormation スタックの作成と変更

CloudFormation スタックの操作方法は以下 3 種類あります。

  • AWS マネジメントコンソール
  • AWS CLI
  • 各種 SDK

私はマネジメントコンソールから手動で行ってしまうことが多いのですが、今回のハンズオンでは AWS CLI でテンプレートの検証、スタック作成、スタック更新を行いました。

ハンズオンでは Cloud9 上に CloudFormation の YAML テンプレートファイルをアップロードし、アップロードしたファイルを指定して AWS CLI コマンドを実行する手順となっています。

その他

ALB のターゲットグループに EC2 が含まれている場合、EC2 のスタックを削除しようとするとエラーになることもなく「UPDATE_COMPLETE」になるんですね。
「エラーにならないのに削除もできないな…?」と思ったのですが、状況の理由に記載されていました。

Export <アウトプット> cannot be deleted as it is in use by <スタック名>

また、思ったより RDS の作成が速いことに驚きました。

RDS が起動するまでの時間は DB インスタンスのスペックや Multi-AZ かどうかに依存するようです。
今回のハンズオンでは検証用途で使われる比較的小さなサイズの DB インスタンス db.t3.micro が指定されており、更に Single-AZ であったため、RDS のスタック展開は 5 ~ 7 分程度で完了 しました。
最近は大きなサイズの RDS を Multi-AZ で起動する機会が多かったため、RDS の起動には 20 分くらいかかるものと思い込んでいました。時間かかるとか言ってすみませんでした。

にしても昔より早くないですか…?

追記:元のハンズオンのテンプレートでは db.t2.micro、10GB となっているのですが、ハンズオン実施時点で少なくとも MySQL では作成不可となっていたため、当日は db.t3.micro、20GB に変更したテンプレートを配布いただきました。運営の五味さん、ご配慮ありがとうございます!

感想

今回も和やかな雰囲気でした。CloudFormation は比較的分かっているつもりだったのですが、改めてハンズオンしてみると知らなかったこともあり、勉強になりました。

運営の皆さん、会場提供いただいた AWS 様、参加者の皆さん、どうもありがとうございました。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.