Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Conditions referensi sintaks bagian untuk template CloudFormation
Bagian Conditions
opsional berisi pernyataan yang menentukan keadaan di mana entitas dibuat atau dikonfigurasi. Misalnya, Anda dapat membuat kondisi dan kemudian mengaitkannya dengan sumber daya atau output sehingga CloudFormation hanya membuat sumber daya atau output jika kondisinya benar. Demikian pula, Anda dapat mengaitkan kondisi dengan properti sehingga CloudFormation hanya menetapkan properti ke nilai tertentu jika kondisi benar. Jika kondisinya salah, CloudFormation tetapkan properti ke nilai berbeda yang Anda tentukan.
Anda dapat menggunakan syarat ketika Anda ingin menggunakan kembali templat yang dapat membuat sumber daya dalam konteks yang berbeda-beda, seperti lingkungan pengujian versus lingkungan produksi. Dalam templat, Anda dapat menambahkan parameter input EnvironmentType
, yang menerima prod
atau test
sebagai input. Untuk lingkungan produksi, Anda mungkin menyertakan EC2 instans Amazon dengan kemampuan tertentu; Namun, untuk lingkungan pengujian, Anda ingin menggunakan kemampuan yang dikurangi untuk menghemat uang. Dengan syarat, Anda dapat menentukan sumber daya mana yang dibuat dan bagaimana sumber daya tersebut dikonfigurasi untuk setiap jenis lingkungan.
Syarat dievaluasi berdasarkan parameter semu yang telah ditentukan sebelumnya atau nilai parameter input yang Anda tentukan saat membuat atau memperbarui tumpukan. Dalam setiap syarat, Anda dapat mereferensikan kondisi lain, nilai parameter, atau pemetaan. Setelah menetapkan semua syarat Anda, Anda dapat mengaitkan semuanya dengan sumber daya atau properti sumber daya di bagian Resources
dan Outputs
pada templat.
Saat pembuatan tumpukan atau pembaruan tumpukan, AWS CloudFormation evaluasi semua kondisi di template Anda sebelum membuat sumber daya apa pun. Sumber daya yang terkait dengan syarat BETUL dibuat. Sumber daya yang terkait dengan kondisi palsu diabaikan. CloudFormation juga mengevaluasi kembali kondisi ini di setiap pembaruan tumpukan sebelum memperbarui sumber daya apa pun. Sumber daya yang masih terkait dengan syarat BETUL diperbarui. Sumber daya yang kini terkait dengan syarat SALAH dihapus.
penting
Selama pembaruan tumpukan, Anda tidak dapat memperbarui syarat dengan sendirinya. Anda hanya dapat memperbarui syarat jika menyertakan perubahan yang menambahkan, mengubah, atau menghapus sumber daya.
Cara menggunakan kondisi
Bergantung pada entitas yang ingin Anda buat atau konfigurasikan secara bersyarat, Anda harus menyertakan pernyataan di bagian templat berikut:
- Bagian
Parameters
-
Tentukan input yang Anda inginkan untuk dievaluasi oleh syarat Anda. Syarat mengevaluasi BETUL atau SALAH berdasarkan nilai parameter input ini. Jika Anda ingin kondisi Anda mengevaluasi parameter semu, Anda tidak perlu menentukan parameter semu di bagian ini; parameter semu ditentukan sebelumnya oleh. CloudFormation Untuk informasi selengkapnya tentang parameter semu, lihatReferensi parameter semu.
- Bagian
Conditions
-
Tentukan syarat dengan menggunakan fungsi kondisi intrinsik. Kondisi ini menentukan kapan CloudFormation menciptakan sumber daya terkait. Sebagai contoh, lihat Contoh template.
- Bagian
Resources
danOutputs
-
Kaitkan kondisi dengan sumber daya atau output yang ingin Anda buat secara kondisional. CloudFormation menciptakan entitas yang terkait dengan kondisi sebenarnya dan mengabaikan entitas yang terkait dengan kondisi palsu. Gunakan kunci
Condition
dan ID logis syarat untuk mengaitkannya dengan sumber daya atau output. Untuk menentukan properti secara bersyarat, gunakan fungsiFn::If
. Sebagai contoh, lihat Mengaitkan suatu kondisi.
Sintaks
Bagian Conditions
terdiri dari nama kunci Conditions
. Setiap pernyataan syarat menyertakan ID logis dan fungsi intrinsik yang dievaluasi saat Anda membuat atau memperbarui tumpukan. Templat semu berikut menguraikan bagian Conditions
:
JSON
"Conditions" : { "
ConditionLogicalID
" : {Intrinsic function
} }
YAML
Conditions:
ConditionLogicalID
:Intrinsic function
Fungsi intrinsik syarat
Anda dapat menggunakan fungsi intrinsik berikut untuk menentukan syarat:
-
Fn::And
-
Fn::Equals
-
Fn::ForEach
-
Fn::If
-
Fn::Not
-
Fn::Or
Untuk sintaks dan informasi tentang setiap fungsi kondisi, lihat Fungsi kondisi. Untuk sintaks dan informasi tentangFn::ForEach
, lihat Fn::ForEach.
catatan
Fn::If
hanya didukung dalam atribut metadata, atribut kebijakan pembaruan, dan nilai properti di bagian Resources
dan bagian Outputs
dari templat.
Contoh
Syarat sederhana
Template contoh berikut menyertakan parameter input EnvType
, tempat Anda dapat menentukan prod
untuk membuat tumpukan untuk produksi atau test
membuat tumpukan untuk pengujian. Untuk lingkungan produksi, buat CloudFormation EC2 instance Amazon dan lampirkan volume ke instance. Untuk lingkungan pengujian, CloudFormation buat hanya EC2 instance Amazon.
Syarat CreateProdResources
mengevaluasi ke true
jika parameter EnvType
setara dengan prod
. Dalam templat contoh, sumber daya NewVolume
dan MountPoint
terkait dengan syarat CreateProdResources
. Oleh karena itu, sumber daya dibuat hanya jika parameter EnvType
setara dengan prod
.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Parameters": { "EnvType": { "Description": "Environment type.", "Default": "test", "Type": "String", "AllowedValues": [ "prod", "test" ], "ConstraintDescription": "must specify prod or test." } }, "Conditions": { "CreateProdResources": { "Fn::Equals": [ { "Ref": "EnvType" }, "prod" ] } }, "Resources": { "EC2Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": "ami-0ff8a91507f77f867" } }, "MountPoint": { "Type": "AWS::EC2::VolumeAttachment", "Condition": "CreateProdResources", "Properties": { "InstanceId": { "Ref": "EC2Instance" }, "VolumeId": { "Ref": "NewVolume" }, "Device": "/dev/sdh" } }, "NewVolume": { "Type": "AWS::EC2::Volume", "Condition": "CreateProdResources", "Properties": { "Size": 100, "AvailabilityZone": { "Fn::GetAtt": [ "EC2Instance", "AvailabilityZone" ] } } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Parameters: EnvType: Description: Environment type. Default: test Type: String AllowedValues: - prod - test ConstraintDescription: must specify prod or test. Conditions: CreateProdResources: !Equals - !Ref EnvType - prod Resources: EC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-0ff8a91507f77f867 MountPoint: Type: 'AWS::EC2::VolumeAttachment' Condition: CreateProdResources Properties: InstanceId: !Ref EC2Instance VolumeId: !Ref NewVolume Device: /dev/sdh NewVolume: Type: 'AWS::EC2::Volume' Condition: CreateProdResources Properties: Size: 100 AvailabilityZone: !GetAtt - EC2Instance - AvailabilityZone
Syarat bersarang
Templat contoh berikut mereferensikan syarat dalam syarat lain. Anda dapat membuat tumpukan yang membuat bucket s3. Untuk tumpukan yang diterapkan di lingkungan produksi, CloudFormation buat kebijakan untuk bucket S3.
JSON
{ "Parameters": { "EnvType": { "Type": "String", "AllowedValues": [ "prod", "test" ] }, "BucketName": { "Default": "", "Type": "String" } }, "Conditions": { "IsProduction": { "Fn::Equals": [ { "Ref": "EnvType" }, "prod" ] }, "CreateBucket": { "Fn::Not": [ { "Fn::Equals": [ { "Ref": "BucketName" }, "" ] } ] }, "CreateBucketPolicy": { "Fn::And": [ { "Condition": "IsProduction" }, { "Condition": "CreateBucket" } ] } }, "Resources": { "Bucket": { "Type": "AWS::S3::Bucket", "Condition": "CreateBucket" }, "Policy": { "Type": "AWS::S3::BucketPolicy", "Condition": "CreateBucketPolicy", "Properties": { "Bucket": { "Ref": "Bucket" }, "PolicyDocument": "..." } } } }
YAML
Parameters: EnvType: Type: String AllowedValues: - prod - test BucketName: Default: '' Type: String Conditions: IsProduction: !Equals - !Ref EnvType - prod CreateBucket: !Not - !Equals - !Ref BucketName - '' CreateBucketPolicy: !And - !Condition IsProduction - !Condition CreateBucket Resources: Bucket: Type: 'AWS::S3::Bucket' Condition: CreateBucket Policy: Type: 'AWS::S3::BucketPolicy' Condition: CreateBucketPolicy Properties: Bucket: !Ref BucketName PolicyDocument: ...