Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
CloudFormation Mappingssintaks template
MappingsBagian opsional membantu Anda membuat pasangan kunci-nilai yang dapat digunakan untuk menentukan nilai berdasarkan kondisi atau dependensi tertentu.
Salah satu kasus penggunaan umum untuk Mappings bagian ini adalah untuk menetapkan nilai berdasarkan di Wilayah AWS mana tumpukan digunakan. Ini dapat dicapai dengan menggunakan parameter AWS::Region semu. Parameter AWS::Region pseudo adalah nilai yang CloudFormation menyelesaikan ke wilayah tempat tumpukan dibuat. Parameter pseudo diselesaikan CloudFormation saat Anda membuat tumpukan.
Untuk mengambil nilai dalam peta, Anda dapat menggunakan fungsi Fn::FindInMap intrinsik dalam Resources bagian template Anda.
Sintaksis
MappingsBagian ini menggunakan sintaks berikut:
JSON
"Mappings" : { "MappingLogicalName" : { "Key1" : { "Name" : "Value1" }, "Key2" : { "Name" : "Value2" }, "Key3" : { "Name" : "Value3" } } }
YAML
Mappings:MappingLogicalName:Key1:Name:Value1Key2:Name:Value2Key3:Name:Value3
-
MappingLogicalNameadalah nama logis untuk pemetaan. -
Dalam pemetaan, setiap peta adalah kunci diikuti oleh pemetaan lain.
-
Kunci harus berupa peta pasangan nama-nilai dan unik dalam pemetaan.
-
Pasangan nama-nilai adalah label, dan nilai untuk memetakan. Dengan menamakan nilai-nilai, Anda dapat memetakan lebih dari satu set nilai ke kunci.
-
Kunci dalam pemetaan harus berupa string literal.
-
Nilainya bisa dari tipe
StringatauList.
catatan
Anda tidak dapat menyertakan parameter, parameter semu, atau fungsi intrinsik dalam bagian Mappings.
Jika nilai dalam pemetaan saat ini tidak digunakan oleh tumpukan Anda, Anda tidak dapat memperbarui pemetaan saja. Anda harus menyertakan perubahan yang menambah, memodifikasi, atau menghapus sumber daya.
Contoh
Topik
Pemetaan Basic
Contoh berikut ini menunjukkan bagian Mappings dengan peta RegionToInstanceType, yang berisi lima kunci yang memetakan ke pasangan nama-nilai yang mengandung nilai-nilai string tunggal. Kunci adalah nama region. Setiap pasangan nama-nilai adalah tipe instance dari keluarga T yang tersedia di wilayah yang diwakili oleh kunci. Pasangan nama-nilai memiliki nama (InstanceTypedalam contoh) dan nilai.
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
Pemetaan dengan beberapa nilai
Contoh berikut memiliki kunci wilayah yang dipetakan ke dua set nilai: satu bernama MyAMI1 dan yang lainnyaMyAMI2.
catatan
AMI yang IDs ditunjukkan dalam contoh ini adalah placeholder untuk tujuan demonstrasi. Jika memungkinkan, pertimbangkan untuk menggunakan referensi dinamis ke AWS Systems Manager parameter sebagai alternatif untuk Mappings bagian tersebut. Untuk menghindari memperbarui semua template Anda dengan ID baru setiap kali AMI yang ingin Anda gunakan berubah, gunakan AWS Systems Manager parameter untuk mengambil ID AMI terbaru saat tumpukan dibuat atau diperbarui. Versi terbaru yang umum digunakan juga AMIs tersedia sebagai parameter publik di Systems Manager. Untuk informasi selengkapnya, lihat Mendapatkan nilai yang disimpan di layanan lain menggunakan referensi dinamis.
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
Mengembalikan nilai dari pemetaan
Anda dapat menggunakan fungsi Fn::FindInMap untuk mengembalikan nilai bernama berdasarkan kunci tertentu. Contoh template berikut berisi EC2 sumber daya Amazon yang InstanceType propertinya ditetapkan oleh FindInMap fungsi. FindInMapFungsi menentukan kunci sebagai Wilayah AWS tempat tumpukan dibuat (menggunakan parameter AWS::Region semu) dan InstanceType sebagai nama nilai untuk dipetakan. ImageIdMenggunakan parameter Systems Manager untuk secara dinamis mengambil Amazon Linux 2 AMI terbaru. Untuk informasi selengkapnya tentang parameter semu, lihatDapatkan AWS nilai menggunakan parameter semu.
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]
Parameter masukan dan Fn::FindInMap
Contoh template berikut menunjukkan cara membuat EC2 instance menggunakan beberapa pemetaan. Template menggunakan pemetaan bersarang untuk secara otomatis memilih jenis instans dan grup keamanan yang sesuai berdasarkan jenis target Wilayah AWS dan lingkungan (Devatau). Prod Ini juga menggunakan parameter Systems Manager untuk secara dinamis mengambil Amazon Linux 2 AMI terbaru.
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]
Sumber daya terkait
Topik terkait ini dapat membantu saat Anda mengembangkan templat yang menggunakan Fn::FindInMap fungsi tersebut.