Fn::FindInMap - 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::FindInMap

La funzione intrinseca Fn::FindInMap restituisce i valori corrispondenti alle chiavi in una mappatura a due livelli dichiarata nella sezione Mappings.

Dichiarazione

JSON

{ "Fn::FindInMap" : [ "MapName", "TopLevelKey", "SecondLevelKey"] }

YAML

Sintassi per il nome completo della funzione:

Fn::FindInMap: [ MapName, TopLevelKey, SecondLevelKey ]

Sintassi per la forma breve:

!FindInMap [ MapName, TopLevelKey, SecondLevelKey ]
Nota

Non è possibile nidificare due istanze di due funzioni in forma breve.

Parametri

MapName

Il nome logico di una mappatura dichiarata nella sezione Mappature che contiene le chiavi e i valori.

TopLevelKey

Il nome della chiave di livello superiore. Il valore è un elenco di coppie chiave-valore.

SecondLevelKey

Il nome della chiave di secondo livello, che è impostato su una delle chiavi dall'elenco assegnato a TopLevelKey.

Valore restituito

Il valore assegnato a SecondLevelKey.

Esempi

I seguenti esempi illustrano come utilizzare la funzione Fn::FindInMap.

Utilizzo Fn::FindInMap con valori specifici della regione

L'esempio seguente mostra come utilizzare Fn::FindInMap un modello con una Mappings sezione che contiene una singola mappa associata AMIs a Regioni. RegionMap AWS

  • La mappa ha 5 chiavi di primo livello che corrispondono a varie AWS regioni.

  • A ogni chiave di primo livello viene assegnato un elenco con due chiavi di secondo livello"HVMG2", che corrispondono all'architettura AMI della. "HVM64"

  • A ciascuna delle chiavi di secondo livello viene assegnato un nome appropriato. AMI

Il modello di esempio contiene una risorsa AWS::EC2::Instance la cui proprietà ImageId è impostata dalla funzione FindInMap.

MapName è impostato sulla mappa di interesse, "RegionMap" in questo esempio. TopLevelKey è impostato sulla Regione in cui viene creato lo stack, che viene determinata utilizzando lo pseudoparametro "AWS::Region". SecondLevelKey è impostato sull'architettura desiderata, "HVM64" per questo esempio.

FindInMaprestituisce l'AMIassegnato a. FindInMap Per un HVM64 esempio in us-east-1FindInMap, restituirebbe. "ami-0ff8a91507f77f867"

Nota

Considerate AWS Systems Manager i parametri come alternativa alla Mappings sezione. Per evitare di aggiornare tutti i modelli con un nuovo ID ogni volta AMI che desideri utilizzare le modifiche, utilizza il tipo di AWS::SSM::Parameter::Value<AWS::EC2::Image::Id> parametro per recuperare l'AMIID più recente quando lo stack viene creato o aggiornato. Le versioni più recenti di quelle comunemente utilizzate AMIs sono disponibili anche come parametri pubblici in Systems Manager. Per ulteriori informazioni, consulta Fai riferimento alle risorse esistenti e ai parametri di Systems Manager con i CloudFormation tipi di parametri forniti.

JSON

