Conditions 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.

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 dan Outputs

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 fungsi Fn::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: ...