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.
FindInMap
restituisce 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::FindInMap
restituisce il valore appropriato in base al parametroSecurityGroupIds
. EnvironmentType
Fn::Split
quindi 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