むらじゅん風呂具

ITエンジニアとたまに歌手と司会などで活動する村中淳のブログ

【AWS】CloudFormation にてスタックの更新とRef関数を試す

CloudFormation の復習にて、スタック更新時にリソースを減らす挙動を確認してみた。

ちゃちゃっと以下のYAMLファイルを用意

AWSTemplateFormatVersion: '2010-09-09'
Description: Test cfn Template

Resources:
  cfnVpc:
    Type: 'AWS::EC2::VPC'
    Properties:
      CidrBlock: '192.168.0.0/16'
      Tags:
        - Key: 'Name'
          Value: 'cfn-vpc'
  cfnsubnet:
    Type: 'AWS::EC2::Subnet'
    Properties:
      CidrBlock: '192.168.0.0/24'
      MapPublicIpOnLaunch: true 
      Tags:
        - Key: 'Name'
          Value: 'cfn-subnet'
      VpcId: 'vpc-0b2963bc4975e0386'

スタックを作成してリソースが出来たことを確認

f:id:pj124183:20200121214836p:plain

f:id:pj124183:20200121214853p:plain


・Subnetを削除する

YAMLファイルからSubnetを削除

AWSTemplateFormatVersion: '2010-09-09'
Description: Test cfn Template

Resources:
  cfnVpc:
    Type: 'AWS::EC2::VPC'
    Properties:
      CidrBlock: '192.168.0.0/16'
      Tags:
        - Key: 'Name'
          Value: 'cfn-vpc'

CloudFormation 画面から 更新する

f:id:pj124183:20200121215253p:plain

既存のテンプレートを置き換える から、更新したファイルをアップロード

f:id:pj124183:20200121215402p:plain

その他の設定はせず、レビュー画面にて変更内容を確認して スタックの更新

f:id:pj124183:20200121215553p:plain

先ほどのSubnetが削除されていることを確認

f:id:pj124183:20200121215817p:plain


・Ref関数を使う

再度、Subnet作成するためのYAMLファイルを用意
VPC ID を指定する際にRef関数を使う
上のcfnVpcを指していることになり、わざわざVPC IDを書かなくても済むのが便利

AWSTemplateFormatVersion: '2010-09-09'
Description: Test cfn Template

Resources:
  cfnVpc:
    Type: 'AWS::EC2::VPC'
    Properties:
      CidrBlock: '192.168.0.0/16'
      Tags:
        - Key: 'Name'
          Value: 'cfn-vpc'
  cfnSubnet:
    Type: 'AWS::EC2::Subnet'
    Properties:
      CidrBlock: '192.168.1.0/24'
      MapPublicIpOnLaunch: true
      Tags:
        - Key: 'Name'
          Value: 'cfn-subnet'
      VpcId: !Ref cfnVpc

再度スタックを更新、Ref関数を使用してSubnet作成できたことを確認

f:id:pj124183:20200121220559p:plain


CloudFormation には他にもいろいろと関数が用意されている模様。
組み込み関数リファレンス

パッと試せそうなのはどんどん使ってみたい。
ごっつあんです。