Ini adalah Panduan Referensi AWS CloudFormation Template baru. Harap perbarui bookmark dan tautan Anda. Untuk bantuan memulai CloudFormation, lihat Panduan AWS CloudFormation Pengguna.
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Fn::FindInMap
Fungsi intrinsik Fn::FindInMap mengembalikan nilai yang sesuai dengan kunci dalam peta dua tingkat yang dideklarasikan di bagian. Mappings
Pernyataan
JSON
{ "Fn::FindInMap" : [ "MapName", "TopLevelKey", "SecondLevelKey"] }
YAML
Sintaks untuk nama fungsi penuh:
Fn::FindInMap: [MapName,TopLevelKey,SecondLevelKey]
Sintaks untuk bentuk pendek:
!FindInMap [MapName,TopLevelKey,SecondLevelKey]
catatan
Anda tidak dapat me-nest dua instans dari dua fungsi dalam bentuk singkat.
Parameter
- MapName
-
Nama logis dari pemetaan dinyatakan di bagian Pemetaan yang berisi kunci dan nilai.
- TopLevelKey
-
Nama kunci tingkat atas. Nilainya adalah daftar pasangan nilai kunci.
- SecondLevelKey
-
Nama kunci tingkat kedua, yang diatur ke salah satu kunci dari daftar yang ditetapkan untuk
TopLevelKey.
Nilai yang dikembalikan
Nilai yang ditetapkan untukSecondLevelKey.
Contoh
Contoh berikut menunjukkan cara menggunakan fungsi Fn::FindInMap.
Topik
Gunakan Fn::FindInMap dengan nilai khusus wilayah
Contoh berikut menunjukkan cara menggunakan Fn::FindInMap dalam template yang mencakup dua pemetaan: AWSInstanceType2Arch dan. AWSRegionArch2AMI Ini juga mencakup InstanceType parameter yang memungkinkan Anda memilih antara t3.micro dant4g.nano. Defaultnya adalaht3.micro, tetapi ini dapat diganti selama pembuatan tumpukan.
Fn::FindInMappertama-tama menentukan arsitektur (HVM64atauARM64) berdasarkan jenis instance yang dipilih, dan kemudian mencari ID AMI yang benar untuk arsitektur tersebut saat ini Wilayah AWS.
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
{ "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
Gunakan Fn::FindInMap untuk konfigurasi khusus lingkungan
Contoh berikut menunjukkan bagaimana menggunakan Fn::FindInMap untuk template dengan Mappings bagian yang berisi peta tunggal,SecurityGroups. Ini juga berisi EnvironmentType parameter yang memungkinkan Anda menentukan apakah lingkungan tersebut Dev atauProd. Defaultnya Dev tetapi dapat diganti selama pembuatan tumpukan.
Fn::FindInMapmengembalikan yang sesuai SecurityGroupIds berdasarkan EnvironmentType parameter. Fn::Splitkemudian membagi string grup keamanan yang dipisahkan koma IDs ke dalam daftar, yang merupakan format yang diharapkan untuk. SecurityGroupIds
Jika Anda menerapkan tumpukan ini dengan EnvironmentType set toDev, SecurityGroupIds for EC2Instance akan menjadisg-12345678. Jika Anda mengatur EnvironmentType keProd, itu akan menggunakan sg-abcdef01 dansg-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 ]
Fungsi yang didukung
Anda dapat menggunakan fungsi berikut di fungsi Fn::FindInMap:
-
Fn::FindInMap -
Ref
Sumber daya terkait
Untuk menggunakan fungsi intrinsik lainnya atau nilai default dalam suatu Fn::FindInMap fungsi, Anda harus mendeklarasikan AWS::LanguageExtensions transformasi dalam template Anda. Untuk informasi selengkapnya, lihat Fn::FindInMap
enhancements.
Topik terkait ini dapat membantu saat Anda mengembangkan templat yang menggunakan Fn::FindInMap fungsi tersebut.
-
CloudFormationMappingssintaks template di AWS CloudFormation Panduan Pengguna