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