Fn::Select
A função intrínseca Fn::Select
retorna um único objeto a partir de uma lista de objetos por índice.
Importante
O Fn::Select
não verifica valores nulos ou se o índice está fora dos limites da série. Ambas as condições resultarão em um erro de pilha, portanto, você deverá ter certeza de que o índice escolhido é válida e se a lista contém valores não nulos.
Declaração
JSON
{ "Fn::Select" : [
index
,listOfObjects
] }
YAML
Sintaxe para o nome da função completo:
Fn::Select: [
index
,listOfObjects
]
Sintaxe para a forma resumida:
!Select [
index
,listOfObjects
]
Parâmetros
- índice
-
O índice do objeto para recuperar. Isto deve ser um valor de zero a N-1, onde N representa o número de elementos na série.
- listOfObjects
-
A lista de objetos para selecionar. Essa lista não deve ser nula nem pode ter entradas nulas.
Valor de retorno
O objeto selecionado.
Exemplos
Exemplo básico
O seguinte exemplo retorna: "grapes"
.
JSON
{ "Fn::Select" : [ "1", [ "apples", "grapes", "oranges", "mangoes" ] ] }
YAML
!Select [ "1", [ "apples", "grapes", "oranges", "mangoes" ] ]
Tipo de parâmetros da lista delimitada por vírgula
Você pode usar Fn::Select
para selecionar um objeto a partir de um parâmetro CommaDelimitedList
. Você pode usar um parâmetro CommaDelimitedList
para combinar os valores dos parâmetros relacionados, que reduz o número total de parâmetros no seu modelo. Por exemplo, o parâmetro a seguir especifica uma lista delimitada por vírgulas de três blocos 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 um dos três blocos de CIDR, use Fn::Select
na seção Recursos do mesmo modelo, conforme mostrado no snippet de amostra a seguir:
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 ]
Funções aninhadas com YAML em forma abreviada
Os exemplos a seguir mostram os padrões válidos para usar as funções intrínsecas aninhadas com a forma abreviada !Select
. Você não pode aninhar funções em forma abreviada consecutivamente, portanto, um padrão como !GetAZs !Ref
é inválido.
YAML
AvailabilityZone: !Select - 0 - !GetAZs Ref: 'AWS::Region'
YAML
AvailabilityZone: !Select - 0 - Fn::GetAZs: !Ref 'AWS::Region'
Funções compatíveis
Para obter o valor de índice de Fn::Select
, você pode usar as funções Ref
e Fn::FindInMap
.
Para obter a lista de objetos Fn::Select
, use as funções a seguir:
-
Fn::FindInMap
-
Fn::GetAtt
-
Fn::GetAZs
-
Fn::If
-
Fn::Split
-
Ref