Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Mappings referensi sintaks bagian untuk template CloudFormation
Mappings
Bagian 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.
Sintaks
Mappings
Bagian ini menggunakan sintaks berikut:
JSON
"Mappings" : { "
MappingLogicalName
" : { "Key1
" : { "Name
" : "Value1
" }, "Key2
" : { "Name
" : "Value2
" }, "Key3
" : { "Name
" : "Value3
" } } }
YAML
Mappings:
MappingLogicalName
:Key1
:Name
:Value1
Key2
:Name
:Value2
Key3
:Name
:Value3
-
MappingLogicalName
adalah 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
String
atauList
.
catatan
Anda tidak dapat menyertakan parameter, parameter semu, atau fungsi intrinsik dalam bagian Mappings
.
Contoh
Pemetaan Basic
Contoh berikut ini menunjukkan bagian Mappings
dengan peta RegionMap
, 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 (InstanceType
dalam contoh) dan nilai.
JSON
"Mappings" : { "RegionMap" : { "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: RegionMap: 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
.
JSON
"AMIIDMap" : { "us-east-1" : {"MyAMI1" : "ami-0ff8a91507f77f867", "MyAMI2" : "ami-0a584ac55a7631c0c"}, "us-west-1" : {"MyAMI1" : "ami-0bdb828fd58c52235", "MyAMI2" : "ami-066ee5fd4a9ef77f1"}, "eu-west-1" : {"MyAMI1" : "ami-047bb4163c506cd98", "MyAMI2" : "ami-0a7c483d527806435"}, "ap-southeast-1" : {"MyAMI1" : "ami-08569b978cc4dfa10", "MyAMI2" : "ami-0be9df32ae9f92309"}, "ap-northeast-1" : {"MyAMI1" : "ami-06cd52961ce9f0d85", "MyAMI2" : "ami-053cdd503598e4a9d"} }
YAML
AMIIDMap: us-east-1: MyAMI1: ami-0ff8a91507f77f867 MyAMI2: ami-0a584ac55a7631c0c us-west-1: MyAMI1: ami-0bdb828fd58c52235 MyAMI2: ami-066ee5fd4a9ef77f1 eu-west-1: MyAMI1: ami-047bb4163c506cd98 MyAMI2: ami-0a7c483d527806435 ap-southeast-1: MyAMI1: ami-08569b978cc4dfa10 MyAMI2: ami-0be9df32ae9f92309 ap-northeast-1: MyAMI1: ami-06cd52961ce9f0d85 MyAMI2: ami-053cdd503598e4a9d
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 ImageId
propertinya ditetapkan oleh FindInMap
fungsi. FindInMap
Fungsi menentukan kunci sebagai wilayah tempat tumpukan dibuat (menggunakan parameter AWS::Region
semu) dan MyAMI1
sebagai nama nilai untuk dipetakan. Untuk informasi selengkapnya tentang parameter semu, lihatReferensi parameter semu.
JSON
{ "AWSTemplateFormatVersion" : "2010-09-09", "Mappings" : { "AMIIDMap" : { "us-east-1" : {"MyAMI1" : "ami-0ff8a91507f77f867", "MyAMI2" : "ami-0a584ac55a7631c0c"}, "us-west-1" : {"MyAMI1" : "ami-0bdb828fd58c52235", "MyAMI2" : "ami-066ee5fd4a9ef77f1"}, "eu-west-1" : {"MyAMI1" : "ami-047bb4163c506cd98", "MyAMI2" : "ami-0a7c483d527806435"}, "ap-northeast-1" : {"MyAMI1" : "ami-06cd52961ce9f0d85", "MyAMI2" : "ami-053cdd503598e4a9d"}, "ap-southeast-1" : {"MyAMI1" : "ami-08569b978cc4dfa10", "MyAMI2" : "ami-0be9df32ae9f92309"} } }, "Resources" : { "myEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Fn::FindInMap" : [ "AMIIDMap", { "Ref" : "AWS::Region" }, "MyAMI1" ]}, "InstanceType" : "t2.micro" } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Mappings: AMIIDMap: us-east-1: MyAMI1: ami-0ff8a91507f77f867 MyAMI2: ami-0a584ac55a7631c0c us-west-1: MyAMI1: ami-0bdb828fd58c52235 MyAMI2: ami-066ee5fd4a9ef77f1 eu-west-1: MyAMI1: ami-047bb4163c506cd98 MyAMI2: ami-0a7c483d527806435 ap-northeast-1: MyAMI1: ami-06cd52961ce9f0d85 MyAMI2: ami-053cdd503598e4a9d ap-southeast-1: MyAMI1: ami-08569b978cc4dfa10 MyAMI2: ami-0be9df32ae9f92309 Resources: myEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: !FindInMap [AMIIDMap, !Ref "AWS::Region", MyAMI1] InstanceType: t2.micro
Parameter masukan dan Fn::FindInMap
Anda dapat menggunakan parameter input dengan fungsi Fn::FindInMap
untuk merujuk ke nilai tertentu dalam peta. Misalnya, Anda memiliki daftar wilayah dan jenis lingkungan yang dipetakan ke ID grup keamanan tertentu. Anda dapat memilih ID grup keamanan yang digunakan stack Anda dengan menggunakan parameter input (EnvironmentType
). Untuk menentukan wilayah, gunakan parameter AWS::Region
semu, yang mendapatkan Wilayah AWS di mana Anda membuat tumpukan.
Contoh ini juga mendeklarasikan tipe parameter Systems Manager yang menyediakan parameter Systems Manager alias (/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
) sebagai nilai default untuk ImageId
properti instance. EC2 Ini adalah nilai yang CloudFormation diselesaikan sebagai nilai AMI ID untuk Amazon Linux 2 terbaru AMI di wilayah tempat tumpukan dibuat.
JSON
{ "AWSTemplateFormatVersion" : "2010-09-09", "Parameters" : { "LatestAmiId" : { "Description" : "The latest Amazon Linux 2 AMI from the Parameter Store", "Type" : "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>", "Default" : "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" }, "EnvironmentType" : { "Description" : "The environment type (Dev or Prod)", "Type" : "String", "Default" : "Dev", "AllowedValues" : [ "Dev", "Prod" ] } }, "Mappings" : { "SecurityGroupMap" : { "us-east-1" : { "Dev" : "sg-12345678", "Prod" : "sg-abcdef01" }, "us-west-2" : { "Dev" : "sg-ghijkl23", "Prod" : "sg-45678abc" } } }, "Resources" : { "Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "ImageId" : { "Ref" : "LatestAmiId" }, "InstanceType" : "t2.micro", "SecurityGroupIds" : [{ "Fn::FindInMap" : [ "SecurityGroupMap", { "Ref" : "AWS::Region" }, { "Ref" : "EnvironmentType" } ]}] } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Parameters: LatestAmiId: Description: The latest Amazon Linux 2 AMI from the Parameter Store Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2' EnvironmentType: Description: The environment type (Dev or Prod) Type: String Default: Dev AllowedValues: - Dev - Prod Mappings: SecurityGroupMap: us-east-1: Dev: "sg-12345678" Prod: "sg-abcdef01" us-west-2: Dev: "sg-ghijkl23" Prod: "sg-45678abc" Resources: Ec2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: !Ref LatestAmiId InstanceType: t2.micro SecurityGroupIds: - !FindInMap [SecurityGroupMap, !Ref "AWS::Region", !Ref EnvironmentType]
Sumber daya terkait
Topik terkait ini dapat membantu saat Anda mengembangkan templat yang menggunakan Fn::FindInMap
fungsi tersebut.