「AWS CloudFormationの組み込み関数を使って柔軟なCFnテンプレートを作成しよう」というビデオセッションで話しました #devio2023

DevelopersIO 2023で公開したビデオセッション「AWS CloudFormationの組み込み関数を使って柔軟なCFnテンプレートを作成しよう」のセッションブログです。
2023.07.27

たぬき( @tanuki_tzp )です。

DevelopersIO 2023にて、ビデオセッションで参加いたしましたので、そのセッションブログとなります。

セッションについて

AWS CloudFormationの組み込み関数について、個人的によく使うものをセレクトして解説しました。
初心者向けとなっていますので、関数をなんとなく使っている方やテンプレートの使い回しに悩んでいる方に届けば幸いです。

Youtube

セッションスライド

スライド内に出てくるCloudFormationテンプレート抜粋

ベーステンプレート

AWSTemplateFormatVersion: "2010-09-09"
Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16

  Subnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: 10.0.0.0/24

Selectテンプレート

AWSTemplateFormatVersion: "2010-09-09"
Parameters:
  AvailabilityZones:
    Type: List<AWS::EC2::AvailabilityZone::Name>
    Default: ap-northeast-1a
    AllowedValues:
      - ap-northeast-1a
      - ap-northeast-1c
      - ap-northeast-1d

Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16

  Subnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: 10.0.0.0/24
      AvailabilityZone: !Select [0, !Ref AvailabilityZones]

Cidrテンプレート

AWSTemplateFormatVersion: "2010-09-09"
Parameters:
  VpcCidrBlock:
    Type: String
    Default: "10.0.0.0/16"

Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: !Ref VpcCidrBlock

  Subnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: !Select [0, !Cidr [!Ref VpcCidrBlock, 1, 8]]

Joinテンプレート

AWSTemplateFormatVersion: "2010-09-09"
Parameters:
  VpcCidrBlock:
    Type: String
    Default: "10.0.0.0/16"
  Environment:
    Type: String
    Default: "prd"

Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: !Ref VpcCidrBlock
      Tags:
        - Key: Name
          Value: !Join [ "-", [ !Ref Environment, "sample", "VPC"]]

  Subnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: !Select [0, !Cidr [!Ref VpcCidrBlock, 1, 8]]
      Tags:
        - Key: Name
          Value: !Join [ "-", [ !Ref Environment, "sample", "subnet"]]

Subテンプレート

AWSTemplateFormatVersion: "2010-09-09"
Parameters:
  VpcCidrBlock:
    Type: String
    Default: "10.0.0.0/16"
  Environment:
    Type: String
    Default: "prd"

Resources:
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: !Ref VpcCidrBlock
      Tags:
        - Key: Name
          Value: !Sub ”${Environment}-sample-VPC"

  Subnet:
    Type: AWS::EC2::Subnet
    Properties:
      VpcId: !Ref VPC
      CidrBlock: !Select [0, !Cidr [!Ref VpcCidrBlock, 0, 8]]
      Tags:
        - Key: Name
          Value: !Sub ”${Environment}-sample-subnet"

おわりに

CloudFormationの関数について、触っていればわかるという方もいますが、整理して頭に入れることが大切だと思ったので今回解説動画を出させていただきました。
このセッションが誰かの助けになれば幸いです。