Mappings referensi sintaks bagian untuk template CloudFormation - AWS CloudFormation

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

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.

Sintaks

MappingsBagian 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
  • 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 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 (InstanceTypedalam 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. FindInMapFungsi 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]

Topik terkait ini dapat membantu saat Anda mengembangkan templat yang menggunakan Fn::FindInMap fungsi tersebut.