Fn::Cidr
組み込み関数 Fn::Cidr
は CIDR アドレスブロックの配列を返します。返される CIDR ブロックの数は、count
パラメータによって異なります。
宣言
パラメータ
- ipBlock
-
より小さい CIDR ブロックに分割されるユーザー指定の CIDR アドレスブロック。
- count
-
生成する CIDR の数。有効な範囲は 1~256 です。
- cidrBits
-
CIDR のサブネットビット数。たとえば、このパラメータに値「8」を指定すると、「/24」のマスクを持つ CIDR が作成されます。
注記
サブネットビットはサブネットマスクの逆です。特定のサブネットビットに必要なホストビットを計算するには、IPv4 の場合は 32、IPv6 の場合は 128 からサブネットビットを減算します。
戻り値
CIDR アドレスブロックの配列。
例
基本的な使用法
この例では、サブマスクが「/24」の CIDR から、内部にサブネットマスクが「/27」の CIDR を 6 つ作成します。
JSON
{ "Fn::Cidr" : [ "192.168.0.0/24", "6", "5"] }
YAML
!Cidr [ "192.168.0.0/24", 6, 5 ]
IPv6 対応の VPC を作成する
このサンプルテンプレートは、IPv6 対応サブネットを作成します。
JSON
{ "Resources": { "ExampleVpc": { "Type": "AWS::EC2::VPC", "Properties": { "CidrBlock": "10.0.0.0/16" } }, "IPv6CidrBlock": { "Type": "AWS::EC2::VPCCidrBlock", "Properties": { "AmazonProvidedIpv6CidrBlock": true, "VpcId": { "Ref": "ExampleVpc" } } }, "ExampleSubnet": { "Type": "AWS::EC2::Subnet", "DependsOn": "IPv6CidrBlock", "Properties": { "AssignIpv6AddressOnCreation": true, "CidrBlock": { "Fn::Select": [ 0, { "Fn::Cidr": [ { "Fn::GetAtt": [ "ExampleVpc", "CidrBlock" ] }, 1, 8 ] } ] }, "Ipv6CidrBlock": { "Fn::Select": [ 0, { "Fn::Cidr": [ { "Fn::Select": [ 0, { "Fn::GetAtt": [ "ExampleVpc", "Ipv6CidrBlocks" ] } ] }, 1, 64 ] } ] }, "VpcId": { "Ref": "ExampleVpc" } } } } }
YAML
Resources: ExampleVpc: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 IPv6CidrBlock: Type: AWS::EC2::VPCCidrBlock Properties: AmazonProvidedIpv6CidrBlock: true VpcId: !Ref ExampleVpc ExampleSubnet: Type: AWS::EC2::Subnet DependsOn: IPv6CidrBlock Properties: AssignIpv6AddressOnCreation: true CidrBlock: !Select - 0 - !Cidr - !GetAtt ExampleVpc.CidrBlock - 1 - 8 Ipv6CidrBlock: !Select - 0 - !Cidr - !Select - 0 - !GetAtt ExampleVpc.Ipv6CidrBlocks - 1 - 64 VpcId: !Ref ExampleVpc
サポートされている関数
Fn::Cidr
関数で以下の関数を使用できます。