Ini adalah Panduan Referensi 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"] }
Jika Anda ingin menentukan nilai fallback ketika kunci tidak ditemukan dalam pemetaan, sertakan: DefaultValue
{ "Fn::FindInMap" : [ "MapName", "TopLevelKey", "SecondLevelKey", {"DefaultValue": "DefaultValue"}] }
YAML
Sintaks untuk nama fungsi penuh:
Fn::FindInMap: [MapName,TopLevelKey,SecondLevelKey]
Sintaks untuk bentuk pendek:
!FindInMap [MapName,TopLevelKey,SecondLevelKey]
Jika Anda ingin menentukan nilai fallback ketika kunci tidak ditemukan dalam pemetaan, sertakan: DefaultValue
Sintaks untuk nama fungsi penuh:
Fn::FindInMap: -MapName-TopLevelKey-SecondLevelKey- DefaultValue:DefaultValue
Sintaks untuk bentuk pendek:
!FindInMap -MapName-TopLevelKey-SecondLevelKey- DefaultValue:DefaultValue
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. - DefaultValue
-
Nilai yang
Fn::FindInMapmengembalikan jika salah satuTopLevelKeyatauSecondLevelKeytidak ditemukan dalam pemetaan tertentu. Parameter ini bersifat opsional. Jika dihilangkan,Fn::FindInMapmenimbulkan kesalahan ketika kunci tidak ditemukan.Parameter keempat harus berupa peta dengan kunci
DefaultValue. Sebagai contoh:{"DefaultValue": "us-east-1"}.
Nilai yang dikembalikan
Nilai yang ditetapkan untukSecondLevelKey. Jika TopLevelKey atau SecondLevelKey tidak ditemukan dan a DefaultValue ditentukan, DefaultValue dikembalikan sebagai gantinya.
Contoh
Contoh berikut menunjukkan cara menggunakan fungsi Fn::FindInMap.
Topik
Gunakan Fn:: FindInMap dengan nilai spesifik 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
ID AMI yang ditampilkan 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 dari AMI yang umum digunakan juga 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 ID grup keamanan yang dipisahkan koma 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 ]
Gunakan Fn:: FindInMap dengan nilai default
Contoh berikut menggunakan a DefaultValue untuk memberikan fallback ketika kunci tidak ditemukan dalam pemetaan. Jika arus tidak Wilayah AWS ditentukan dalam RegionMap pemetaan, Fn::FindInMap kembali t3.micro alih-alih menimbulkan kesalahan.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Mappings": { "RegionMap": { "us-east-1": { "InstanceType": "t3.large" }, "eu-west-1": { "InstanceType": "t3.medium" } } }, "Resources": { "MyInstance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}", "InstanceType": { "Fn::FindInMap": [ "RegionMap", { "Ref": "AWS::Region" }, "InstanceType", { "DefaultValue": "t3.micro" } ] } } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Mappings: RegionMap: us-east-1: InstanceType: t3.large eu-west-1: InstanceType: t3.medium Resources: MyInstance: Type: AWS::EC2::Instance Properties: ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}' InstanceType: !FindInMap - RegionMap - !Ref AWS::Region - InstanceType - DefaultValue: t3.micro
Fungsi yang didukung
Anda dapat menggunakan fungsi berikut di fungsi Fn::FindInMap:
-
Fn::FindInMap -
Ref
Sumber daya terkait
Untuk menggunakan fungsi intrinsik di luar Fn::FindInMap dan Ref dalam parameter Fn::FindInMap fungsi, Anda harus mendeklarasikan AWS::LanguageExtensions transformasi dalam template Anda. Untuk informasi selengkapnya, lihat Fn:: perangkat tambahan FindInMap.
Topik terkait ini dapat membantu saat Anda mengembangkan templat yang menggunakan Fn::FindInMap fungsi tersebut.
-
CloudFormationMappingssintaks template di AWS CloudFormation Panduan Pengguna