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à.
CloudFormation Mappingssintassi del modello
La sezione opzionale Mappings consente di creare coppie chiave-valore che possono essere utilizzate per specificare valori in base a determinate condizioni o dipendenze.
Un caso d’uso comune della sezione Mappings consiste nell’impostare i valori in base alla Regione AWS in cui viene distribuito lo stack. Ciò può essere ottenuto utilizzando lo pseudo parametro AWS::Region. Lo AWS::Region pseudo parametro è un valore che si CloudFormation risolve nella regione in cui viene creato lo stack. Gli pseudo parametri vengono risolti entro quando si crea lo stack. CloudFormation
Per recuperare i valori in una mappa, puoi utilizzare la funzione intrinseca Fn::FindInMap all’interno della sezione Resources del modello.
Sintassi
La sezione Mappings utilizza la sintassi seguente:
JSON
"Mappings" : { "MappingLogicalName" : { "Key1" : { "Name" : "Value1" }, "Key2" : { "Name" : "Value2" }, "Key3" : { "Name" : "Value3" } } }
YAML
Mappings:MappingLogicalName:Key1:Name:Value1Key2:Name:Value2Key3:Name:Value3
-
MappingLogicalNameè il nome logico per la mappatura. -
All’interno della mappatura, ogni mappa è una chiave seguita da un’altra mappatura.
-
La chiave deve essere una mappa di coppie nome-valore e univoca all’interno della mappatura.
-
La coppia nome-valore è un’etichetta e il valore da mappare. Se definisci i valori, puoi mappare più di un set di valori a una chiave.
-
Le chiavi nelle mappature devono essere stringhe letterali.
-
I valori possono essere di tipo
StringoList.
Nota
Non puoi includere parametri, pseudo parametri o funzioni intrinseche nella sezione Mappings.
Se i valori in una mappatura non vengono attualmente utilizzati dal proprio stack, non è possibile aggiornare la sola mappatura. Devi includere cambiamenti che comportano l’aggiunta, la modifica o l’eliminazione delle risorse.
Esempi
Argomenti
Mappatura di base
L’esempio seguente mostra una sezione Mappings con una mappa RegionToInstanceType, che contiene cinque chiavi mappate a coppie nome-valore contenenti singoli valori stringa. Le chiavi sono i nomi di Regione. Ogni coppia nome-valore è un tipo di istanza della famiglia T disponibile nella regione rappresentata dalla chiave. Le coppie nome-valore dispongono di un nome (InstanceType nell’esempio) e un valore.
JSON
"Mappings" : { "RegionToInstanceType" : { "us-east-1" : { "InstanceType" : "t2.micro" }, "us-west-1" : { "InstanceType" : "t2.micro" }, "eu-west-1" : { "InstanceType" : "t2.micro" }, "eu-north-1" : { "InstanceType" : "t3.micro" }, "me-south-1" : { "InstanceType" : "t3.micro" } } }
YAML
Mappings: RegionToInstanceType: us-east-1: InstanceType: t2.micro us-west-1: InstanceType: t2.micro eu-west-1: InstanceType: t2.micro eu-north-1: InstanceType: t3.micro me-south-1: InstanceType: t3.micro
Mappatura con più valori
L’esempio seguente fa riferimento a chiavi di regione mappate a due set di valori: uno denominato MyAMI1 e l’altro MyAMI2.
Nota
Gli AMI IDs mostrati in questi esempi sono segnaposto a scopo dimostrativo. Quando possibile, prendi in considerazione l’utilizzo di riferimenti dinamici ai parametri AWS Systems Manager 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, consulta Get values stored in other services using dynamic references.
JSON
"Mappings" : { "RegionToAMI" : { "us-east-1" : { "MyAMI1" : "ami-12345678901234567", "MyAMI2" : "ami-23456789012345678" }, "us-west-1" : { "MyAMI1" : "ami-34567890123456789", "MyAMI2" : "ami-45678901234567890" }, "eu-west-1" : { "MyAMI1" : "ami-56789012345678901", "MyAMI2" : "ami-67890123456789012" }, "ap-southeast-1" : { "MyAMI1" : "ami-78901234567890123", "MyAMI2" : "ami-89012345678901234" }, "ap-northeast-1" : { "MyAMI1" : "ami-90123456789012345", "MyAMI2" : "ami-01234567890123456" } } }
YAML
Mappings: RegionToAMI: us-east-1: MyAMI1:ami-12345678901234567MyAMI2:ami-23456789012345678us-west-1: MyAMI1:ami-34567890123456789MyAMI2:ami-45678901234567890eu-west-1: MyAMI1:ami-56789012345678901MyAMI2:ami-67890123456789012ap-southeast-1: MyAMI1:ami-78901234567890123MyAMI2:ami-89012345678901234ap-northeast-1: MyAMI1:ami-90123456789012345MyAMI2:ami-01234567890123456
Restituzione di un valore da una mappatura
Puoi utilizzare la funzione Fn::FindInMap per restituire un valore denominato in base a una chiave specificata. Il seguente modello di esempio contiene una EC2 risorsa Amazon la cui InstanceType proprietà è assegnata dalla FindInMap funzione. La FindInMap funzione specifica key come Regione AWS punto in cui viene creato lo stack (utilizzando lo AWS::Region pseudo parametro) e InstanceType come nome del valore a cui mappare. ImageId utilizza un parametro Systems Manager per recuperare dinamicamente l’ultima AMI Amazon Linux 2. Per ulteriori informazioni sugli pseudoparametri, consulta Ottieni AWS valori usando pseudo parametri.
JSON
{ "AWSTemplateFormatVersion" : "2010-09-09", "Mappings" : { "RegionToInstanceType" : { "us-east-1" : { "InstanceType" : "t2.micro" }, "us-west-1" : { "InstanceType" : "t2.micro" }, "eu-west-1" : { "InstanceType" : "t2.micro" }, "eu-north-1" : { "InstanceType" : "t3.micro" }, "me-south-1" : { "InstanceType" : "t3.micro" } } }, "Resources" : { "myEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}", "InstanceType" : { "Fn::FindInMap" : [ "RegionToInstanceType", { "Ref" : "AWS::Region" }, "InstanceType" ]} } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Mappings: RegionToInstanceType: us-east-1: InstanceType: t2.micro us-west-1: InstanceType: t2.micro eu-west-1: InstanceType: t2.micro eu-north-1: InstanceType: t3.micro me-south-1: InstanceType: t3.micro Resources: myEC2Instance: Type: AWS::EC2::Instance Properties: ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}' InstanceType: !FindInMap [RegionToInstanceType, !Ref 'AWS::Region', InstanceType]
Parametro di input e Fn::FindInMap
Il modello di esempio seguente mostra come creare un' EC2 istanza utilizzando più mappature. Il modello utilizza mappature annidate per selezionare automaticamente il tipo di istanza e il gruppo di sicurezza appropriati in base alla destinazione Regione AWS e al tipo di ambiente (o). Dev Prod Utilizza anche un parametro Systems Manager per recuperare dinamicamente l’ultima AMI Amazon Linux 2.
JSON
{ "AWSTemplateFormatVersion" : "2010-09-09", "Parameters" : { "EnvironmentType" : { "Description" : "The environment type (Dev or Prod)", "Type" : "String", "Default" : "Dev", "AllowedValues" : [ "Dev", "Prod" ] } }, "Mappings" : { "RegionAndEnvironmentToInstanceType" : { "us-east-1" : { "Dev" : "t3.micro", "Prod" : "c5.large" }, "us-west-1" : { "Dev" : "t2.micro", "Prod" : "m5.large" } }, "RegionAndEnvironmentToSecurityGroup" : { "us-east-1" : { "Dev" : "sg-12345678", "Prod" : "sg-abcdef01" }, "us-west-1" : { "Dev" : "sg-ghijkl23", "Prod" : "sg-45678abc" } } }, "Resources" : { "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}", "InstanceType" : { "Fn::FindInMap": [ "RegionAndEnvironmentToInstanceType", { "Ref": "AWS::Region" }, { "Ref": "EnvironmentType" } ]}, "SecurityGroupIds" : [{ "Fn::FindInMap" : [ "RegionAndEnvironmentToSecurityGroup", { "Ref" : "AWS::Region" }, { "Ref" : "EnvironmentType" } ]}] } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Parameters: EnvironmentType: Description: The environment type (Dev or Prod) Type: String Default: Dev AllowedValues: - Dev - Prod Mappings: RegionAndEnvironmentToInstanceType: us-east-1: Dev: t3.micro Prod: c5.large us-west-1: Dev: t2.micro Prod: m5.large RegionAndEnvironmentToSecurityGroup: us-east-1: Dev:sg-12345678Prod:sg-abcdef01us-west-1: Dev:sg-ghijkl23Prod:sg-45678abcResources: Ec2Instance: Type: AWS::EC2::Instance Properties: ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}' InstanceType: !FindInMap [RegionAndEnvironmentToInstanceType, !Ref 'AWS::Region', !Ref EnvironmentType] SecurityGroupIds: - !FindInMap [RegionAndEnvironmentToSecurityGroup, !Ref 'AWS::Region', !Ref EnvironmentType]
Risorse correlate
Questi argomenti correlati possono essere utili per sviluppare modelli che utilizzano la funzione Fn::FindInMap.