本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
內部函數 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" 的 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
函數中善用以下函數: