📝
CFnでVPCを作ったり消したりする~パラメータの利用~
パラメータ
公式ドキュメントの「パラメータの一般要件」がわかりやすい
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