組み込み関数 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
関数で以下の関数を使用できます。