Fn::Select - AWS CloudFormation

Fn::Select

Die intrinsische Funktion Fn::Select gibt ein einzelnes Objekt aus einer Objektliste durch Angabe des Index zurück.

Wichtig

Fn::Select überprüft nicht auf Null-Werte oder ob sich der Index außerhalb des Arrays befindet. Beide Bedingungen führen zu einem Stack-Fehler. Sie sollten daher sicherstellen, dass der von Ihnen gewählte Index gültig ist und dass die Liste keine Null-Werte enthält.

Deklaration

JSON

{ "Fn::Select" : [ index, listOfObjects ] }

YAML

Syntax für den vollständigen Funktionsnamen:

Fn::Select: [ index, listOfObjects ]

Syntax für die Kurzform:

!Select [ index, listOfObjects ]

Parameter

automatisch

Der Index des Objekts zum Abrufen des Objekts. Dies muss ein Wert zwischen Null und N-1 sein, wobei N für die Anzahl der Elemente im Array steht.

listOfObjects

Die Auswahlliste für die Objekte. Diese Liste darf nicht Null sein und darf keine Null-Einträge besitzen.

Rückgabewert

Das ausgewählte Objekt.

Beispiele

Grundlegendes Beispiel:

Im folgenden Beispiel wird Folgendes zurückgegeben: "grapes"

JSON

{ "Fn::Select" : [ "1", [ "apples", "grapes", "oranges", "mangoes" ] ] }

YAML

!Select [ "1", [ "apples", "grapes", "oranges", "mangoes" ] ]

 

Parametertyp für komma-getrennte Listen

Mit Fn::Select können Sie ein Objekt aus einem CommaDelimitedList-Parameter auswählen. Sie können einen CommaDelimitedList-Parameter verwenden, um die Werte zugehöriger Parameter zu kombinieren, wodurch die Gesamtanzahl der Parameter in Ihrer Vorlage reduziert wird. Beispielsweise gibt der folgende Parameter eine durch Komma getrennte Liste von drei CIDR-Blöcken an:

JSON

"Parameters" : { "DbSubnetIpBlocks": { "Description": "Comma-delimited list of three CIDR blocks", "Type": "CommaDelimitedList", "Default": "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24" } }

YAML

Parameters: DbSubnetIpBlocks: Description: "Comma-delimited list of three CIDR blocks" Type: CommaDelimitedList Default: "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24"

Legen Sie einen der drei CIDR-Blöcke fest, indem Sie Fn::Select im Abschnitt Ressourcen derselben Vorlage wie im folgenden Beispiel-Snippet verwenden:

JSON

"Subnet0": { "Type": "AWS::EC2::Subnet", "Properties": { "VpcId": { "Ref": "VPC" }, "CidrBlock": { "Fn::Select" : [ "0", {"Ref": "DbSubnetIpBlocks"} ] } } }

YAML

Subnet0: Type: "AWS::EC2::Subnet" Properties: VpcId: !Ref VPC CidrBlock: !Select [ 0, !Ref DbSubnetIpBlocks ]

 

Verschachtelte Funktionen mit YAML in Kurzschreibweise

Die folgenden Beispiele zeigen gültige Muster für die Nutzung von verschachtelten intrinsischen Funktionen mit der Kurzschreibweise von !Select. Sie können Funktionen in Kurzschreibweise nicht nacheinander verschachteln, daher ist ein Muster wie !GetAZs !Ref ungültig.

YAML

AvailabilityZone: !Select - 0 - !GetAZs Ref: 'AWS::Region'

YAML

AvailabilityZone: !Select - 0 - Fn::GetAZs: !Ref 'AWS::Region'

Unterstützte Funktionen

Für den Indexwert Fn::Select können Sie die Funktionen Ref und Fn::FindInMap verwenden.

Für die Objektliste Fn::Select können Sie die folgenden Funktionen verwenden:

  • Fn::FindInMap

  • Fn::GetAtt

  • Fn::GetAZs

  • Fn::If

  • Fn::Split

  • Ref