Questa è la nuova guida AWS CloudFormation di riferimento per i modelli. Aggiorna i segnalibri e i link. Per informazioni su come iniziare CloudFormation, consulta la Guida per l'AWS CloudFormation utente.
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.
Argomenti
Utilizzare Fn::FindInMap con valori specifici della regione
L'esempio seguente mostra come utilizzare Fn::FindInMap in un modello che include due mappature: e. AWSInstanceType2Arch AWSRegionArch2AMI Include anche un InstanceType parametro che consente di scegliere tra et3.micro. t4g.nano L'impostazione predefinita èt3.micro, ma può essere ignorata durante la creazione dello stack.
Fn::FindInMapdetermina innanzitutto l'architettura (HVM64oARM64) in base al tipo di istanza selezionato, quindi cerca l'ID AMI corretto per quell'architettura nell'attuale Regione AWS.
Nota
Gli AMI IDs mostrati in questi esempi sono segnaposto a scopo dimostrativo. Quando possibile, prendete in considerazione l'utilizzo di riferimenti dinamici ai AWS Systems Manager parametri come alternativa alla sezione. Mappings Per evitare di aggiornare tutti i modelli con un nuovo ID ogni volta che l'AMI che desideri utilizzare cambia, utilizza un AWS Systems Manager 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, vedere Ottenere valori archiviati in altri servizi utilizzando riferimenti dinamici.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters": { "InstanceType": { "Description": "The EC2 instance type", "Type": "String", "AllowedValues": [ "t3.micro", "t4g.nano" ], "Default": "t3.micro" } }, "Mappings": { "AWSInstanceType2Arch": { "t3.micro": { "Arch": "HVM64" }, "t4g.nano": { "Arch": "ARM64" } }, "AWSRegionArch2AMI": { "us-east-1" : { "HVM64" : "ami-12345678901234567", "ARM64" : "ami-23456789012345678" }, "us-west-1" : { "HVM64" : "ami-34567890123456789", "ARM64" : "ami-45678901234567890" }, "eu-west-1" : { "HVM64" : "ami-56789012345678901", "ARM64" : "ami-67890123456789012" }, "ap-southeast-1" : { "HVM64" : "ami-78901234567890123", "ARM64" : "ami-89012345678901234" }, "ap-northeast-1" : { "HVM64" : "ami-90123456789012345", "ARM64" : "ami-01234567890123456" } } }, "Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : { "Ref": "InstanceType" }, "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" }, { "Fn::FindInMap": [ "AWSInstanceType2Arch", { "Ref": "InstanceType" }, "Arch" ]}] } } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Parameters: InstanceType: Description: The EC2 instance type Type: String AllowedValues: - t3.micro - t4g.nano Default: t3.micro Mappings: AWSInstanceType2Arch: t3.micro: Arch: HVM64 t4g.nano: Arch: ARM64 AWSRegionArch2AMI: us-east-1: HVM64:ami-12345678901234567ARM64:ami-23456789012345678us-west-1: HVM64:ami-34567890123456789ARM64:ami-45678901234567890eu-west-1: HVM64:ami-56789012345678901ARM64:ami-67890123456789012ap-southeast-1: HVM64:ami-78901234567890123ARM64:ami-89012345678901234ap-northeast-1: HVM64:ami-90123456789012345ARM64:ami-01234567890123456Resources: myEC2Instance: Type: AWS::EC2::Instance Properties: InstanceType: !Ref InstanceType ImageId: Fn::FindInMap: - AWSRegionArch2AMI - Ref: AWS::Region - Fn::FindInMap: - AWSInstanceType2Arch - Ref: InstanceType - Arch
Utilizzare 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
{ "AWSTemplateFormatVersion": "2010-09-09", "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": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}", "InstanceType": "t2.micro", "SecurityGroupIds":{ "Fn::Split":[ ",", { "Fn::FindInMap":[ "SecurityGroups", { "Ref":"EnvironmentType" }, "SecurityGroupIds" ] } ] } } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Parameters: EnvironmentType: Description: The environment type (Dev or Prod) Type: String Default: Dev AllowedValues: - Dev - Prod Mappings: SecurityGroups: Dev: SecurityGroupIds:sg-12345678Prod: SecurityGroupIds:sg-abcdef01,sg-ghijkl23Resources: Ec2Instance: Type: AWS::EC2::Instance Properties: ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}' 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
-
CloudFormationMappingssintassi del modello nella Guida per l'AWS CloudFormation utente