{ ... "Mappings" : { "RegionMap" : { "us-east-1" : { "HVM64" : "ami-0ff8a91507f77f867", "HVMG2" : "ami-0a584ac55a7631c0c" }, "us-west-1" : { "HVM64" : "ami-0bdb828fd58c52235", "HVMG2" : "ami-066ee5fd4a9ef77f1" }, "eu-west-1" : { "HVM64" : "ami-047bb4163c506cd98", "HVMG2" : "ami-0a7c483d527806435" }, "ap-southeast-1" : { "HVM64" : "ami-08569b978cc4dfa10", "HVMG2" : "ami-0be9df32ae9f92309" }, "ap-northeast-1" : { "HVM64" : "ami-06cd52961ce9f0d85", "HVMG2" : "ami-053cdd503598e4a9d" } } }, "Resources" : { "myEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "HVM64" ] }, "InstanceType" : "t2.micro" } } } }

YAML

Mappings: RegionMap: us-east-1: HVM64: "ami-0ff8a91507f77f867" HVMG2: "ami-0a584ac55a7631c0c" us-west-1: HVM64: "ami-0bdb828fd58c52235" HVMG2: "ami-066ee5fd4a9ef77f1" eu-west-1: HVM64: "ami-047bb4163c506cd98" HVMG2: "ami-0a7c483d527806435" ap-southeast-1: HVM64: "ami-08569b978cc4dfa10" HVMG2: "ami-0be9df32ae9f92309" ap-northeast-1: HVM64: "ami-06cd52961ce9f0d85" HVMG2: "ami-053cdd503598e4a9d" Resources: myEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: !FindInMap - RegionMap - !Ref 'AWS::Region' - HVM64 InstanceType: t2.micro

Utilizzo Fn::FindInMap per configurazioni specifiche dell'ambiente

L'esempio seguente mostra come utilizzare Fn::FindInMap per un modello con una Mappings sezione che contiene una singola mappa,. SecurityGroups Contiene anche un EnvironmentType parametro che consente di specificare se l'ambiente è Dev oProd. L'impostazione predefinita è, Dev ma può essere sovrascritta durante la creazione dello stack.

Fn::FindInMaprestituisce il valore appropriato in base al parametroSecurityGroupIds. EnvironmentType Fn::Splitquindi divide la stringa separata da virgole del gruppo di sicurezza IDs in un elenco, che è il formato previsto per SecurityGroupIds.

Se distribuisci questo stack con EnvironmentType set to, il for sarà. Dev SecurityGroupIds EC2Instance sg-12345678 Se lo EnvironmentType impostiProd, sg-abcdef01 utilizzerà and. sg-ghijkl23

JSON

{ ... "Parameters":{ "EnvironmentType":{ "Description":"The environment type (Dev or Prod)", "Type":"String", "Default":"Dev", "AllowedValues":[ "Dev", "Prod" ] } }, "Mappings":{ "SecurityGroups":{ "Dev":{ "SecurityGroupIds":"sg-12345678" }, "Prod":{ "SecurityGroupIds":"sg-abcdef01,sg-ghijkl23" } } }, "Resources":{ "Ec2Instance":{ "Type":"AWS::EC2::Instance", "Properties":{ "ImageId": "ami-0a70b9d193ae8a799", "InstanceType": "t2.micro", "SecurityGroupIds":{ "Fn::Split":[ ",", { "Fn::FindInMap":[ "SecurityGroups", { "Ref":"EnvironmentType" }, "SecurityGroupIds" ] } ] } } } } }

YAML

Parameters: EnvironmentType: Description: The environment type (Dev or Prod) Type: String Default: Dev AllowedValues: - Dev - Prod Mappings: SecurityGroups: Dev: SecurityGroupIds: sg-12345678 Prod: SecurityGroupIds: sg-abcdef01,sg-ghijkl23 Resources: Ec2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0a70b9d193ae8a799 InstanceType: t2.micro SecurityGroupIds: Fn::Split: - "," - Fn::FindInMap: [ SecurityGroups, !Ref EnvironmentType, SecurityGroupIds ]

Funzioni supportate

È possibile utilizzare le funzioni seguenti in una funzione Fn::FindInMap.

  • Fn::FindInMap

  • Ref

Risorse correlate

Per utilizzare altre funzioni intrinseche o un valore predefinito in una Fn::FindInMap funzione, è necessario dichiarare la AWS::LanguageExtensions trasformazione all'interno del modello. Per ulteriori informazioni, consulta Fn::FindInMap enhancements.

Questi argomenti correlati possono essere utili per lo sviluppo di modelli che utilizzano la funzione. Fn::FindInMap