Fn::Select - AWS CloudFormation

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Fn::Select

La funzione Fn::Select intrinseca restituisce un singolo oggetto da un elenco di oggetti in base al relativo indice.

Importante

Fn::Select non verifica la presenza di valori Null o se l'indice è fuori dai limiti della matrice. Entrambe le condizioni comporteranno un errore dello stack, per cui devi assicurarti che l'indice che scegli sia valido e che l'elenco non contenga valori Null.

Dichiarazione

JSON

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

YAML

Sintassi per il nome completo della funzione:

Fn::Select: [ index, listOfObjects ]

Sintassi per la forma breve:

!Select [ index, listOfObjects ]

Parametri

index

Indice dell'oggetto da recuperare. Deve essere un valore compreso tra zero e N-1, dove N rappresenta il numero di elementi nella matrice.

listOfObjects

L'elenco di oggetti tra cui è possibile scegliere. L'elenco non deve essere Null, né includere voci Null.

Valore restituito

L'oggetto selezionato.

Esempi

Esempio di base

Il seguente esempio restituisce: "grapes".

JSON

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

YAML

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

 

Tipo di parametro CommaDelimitedList

Puoi utilizzare Fn::Select per selezionare un oggetto da un parametro CommaDelimitedList. Potresti utilizzare un parametro CommaDelimitedList per combinare i valori dei parametri correlati, il che riduce il numero totale di parametri nel modello. Ad esempio, il parametro seguente specifica un elenco di tre blocchi CIDR delimitati dalla virgola:

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"

Per specificare uno dei tre blocchi CIDR, utilizza Fn::Select nella sezione Resources (Risorse) dello stesso modello, come mostrato nel seguente frammento di esempio:

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 ]

 

Funzioni nidificate con YAML in formato breve

I seguenti esempi mostrano i modelli validi per l'utilizzo di funzioni intrinseche nidificate con il formato breve !Select. Non è possibile nidificare funzioni in formato breve in modo consecutivo. Pertanto, un modello simile a !GetAZs !Ref non è valido.

YAML

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

YAML

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

Funzioni supportate

Per il valore Fn::Select dell'indice, puoi utilizzare le funzioni Ref e Fn::FindInMap.

Per l'elenco di oggetti Fn::Select, puoi utilizzare le seguenti funzioni:

  • Fn::FindInMap

  • Fn::GetAtt

  • Fn::GetAZs

  • Fn::If

  • Fn::Split

  • Ref