Fn::Cidr
内部函数 Fn::Cidr
返回 CIDR 地址块的数组。返回的 CIDR 块数取决于 count
参数。
声明
参数
- 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
函数中使用以下函数: