1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS CloudFormationの基本構造と書き方をざっくり整理してみた

Posted at

こんにちは!マリーです!
最近、業務の中で CloudFormation(CFn)を触る機会があり、
最初は非常に難しそうに感じていました。

今回は、そんな CloudFormation の 基本構造と書き方
シンプルに整理してみます 🙌


CloudFormationとは?

  • AWSリソースを コード(YAML/JSON)で自動構築できるサービス
  • いわゆる IaC(Infrastructure as Code) の代表格
  • 同じ構成を繰り返し安全にデプロイできる

基本構造(YAMLのひな形)

AWSTemplateFormatVersion: '2010-09-09'
Description: Sample CloudFormation Template

Parameters:
  EnvName:
    Type: String
    Default: dev

Resources:
  MyBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Sub "${EnvName}-sample-bucket"

Outputs:
  BucketName:
    Description: Name of created bucket
    Value: !Ref MyBucket

各セクションの役割

セクション 内容
AWSTemplateFormatVersion テンプレートのバージョン(固定でOK)
Description テンプレートの説明(何を作るのか)
Parameters 外部から渡す値を定義(環境名など)
Resources 実際に作成するAWSリソースを定義(メイン部分)
Outputs 作成後に出力したい値(リソース名やARNなど)

よく使う組み込み関数(YAMLでのショートハンド)

関数 意味
!Ref リソースやパラメータを参照 !Ref EnvName
!Sub 文字列展開(変数埋め込み) !Sub "${EnvName}-bucket"
!GetAtt 他リソースの属性値を取得 !GetAtt MyBucket.Arn
!Join 文字列を結合 !Join ['-', [dev, app, bucket]]

ポイント整理

  • Resources セクションが主役!
    → 実際に作りたいAWSリソースはすべてここに書く
  • Parameters で環境変数的に再利用可能
    → 同じテンプレートで「dev」「prod」など切り替えできる
  • Outputs はデプロイ後の確認に便利
    → 作成されたリソース名やARNを簡単に取得できる

実際に試したS3作成テンプレート(例)

AWSTemplateFormatVersion: '2010-09-09'
Description: Create S3 bucket with tags and versioning

Parameters:
  EnvName:
    Type: String
    Default: dev
    Description: Environment name (e.g. dev, stg, prod)

Resources:
  MyBucket:
    Type: AWS::S3::Bucket
    Properties:
      BucketName: !Sub "${EnvName}-cf-demo-bucket"
      VersioningConfiguration:
        Status: Enabled
      Tags:
        - Key: Environment
          Value: !Ref EnvName
        - Key: CreatedBy
          Value: CloudFormation

Outputs:
  BucketName:
    Description: Name of the created bucket
    Value: !Ref MyBucket

ポイント

  • バージョニングやタグ付けなども Properties の中に書ける
  • テンプレートをデプロイするだけでS3バケットが自動作成される

デプロイ方法(AWSコンソール or CLI)

  • コンソールの場合

    1. CloudFormation コンソールを開く
    2. 「スタックの作成」→「テンプレートをアップロード」
    3. パラメータを入力して「スタックを作成」
  • CLIの場合

aws cloudformation create-stack \
  --stack-name my-s3-stack \
  --template-body file://s3-template.yaml \
  --parameters ParameterKey=EnvName,ParameterValue=dev

CloudFormationのメリット

  • 手作業なしで再現性のある構成管理
  • 差分更新(Change Set)で安全に修正可能
  • Git管理できるためチーム開発に向く
  • AWS CDKなど他のIaCツールの基礎になる

注意点

  • スタックの削除でリソースも削除される(要注意)
  • リソース名に動的な変数を使うと再デプロイ時に失敗することがある
  • テンプレートサイズが大きい場合はS3アップロードが必要

まとめ

要点 内容
CloudFormationとは AWSリソースをコードで構築するIaCツール
メインセクション Parameters / Resources / Outputs
始めるなら S3など単一リソースから
コツ YAMLの構造をシンプルに保つ&!Ref / !Subを使いこなす

最後に

CloudFormationは最初は少しとっつきにくいですが、
一度テンプレート構造を理解すると、AWS構築が一気に楽になります!

ポチポチとリソースを一つずつ作成するよりも、
圧倒的に効率的 なので、学ぶ価値はとても高いです。

私も今後、業務外でもCloudFormationに触れながら、
より実践的に慣れていこうと思います 💪

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?