はじめに
CloudFormation(クラウドフォーメーション)は、AWS(Amazon Web Services)が提供する「インフラをコードで管理する」ためのサービスです。
これを使うことで、手作業でAWSリソースを作成するのではなく、テンプレート(YAMLまたはJSON形式のファイル) を用いて自動的にリソースをデプロイできます🤗
目次
🧷 CloudFormationの基本構造
CloudFormationには、次の3つの重要な概念があります。
🔹 テンプレート(Template)
AWSリソース(EC2, S3, RDS, Lambdaなど)を定義する 設計図 のようなもの。YAMLまたはJSON形式で記述されます。
🔹 スタック(Stack)
テンプレートを使って作成された 実際のAWSリソースの集合。
例:EC2インスタンス、セキュリティグループ、S3バケットなどを含む環境。
🔹 変更セット(Change Set)
既存のスタックを更新する前に、変更の影響を確認できる仕組み😊
🧷 CloudFormationテンプレートの基本構造
テンプレートは以下のような構成要素で作られます。
AWSTemplateFormatVersion: '2010-09-09' # フォーマットバージョン(固定)
Description: "EC2インスタンスを作成するCloudFormationテンプレート" # 説明
Resources: # 作成するAWSリソースの定義
MyEC2Instance:
Type: "AWS::EC2::Instance"
Properties:
ImageId: "ami-0abcdef1234567890" # AMI ID(リージョンごとに異なる)
InstanceType: "t2.micro" # インスタンスタイプ
🧷 CloudFormationのメリット
✅ 自動化:手動でAWSリソースを作成する手間を省ける
✅ 再利用可能:同じテンプレートを使えば、環境を再現可能
✅ 管理が楽:どんなリソースがあるのか一目で分かる
✅ 変更追跡:変更セットを使って安全にアップデート可能
🧷 実際の使い方
① テンプレートを作成
上記のようなYAMLまたはJSONファイルを作成します。
② スタックの作成
AWSマネジメントコンソール、AWS CLI、AWS SDK(Python/Boto3など)でデプロイします。
▶️ AWS CLIの場合
aws cloudformation create-stack --stack-name MyStack --template-body
file://my-template.yaml
③ スタックの更新
aws cloudformation update-stack --stack-name MyStack --template-body
file://updated-template.yaml
④ スタックの削除
aws cloudformation delete-stack --stack-name MyStack
🧷 応用テクニック
🔹 パラメータ(Parameters) を使うと、可変値をテンプレートに埋め込める。
🔹 条件(Conditions) を使って、特定の条件下でリソースを作成できる。
🔹 出力(Outputs) を使うと、作成したリソースの情報を外部に渡せる。
🔹 組み込み関数(!Ref, !Sub, !GetAtt など) で動的な値を扱える。
🧷 まとめ
-
CloudFormationを使うと、AWS環境をコードで管理できるので、手作業を減らし、インフラの一貫性を保つことができます。
-
小規模な環境から大規模なシステムまで幅広く使えるので、AWSを本格的に運用するなら習得しておくと便利です! 🚀
💡 次のステップとしては…
実際にテンプレートを書いてデプロイしてみるパラメータや条件を活用して動的なテンプレートを作るCloudFormationのベストプラクティスを学ぶと良さそう!