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

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

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

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

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

https://cloudgirl.doorkeeper.jp/events/174282

ハンズオン内容

“AWS Hands-on for Beginners - AWS環境のコード管理 AWS CloudFormationでWebシステムを構築する“ 編を参加者全員で実施しました。このハンズオンは公開されていてどなた様も体験いただけます。名前や勤務先メールアドレス等必要事項を入力したうえでお試しください。
https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-cfn-2022-reg-event.html
テンプレートファイルと PDF 資料がダウンロードできます。手順は動画で説明されます。

学んだこと

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

yaml コード

Fn::GetAZs

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

https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-getavailabilityzones.html

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

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

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

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

Cloud9

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

jawsug-cloudgirl-25-cfn-handson_1

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

jawsug-cloudgirl-25-cfn-handson_2

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 <スタック名>

jawsug-cloudgirl-25-cfn-handson_3

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

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

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

感想

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

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

https://x.com/numaguchi/status/1806956450868269426

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.