📝

CFnでVPCを作ったり消したりする~パラメータの利用~

2020/10/04に公開

パラメータ

公式ドキュメントの「パラメータの一般要件」がわかりやすい

CloudFormation > ユーザーガイド > パラメータ#パラメータの一般要件

Parameters:
  パラメータの論理ID:
    Type: パラメータのデータ型
    パラメータのプロパティ: value

パラメータのプロパティ一覧

プロパティの例(IPv4の簡単な例、256以上も通ってはしまう)

MyCidr:
    Description: IPv4 CIDR Block (0.0.0.0/0)
    Type: String
    MinLength: 9
    MaxLength: 18
    AllowedPattern: "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\/(\\d{1,2})"
    ConstraintDescription: Please specify the IPv4 Network Address and Subnet Mask.

作成と更新と削除

作成

$ aws cloudformation create-stack --stack-name スタック名 --template-body file://./main.yaml --parameters --parameters ParameterKey=Env,ParameterValue=dev

更新

$ aws cloudformation update-stack --stack-name スタック名 --template-body file://./main.yaml --parameters --parameters ParameterKey=Env,ParameterValue=dev

削除

$ aws cloudformation delete-stack --stack-name スタック名

VPC1つだけ

main.yaml

AWSTemplateFormatVersion: "2010-09-09"
Description: "3つのパブリックサブネットと3つのイントラネット"

##############################################################################
# パラメータ
##############################################################################
Parameters:
  Env:
    Type: String
    Default: staging
    AllowedValues:
     - dev
     - prd
     - stg
    Description: Enter the environment. (prd/dev/stg)

Resources:
  ##############################################################################
  # VPC
  ##############################################################################
  VPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      EnableDnsSupport: true
      EnableDnsHostnames: true
      Tags:
        - Key: Name
          Value: !Join [ "-", [ "test-vpc", !Ref Env ] ]

注意:Envだけを変更すると、更新という形で上書く

解決法:スタック名も変更する

Discussion