Fn::Select - AWS CloudFormation

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