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à.
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 livello superiore viene assegnato a un elenco con due chiavi di secondo livello,
"HVM64"
e"HVMG2"
, che corrisponde all'architettura AMI. -
A ognuna delle chiavi di secondo livello viene assegnato un nome di AMI appropriato.
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'AMI assegnato 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 che l'AMI che desideri utilizzare cambia, utilizza il tipo di AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
parametro per recuperare l'ID AMI 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 Specificare le risorse esistenti in fase di esecuzione 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