Fn::Cidr - AWS CloudFormation

Fn::Cidr

Die intrinsische Funktion Fn::Cidr gibt ein Array von CIDR-Adressblöcken zurück. Die Anzahl der zurückgegebenen CIDR-Blöcke ist abhängig vom Parameter count.

Deklaration

JSON

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

YAML

Syntax für den vollständigen Funktionsnamen:

Fn::Cidr: - ipBlock - count - cidrBits

Syntax für die Kurzform:

!Cidr [ ipBlock, count, cidrBits ]

Parameter

ipBlock

Der benutzerdefinierte CIDR-Adressblock, der in kleinere CIDR-Blöcke aufgeteilt werden soll.

count

Die Anzahl der zu generierenden CIDRs. Der gültige Bereich liegt zwischen 1 und 256.

cidrBits

Die Anzahl der Subnetzbits für den CIDR. Wenn Sie beispielsweise einen Wert "8" für diesen Parameter angeben, wird ein CIDR mit der Maske "/24" erstellt.

Anmerkung

Subnetz-Bits ist der invertierte Wert der Subnetzmaske. Um die erforderlichen Hostbits für ein bestimmtes Subnetzbit zu berechnen, subtrahieren Sie die Subnetzbits von 32 für IPv4 oder 128 für IPv6.

Rückgabewert

Ein Array von CIDR-Adressblöcken.

Beispiel

Grundlegende Verwendung

In diesem Beispiel werden 6 CIDRs mit einer Subnetzmaske "/27" aus einem CIDR mit einer Maske von "/24" erstellt.

JSON

{ "Fn::Cidr" : [ "192.168.0.0/24", "6", "5"] }

YAML

!Cidr [ "192.168.0.0/24", 6, 5 ]

Erstellen eines IPv6-fähigen VPCs

Diese Beispiel-Vorlage erstellt ein IPv6-fähiges Subnetz.

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

Unterstützte Funktionen

Sie können die folgenden Funktionen in einer Fn::Cidr-Funktion verwenden: