AWS CloudFormation
用户指南 (API 版本 2010-05-15)

Fn::Cidr

内部函数 Fn::Cidr 返回 CIDR 地址块的数组。返回的 CIDR 块数取决于 count 参数。

声明

JSON

{ "Fn::Cidr" : [ipBlock, count, cidrBits]}

YAML

完整函数名称的语法:

Fn::Cidr: - ipBlock - count - cidrBits

短格式的语法:

!Cidr [ ipBlock, count, cidrBits ]

参数

ipBlock

要拆分为更小的 CIDR 块的用户指定 CIDR 地址块。

count

要生成的 CIDR 数。有效范围在 1 到 256 之间。

cidrBits

CIDR 的子网位数。例如,如果为该参数指定值“8”,将创建一个具有“/24”掩码的 CIDR。

注意

子网位数是子网掩码的逆运算。要计算给定子网位数所需的主机位数,请从 32 位 (IPv4) 或 128 位 (IPv6) 中减去子网位数。

返回值

CIDR 地址块的数组。

示例

基本用法

该示例从具有“/24”掩码的 CIDR 中创建 6 个具有“/27”子网掩码的 CIDR。

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 函数中使用以下函数: