Fn::Select - AWS CloudFormation

Fn::Select

La función intrínseca Fn::Select devuelve un único objeto de una lista de objetos por índice.

importante

Fn::Select no comprueba si hay valores nulos o si el índice queda fuera de los límites de la matriz. Ambas condiciones llevarán a un error de pila, por lo que tiene que estar seguro de que el índice que elige sea válido y que la lista contiene valores no nulos.

Declaración

JSON

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

YAML

Sintaxis del nombre de función completo:

Fn::Select: [ index, listOfObjects ]

Sintaxis de la forma abreviada:

!Select [ index, listOfObjects ]

Parámetros

índice

El índice del objeto para recuperar. Tiene que ser un valor de cero a N-1, donde N representa el número de elementos en la matriz.

listOfObjects

La lista de objetos para seleccionar. Esta lista no debe ser nula, ni puede tener entradas nulas.

Valor devuelto

El objeto seleccionado.

Ejemplos

Ejemplo básico

El ejemplo siguiente devuelve: "grapes".

JSON

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

YAML

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

 

Tipo de parámetros de lista delimitados por comas

Puede utilizar Fn::Select para seleccionar un objeto de un parámetro CommaDelimitedList. Puede utilizar un parámetro CommaDelimitedList para combinar los valores de los parámetros relacionados, lo que reduce el número total de parámetros en la plantilla. Por ejemplo, el siguiente parámetro especifica una lista delimitada por comas de tres bloques de 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"

Para especificar uno de los tres bloques de CIDR, utilice Fn::Select en la sección Resources de la misma plantilla, tal y como se muestra en el siguiente fragmento de código de ejemplo:

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 ]

 

Funciones anidadas con la forma abreviada YAML

Los siguientes ejemplos muestran patrones válidas para el uso de funciones intrínsecas anidadas con la forma abreviada !Select. No puede anidar funciones de forma corta consecutivamente, por lo que un patrón como !GetAZs !Ref no es válido.

YAML

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

YAML

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

Funciones compatibles

Para el valor índice Fn::Select, puede utilizar las funciones Ref y Fn::FindInMap.

Para la lista de objetos Fn::Select, puede usar las siguientes funciones:

  • Fn::FindInMap

  • Fn::GetAtt

  • Fn::GetAZs

  • Fn::If

  • Fn::Split

  • Ref