Fn::Cidr - AWS CloudFormation

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

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。

注意

子網路位元是倒轉的子網路遮罩。計算特定子網路位元所需的主機位元時,如果是 IPv4,請將 32 減去子網路位元,如果是 IPv6,則將 128 減去子網路位元。

傳回值

CIDR 地址區塊的陣列。

範例

基本使用

此範例從遮罩為 "/24" 的 CIDR 之內,建立子網路遮罩為 "/27" 的 6 個 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 函數中善用以下函數: