Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Contoh set perubahan untuk CloudFormation tumpukan

Mode fokus
Contoh set perubahan untuk CloudFormation tumpukan - AWS CloudFormation

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

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

Bagian ini memberikan contoh set perubahan yang CloudFormation akan dibuat untuk perubahan tumpukan umum. Contoh tersebut menunjukkan cara mengedit templat secara langsung; memodifikasi parameter input tunggal; merencanakan untuk pembuatan kembali sumber daya (penggantian), yang mencegah Anda kehilangan data yang tidak dicadangkan atau mengganggu aplikasi yang sedang berjalan di tumpukan Anda; dan menambah dan menghapus sumber daya. Untuk menggambarkan bagaimana set perubahan bekerja, kita akan berjalan melalui perubahan yang dikirimkan dan membahas set perubahan yang dihasilkan. Karena setiap contoh dibuat berdasarkan dan mengasumsikan bahwa Anda memahami contoh sebelumnya, kami sarankan Anda membacanya secara berurutan. Untuk deskripsi setiap bidang dalam kumpulan perubahan, lihat Mengubah tipe data di AWS CloudFormation APIReferensi.

Anda dapat menggunakan konsol, AWS CLI, atau CloudFormation DescribeChangeSetAPIoperasi untuk melihat detail set perubahan.

Kita menghasilkan setiap set perubahan berikut dari tumpukan dengan templat sampel berikut:

{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "A sample EC2 instance template for testing change sets.", "Parameters" : { "Purpose" : { "Type" : "String", "Default" : "testing", "AllowedValues" : ["testing", "production"], "Description" : "The purpose of this instance." }, "KeyPairName" : { "Type": "AWS::EC2::KeyPair::KeyName", "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instance" }, "InstanceType" : { "Type" : "String", "Default" : "t2.micro", "AllowedValues" : ["t2.micro", "t2.small", "t2.medium"], "Description" : "The EC2 instance type." } }, "Resources" : { "MyEC2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "KeyName" : { "Ref" : "KeyPairName" }, "InstanceType" : { "Ref" : "InstanceType" }, "ImageId" : "ami-8fcee4e5", "Tags" : [ { "Key" : "Purpose", "Value" : { "Ref" : "Purpose" } } ] } } } }

Mengedit templat secara langsung

Ketika Anda secara langsung memodifikasi sumber daya dalam templat tumpukan untuk menghasilkan set perubahan, CloudFormation mengklasifikasikan perubahan sebagai modifikasi langsung, dibandingkan dengan perubahan yang dimulai oleh nilai parameter yang diperbarui. Set perubahan berikut, yang menambahkan tanda baru ke instans i-1abc23d4, adalah contoh dari modifikasi langsung. Semua nilai input lainnya, seperti nilai dan kemampuan parameter, tidak berubah, jadi kita akan fokus pada struktur Changes.

{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/MyStack/1a2345b6-0000-00a0-a123-00abc0abc000", "Status": "CREATE_COMPLETE", "ChangeSetName": "SampleChangeSet-direct", "Parameters": [ { "ParameterValue": "testing", "ParameterKey": "Purpose" }, { "ParameterValue": "MyKeyName", "ParameterKey": "KeyPairName" }, { "ParameterValue": "t2.micro", "ParameterKey": "InstanceType" } ], "Changes": [ { "ResourceChange": { "ResourceType": "AWS::EC2::Instance", "PhysicalResourceId": "i-1abc23d4", "Details": [ { "ChangeSource": "DirectModification", "Evaluation": "Static", "Target": { "Attribute": "Tags", "RequiresRecreation": "Never" } } ], "Action": "Modify", "Scope": [ "Tags" ], "LogicalResourceId": "MyEC2Instance", "Replacement": "False" }, "Type": "Resource" } ], "CreationTime": "2020-11-18T23:35:25.813Z", "Capabilities": [], "StackName": "MyStack", "NotificationARNs": [], "ChangeSetId": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/SampleChangeSet-direct/1a2345b6-0000-00a0-a123-00abc0abc000" }

Di struktur Changes, hanya ada satu struktur ResourceChange. Struktur ini menjelaskan informasi seperti jenis sumber daya CloudFormation akan berubah, tindakan CloudFormation akan diambil, ID sumber daya, ruang lingkup perubahan, dan apakah perubahan memerlukan penggantian (di mana CloudFormation membuat sumber daya baru dan kemudian menghapus yang lama). Dalam contoh, set perubahan menunjukkan bahwa CloudFormation akan memodifikasi Tags atribut i-1abc23d4 EC2 instance, dan tidak memerlukan instance untuk diganti.

Dalam Details struktur, CloudFormation label perubahan ini sebagai modifikasi langsung yang tidak akan pernah memerlukan instance untuk dibuat ulang (diganti). Anda dapat dengan percaya diri menjalankan perubahan ini, mengetahui bahwa itu CloudFormation tidak akan menggantikan instance.

CloudFormation menunjukkan perubahan ini sebagai Static evaluasi. Evaluasi statis berarti CloudFormation dapat menentukan nilai tag sebelum mengeksekusi set perubahan. Dalam beberapa kasus, CloudFormation dapat menentukan nilai hanya setelah Anda menjalankan set perubahan. CloudFormationmelabeli perubahan tersebut sebagai Dynamic evaluasi. Misalnya, jika Anda mereferensikan sumber daya yang diperbarui yang diganti secara kondisional, tidak CloudFormation dapat menentukan apakah referensi ke sumber daya yang diperbarui akan berubah.

Memodifikasi nilai parameter input

Saat Anda memodifikasi nilai parameter input, CloudFormation menghasilkan dua perubahan untuk setiap sumber daya yang menggunakan nilai parameter yang diperbarui. Dalam contoh ini, kita ingin menyoroti seperti apa perubahan tersebut dan informasi mana yang harus Anda fokuskan. Contoh berikut dihasilkan dengan hanya mengubah nilai parameter input Purpose.

PurposeParameter menentukan nilai kunci tag untuk EC2 contoh. Dalam contoh, nilai parameter diubah dari testing ke production. Nilai baru ditunjukkan dalam struktur Parameters.

{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/MyStack/1a2345b6-0000-00a0-a123-00abc0abc000", "Status": "CREATE_COMPLETE", "ChangeSetName": "SampleChangeSet", "Parameters": [ { "ParameterValue": "production", "ParameterKey": "Purpose" }, { "ParameterValue": "MyKeyName", "ParameterKey": "KeyPairName" }, { "ParameterValue": "t2.micro", "ParameterKey": "InstanceType" } ], "Changes": [ { "ResourceChange": { "ResourceType": "AWS::EC2::Instance", "PhysicalResourceId": "i-1abc23d4", "Details": [ { "ChangeSource": "DirectModification", "Evaluation": "Dynamic", "Target": { "Attribute": "Tags", "RequiresRecreation": "Never" } }, { "CausingEntity": "Purpose", "ChangeSource": "ParameterReference", "Evaluation": "Static", "Target": { "Attribute": "Tags", "RequiresRecreation": "Never" } } ], "Action": "Modify", "Scope": [ "Tags" ], "LogicalResourceId": "MyEC2Instance", "Replacement": "False" }, "Type": "Resource" } ], "CreationTime": "2020-11-18T23:59:18.447Z", "Capabilities": [], "StackName": "MyStack", "NotificationARNs": [], "ChangeSetId": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/SampleChangeSet/1a2345b6-0000-00a0-a123-00abc0abc000" }

ChangesStruktur berfungsi mirip dengan cara yang dilakukannya dalam Mengedit templat secara langsung contoh. Hanya ada satu ResourceChange struktur; itu menggambarkan perubahan pada Tags atribut i-1abc23d4 EC2 instance.

Namun, dalam struktur Details, set perubahan menunjukkan dua perubahan untuk atribut Tags, meskipun hanya satu nilai parameter yang diubah. Sumber daya yang mereferensikan nilai parameter yang diubah (menggunakan fungsi intrinsik Ref) selalu menghasilkan dua perubahan: satu dengan evaluasi Dynamic dan lainnya dengan evaluasi Static. Anda dapat melihat tipe perubahan ini dengan melihat bidang berikut:

  • Untuk perubahan evaluasi Static, lihat bidang ChangeSource. Dalam contoh ini, bidang ChangeSource sama dengan ParameterReference, yang berarti bahwa perubahan ini adalah hasil dari nilai referensi parameter yang diperbarui. Set perubahan harus berisi perubahan evaluasi Dynamic yang serupa.

  • Anda dapat menemukan perubahan evaluasi Dynamic yang cocok dengan membandingkan struktur Target untuk kedua perubahan, yang akan berisi informasi yang sama. Dalam contoh ini, struktur Target untuk kedua perubahan berisi nilai yang sama untuk bidang Attribute dan RequireRecreation.

Untuk tipe perubahan ini, fokuskan pada evaluasi statis, yang memberi Anda informasi paling rinci tentang perubahan. Dalam contoh ini, evaluasi statis menunjukkan bahwa perubahan adalah hasil perubahan pada nilai referensi parameter (ParameterReference). Parameter yang tepat yang diubah ditunjukkan oleh bidang CauseEntity (parameter Purpose).

Menentukan nilai bidang penggantian

ReplacementBidang dalam ResourceChange struktur menunjukkan apakah CloudFormation akan membuat ulang sumber daya. Merencanakan pembuatan ulang sumber daya (penggantian) mencegah Anda kehilangan data yang tidak dicadangkan atau mengganggu aplikasi yang berjalan di tumpukan Anda.

Nilai dalam bidang Replacement tergantung pada apakah perubahan memerlukan penggantian, ditunjukkan dengan bidang RequiresRecreation dalam struktur Target perubahan. Sebagai contoh, jika bidang RequiresRecreation adalah Never, bidang Replacement adalah False. Namun, jika ada beberapa perubahan pada satu sumber daya dan setiap perubahan memiliki nilai yang berbeda untuk RequiresRecreation bidang tersebut, CloudFormation perbarui sumber daya menggunakan perilaku yang paling mengganggu. Dengan kata lain, jika hanya satu dari banyak perubahan memerlukan penggantian, CloudFormation harus mengganti sumber daya dan, oleh karena itu, mengatur bidang Replacement ke True.

Set perubahan berikut dihasilkan dengan mengubah nilai untuk setiap parameter (Purpose,InstanceType, danKeyPairName), yang semuanya digunakan oleh EC2 instance. Dengan perubahan ini, CloudFormation akan diperlukan untuk mengganti instance karena Replacement bidang sama denganTrue.

{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/MyStack/1a2345b6-0000-00a0-a123-00abc0abc000", "Status": "CREATE_COMPLETE", "ChangeSetName": "SampleChangeSet-multiple", "Parameters": [ { "ParameterValue": "production", "ParameterKey": "Purpose" }, { "ParameterValue": "MyNewKeyName", "ParameterKey": "KeyPairName" }, { "ParameterValue": "t2.small", "ParameterKey": "InstanceType" } ], "Changes": [ { "ResourceChange": { "ResourceType": "AWS::EC2::Instance", "PhysicalResourceId": "i-7bef86f8", "Details": [ { "ChangeSource": "DirectModification", "Evaluation": "Dynamic", "Target": { "Attribute": "Properties", "Name": "KeyName", "RequiresRecreation": "Always" } }, { "ChangeSource": "DirectModification", "Evaluation": "Dynamic", "Target": { "Attribute": "Properties", "Name": "InstanceType", "RequiresRecreation": "Conditionally" } }, { "ChangeSource": "DirectModification", "Evaluation": "Dynamic", "Target": { "Attribute": "Tags", "RequiresRecreation": "Never" } }, { "CausingEntity": "KeyPairName", "ChangeSource": "ParameterReference", "Evaluation": "Static", "Target": { "Attribute": "Properties", "Name": "KeyName", "RequiresRecreation": "Always" } }, { "CausingEntity": "InstanceType", "ChangeSource": "ParameterReference", "Evaluation": "Static", "Target": { "Attribute": "Properties", "Name": "InstanceType", "RequiresRecreation": "Conditionally" } }, { "CausingEntity": "Purpose", "ChangeSource": "ParameterReference", "Evaluation": "Static", "Target": { "Attribute": "Tags", "RequiresRecreation": "Never" } } ], "Action": "Modify", "Scope": [ "Tags", "Properties" ], "LogicalResourceId": "MyEC2Instance", "Replacement": "True" }, "Type": "Resource" } ], "CreationTime": "2020-11-18T00:39:35.974Z", "Capabilities": [], "StackName": "MyStack", "NotificationARNs": [], "ChangeSetId": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/SampleChangeSet-multiple/1a2345b6-0000-00a0-a123-00abc0abc000" }

Identifikasi perubahan yang memerlukan sumber daya untuk diganti dengan melihat setiap perubahan (evaluasi statis di struktur Details). Dalam contoh ini, setiap perubahan memiliki nilai yang berbeda untuk RequireRecreation bidang tersebut, tetapi perubahan pada KeyName properti memiliki perilaku pembaruan yang paling mengganggu, selalu membutuhkan rekreasi. CloudFormation akan menggantikan instance karena nama kunci diubah.

Jika nama kunci tidak berubah, perubahan ke properti InstanceType akan memiliki perilaku pembaruan yang paling mengganggu (Conditionally), sehingga bidang Replacement akan Conditionally. Untuk menemukan kondisi yang CloudFormation menggantikan instance, lihat perilaku pembaruan untuk InstanceType properti AWS::EC2::Instancejenis sumber daya.

Menambahkan dan menghapus sumber daya

Contoh berikut dihasilkan dengan mengirimkan template yang dimodifikasi yang menghapus EC2 instance dan menambahkan grup Auto Scaling dan konfigurasi peluncuran.

{ "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/MyStack/1a2345b6-0000-00a0-a123-00abc0abc000", "Status": "CREATE_COMPLETE", "ChangeSetName": "SampleChangeSet-addremove", "Parameters": [ { "ParameterValue": "testing", "ParameterKey": "Purpose" }, { "ParameterValue": "MyKeyName", "ParameterKey": "KeyPairName" }, { "ParameterValue": "t2.micro", "ParameterKey": "InstanceType" } ], "Changes": [ { "ResourceChange": { "Action": "Add", "ResourceType": "AWS::AutoScaling::AutoScalingGroup", "Scope": [], "Details": [], "LogicalResourceId": "AutoScalingGroup" }, "Type": "Resource" }, { "ResourceChange": { "Action": "Add", "ResourceType": "AWS::AutoScaling::LaunchConfiguration", "Scope": [], "Details": [], "LogicalResourceId": "LaunchConfig" }, "Type": "Resource" }, { "ResourceChange": { "ResourceType": "AWS::EC2::Instance", "PhysicalResourceId": "i-1abc23d4", "Details": [], "Action": "Remove", "Scope": [], "LogicalResourceId": "MyEC2Instance" }, "Type": "Resource" } ], "CreationTime": "2020-11-18T01:44:08.444Z", "Capabilities": [], "StackName": "MyStack", "NotificationARNs": [], "ChangeSetId": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/SampleChangeSet-addremove/1a2345b6-0000-00a0-a123-00abc0abc000" }

Di struktur Changes, ada tiga struktur ResourceChange, satu untuk setiap sumber daya. Untuk setiap sumber daya, Action bidang menunjukkan apakah CloudFormation menambah atau menghapus sumber daya. Bidang Scope dan Details kosong karena hanya berlaku untuk sumber daya yang dimodifikasi.

Untuk sumber daya baru, tidak CloudFormation dapat menentukan nilai beberapa bidang sampai Anda menjalankan set perubahan. Misalnya, CloudFormation tidak menyediakan fisik IDs grup Auto Scaling dan konfigurasi peluncuran karena belum ada. CloudFormation membuat sumber daya baru saat Anda menjalankan set perubahan.

Melihat perubahan tingkat properti

Contoh berikut menunjukkan perubahan tingkat Tag properti pada properti instance AmazonEC2. Tag Value dan Key akan berubah menjadiTest.

"ChangeSetName": "SampleChangeSet", "ChangeSetId": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/SampleChangeSet/38d91d27-798d-4736-9bf1-fb7c46207807", "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/SampleEc2Template/68edcdc0-f6b6-11ee-966c-126d572cdd11", "StackName": "SampleEc2Template", "Description": "A sample EC2 instance template for testing change sets.", "Parameters": [ { "ParameterKey": "KeyPairName", "ParameterValue": "BatchTest" }, { "ParameterKey": "Purpose", "ParameterValue": "testing" }, { "ParameterKey": "InstanceType", "ParameterValue": "t2.micro" } ], "CreationTime": "2024-04-09T21:29:10.759000+00:00", "ExecutionStatus": "AVAILABLE", "Status": "CREATE_COMPLETE", "StatusReason": null, "NotificationARNs": [], "RollbackConfiguration": { :...skipping... { "Changes": [ { "Type": "Resource", "ResourceChange": { "Action": "Modify", "LogicalResourceId": "MyEC2Instance", "PhysicalResourceId": "i-0cc7856a36315e62b", "ResourceType": "AWS::EC2::Instance", "Replacement": "False", "Scope": [ "Tags" ], "Details": [ { "Target": { "Attribute": "Tags", "RequiresRecreation": "Never", "Path": "/Properties/Tags/0/Value", "BeforeValue": "testing", "AfterValue": "Test", "AttributeChangeType": "Modify" }, "Evaluation": "Static", "ChangeSource": "DirectModification" }, { "Target": { "Attribute": "Tags", "RequiresRecreation": "Never", "Path": "/Properties/Tags/0/Key", "BeforeValue": "Purpose", "AfterValue": "Test", "AttributeChangeType": "Modify" }, "Evaluation": "Static", "ChangeSource": "DirectModification" } ], "BeforeContext": "{\"Properties\":{\"KeyName\":\"BatchTest\",\"ImageId\":\"ami-8fcee4e5\",\"InstanceType\":\"t2.micro\",\"Tags\":[{\"Value\":\"testing\",\"Key\":\"Purpose\"}]}}", "AfterContext": "{\"Properties\":{\"KeyName\":\"BatchTest\",\"ImageId\":\"ami-8fcee4e5\",\"InstanceType\":\"t2.micro\",\"Tags\":[{\"Value\":\"Test\",\"Key\":\"Test\"}]}}" } } ]

DetailsStruktur menunjukkan nilai untuk Key dan Value sebelum set perubahan dijalankan, dan apa yang akan terjadi setelah set perubahan dijalankan.

PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.