[小ネタ]CloudFormationでVPCを作成する時に指定したCIDRは正規形式に変更されます
こんにちは。
繁松です。
はじめに
CloudFormationでVPCを作成する際に指定したCIDRと異なるVPCが作成されたことはありませんか?
CloudFormationでVPCを作成する際に正規形式ではないCIDRを指定した場合、正規形式に変更されVPCが作成されます。
例1:[100.68.0.18/18]を指定した場合、[100.68.0.0/18]に変更される(ドキュメント記載の例)
例2:[10.0.17.0/23]を指定した場合、[10.0.16.0/23]に変更される
※本ブログではVPCで設定される正しいIP CIDRのことをAWSドキュメントに合わせて正規形式と表現しています。
コマンドラインツールまたは Amazon EC2 API を使用して VPC を作成すると、CIDR ブロックは自動で正規形式に変更されます。例えば、CIDR ブロックに 100.68.0.18/18 を指定した場合、100.68.0.0/18 の CIDR ブロックが作成されます。
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/vpc-cidr-blocks.html#vpc-sizing-ipv4
やってみた
CloudFormationで確認
以下のCloudFormationテンプレートを使って確認してみます。
Parameters セクションでVPC CIDRを入力できるようにしています。
AWSTemplateFormatVersion: "2010-09-09" Parameters: VpcCidrBlock: Type: String AllowedPattern: '^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$' Resources: # VPC Create Vpc: Type: AWS::EC2::VPC Properties: CidrBlock: !Ref VpcCidrBlock Tags: - Key: Name Value: test-vpc
AWSのドキュメントに例として記載されているIPアドレス[100.68.0.18/18]を入力し作成します。
CloudFormationの実行は成功しVPCのCIDRは[100.68.0.0/18]で作成されています
補足
作成したVPCのIPアドレスはAWSドキュメントの例として記載されている[100.68.0.18/18]で作成しましたが、VPCのIPアドレスはプライベートIPアドレスの利用が推奨されています。
- 10.0.0.0 - 10.255.255.255 (10.0.0.0/8)
- 172.16.0.0 - 172.31.255.255 (172.16.0.0/12)
- 192.168.0.0 - 192.168.255.255 (192.168.0.0/16)
AWSコンソールで確認
コンソールからVPCを作成する場合に正規形式ではないCIDRを指定するとエラーとなり作成できません。
さいごに
正規形式ではないCIDRの場合、コンソールからではエラーになるのでCloudFormationでもエラーになりそうですが正規形式に変更され作成されます。
CloudFormationで設定したパラメータと異なるCIDRでVPCが作成された際には指定したCIDRが正規形式になっているか確認してみてください。