Ketentuan - AWS CloudFormation

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Ketentuan

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 AWS CloudFormation hanya membuat sumber daya atau output jika kondisinya benar. Demikian pula, Anda dapat mengaitkan kondisi dengan properti sehingga AWS CloudFormation hanya menetapkan properti ke nilai tertentu jika kondisi benar. Jika kondisinya salah, AWS 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 instans Amazon EC2 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.

Kondisi dievaluasi berdasarkan parameter semu yang telah ditentukan sebelumnya atau nilai parameter masukan yang Anda tentukan saat Anda 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. AWS 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 gambaran umum syarat

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. AWS CloudFormation

Bagian Conditions

Tentukan syarat dengan menggunakan fungsi kondisi intrinsik. Kondisi ini menentukan kapan AWS CloudFormation menciptakan sumber daya terkait.

Bagian Resources dan Outputs

Kaitkan syarat dengan sumber daya atau output yang ingin Anda buat bersyarat. AWS CloudFormation membuat entitas yang terkait dengan syarat BETUL dan mengabaikan entitas yang terkait dengan syarat SALAH. Gunakan kunci Condition dan ID logis syarat untuk mengaitkannya dengan sumber daya atau output. Untuk menentukan properti secara bersyarat, gunakan fungsi Fn::If. Untuk informasi selengkapnya, lihat Fungsi syarat.

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" : { "MyLogicalID" : {Intrinsic function} }

YAML

Conditions: MyLogicalID: Intrinsic function

Fungsi intrinsik syarat

Anda dapat menggunakan fungsi intrinsik berikut untuk menentukan syarat:

Untuk sintaks dan informasi tentang setiap fungsi, lihat Fungsi syarat.

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, AWS CloudFormation buat instans Amazon EC2 dan lampirkan volume ke instance. Untuk lingkungan pengujian, AWS CloudFormation buat hanya instans Amazon EC2.

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, AWS 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: ...