Fn::Select - AWS CloudFormation

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Fn::Select

La fonction intrinsèque Fn::Select renvoie un seul objet à partir d'une liste d'objets en fonction de son index.

Important

Fn::Select ne recherche pas les valeurs null ou ne vérifie pas si l'index sort des limites du tableau. Ces deux conditions entraînent une erreur de la pile. Assurez-vous donc que l'index que vous choisissez est valide et que la liste contient des valeurs autres que null.

Déclaration

JSON

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

YAML

Syntaxe pour le nom complet de la fonction :

Fn::Select: [ index, listOfObjects ]

Syntaxe pour la forme courte :

!Select [ index, listOfObjects ]

Paramètres

index

Index de l'objet à récupérer. Il doit s'agir d'une valeur comprise entre zéro et N-1, où N représente le nombre d'éléments du tableau.

listOfObjects

Liste des objets à partir desquels effectuer la sélection. Cette liste ne doit pas être nulle et ne peut pas contenir d'entrées null.

Valeur renvoyée

Objet sélectionné.

Exemples

Exemple de base

L'exemple suivant renvoie : "grapes".

JSON

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

YAML

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

 

Type de paramètre avec une liste de valeurs séparées par des virgules

Vous pouvez utiliser Fn::Select pour sélectionner un objet à partir d'un paramètre CommaDelimitedList. Vous pouvez utiliser un paramètre CommaDelimitedList pour combiner les valeurs des paramètres associés, ce qui réduit le nombre total de paramètres dans le modèle. Par exemple, le paramètre suivant spécifie une liste de trois blocs séparés par des virgules : CIDR

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"

Pour spécifier l'un des trois CIDR blocs, Fn::Select utilisez-le dans la section Ressources du même modèle, comme indiqué dans l'exemple d'extrait suivant :

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 ]

 

Fonctions imbriquées avec forme abrégée YAML

Les exemples suivants montrent les schémas valides pour l'utilisation des fonctions intrinsèque imbriquées avec la forme courte !Select. Comme vous ne pouvez pas imbriquer consécutivement des fonctions de forme courte, un modèle tel que !GetAZs !Ref n'est pas valide.

YAML

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

YAML

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

Fonctions prises en charge

Pour la valeur d'index Fn::Select, vous pouvez utiliser les fonctions Ref et Fn::FindInMap.

Pour la liste d'objets Fn::Select, vous pouvez utiliser les fonctions suivantes :

  • Fn::FindInMap

  • Fn::GetAtt

  • Fn::GetAZs

  • Fn::If

  • Fn::Split

  • Ref