Melakukan deteksi drift pada CloudFormation StackSets - AWS CloudFormation

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

Melakukan deteksi drift pada CloudFormation StackSets

Bahkan saat Anda mengelola tumpukan dan sumber daya yang dikandungnya CloudFormation, pengguna dapat mengubah sumber daya tersebut di luar. CloudFormation Pengguna dapat mengedit sumber daya secara langsung dengan menggunakan layanan dasar yang membuat sumber daya. Dengan melakukan deteksi drift pada a StackSet, Anda dapat menentukan apakah salah satu instance tumpukan milik yang StackSet berbeda, atau telah melayang, dari konfigurasi yang diharapkan.

Bagaimana CloudFormation melakukan deteksi drift pada StackSet

Saat CloudFormation melakukan deteksi drift pada a StackSet, ia melakukan deteksi drift pada tumpukan yang terkait dengan setiap instance tumpukan di file. StackSet Untuk melakukan ini, CloudFormation membandingkan keadaan terkini setiap sumber daya dalam tumpukan dengan perkiraan keadaan sumber daya tersebut, sebagaimana ditetapkan dalam templat tumpukan dan parameter input tertentu. Jika keadaan sumber daya terkini berbeda dari keadaan yang diharapkan, sumber daya tersebut dianggap telah menyimpang. Jika satu atau beberapa sumber daya dalam tumpukan telah menyimpan, maka tumpukan itu sendiri dianggap telah menyimpan, dan instans tumpukan yang terkait dengan tumpukan dianggap telah menyimpang juga. Jika satu atau lebih instance tumpukan dalam StackSet telah melayang, StackSet itu sendiri dianggap telah hanyut.

Deteksi drift mengidentifikasi perubahan yang tidak dikelola; yaitu, perubahan yang dilakukan pada tumpukan di luar. CloudFormation Perubahan yang dilakukan melalui CloudFormation tumpukan secara langsung, bukan pada StackSet level, tidak dianggap hanyut. Misalnya, Anda memiliki tumpukan yang terkait dengan instance tumpukan a StackSet. Jika Anda menggunakan CloudFormation untuk memperbarui tumpukan itu untuk menggunakan template yang berbeda, itu tidak dianggap drift, meskipun tumpukan itu sekarang memiliki template yang berbeda dari tumpukan lain milik. StackSet Hal ini karena tumpukan masih menyesuaikan templat yang diperkirakannya dan konfigurasi parameter dalam CloudFormation.

Untuk informasi rinci tentang cara CloudFormation melakukan deteksi drift pada tumpukan, lihatMendeteksi perubahan konfigurasi yang tidak terkelola pada tumpukan dan sumber daya dengan deteksi drift.

Karena CloudFormation melakukan deteksi drift pada setiap tumpukan secara individual, diperlukan nilai parameter yang diganti saat menentukan apakah tumpukan telah melayang. Untuk informasi lebih lanjut tentang menimpa parameter templat dalam instans tumpukan, lihat Ganti nilai parameter pada tumpukan di dalam CloudFormation StackSet.

Jika Anda melakukan deteksi drift secara langsung pada tumpukan yang terkait dengan instance tumpukan, hasil drift tersebut tidak tersedia dari halaman StackSetskonsol.

Mendeteksi penyimpangan pada StackSet (konsol)

Untuk mendeteksi penyimpangan pada a StackSet
  1. Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  2. Pada StackSetshalaman, pilih StackSet di mana Anda ingin melakukan deteksi drift.

  3. Dari menu Tindakan, pilih Deteksi penyimpangan.

    CloudFormation menampilkan bilah informasi yang menyatakan bahwa deteksi drift telah dimulai untuk yang dipilih. StackSet

  4. Opsional: Untuk memantau kemajuan operasi deteksi penyimpangan:

    1. Pilih StackSet nama untuk menampilkan halaman detail Stackset.

    2. Pilih tab Operasi, pilih operasi deteksi penyimpangan, lalu pilih Tampilkan detail penyimpangan.

    CloudFormation menampilkan kotak dialog Detail operasi.

  5. Tunggu hingga CloudFormation menyelesaikan operasi deteksi drift. Saat operasi deteksi drift selesai, CloudFormation perbarui status Drift dan waktu pemeriksaan drift terakhir untuk Anda. StackSet Bidang ini tercantum di tab Ikhtisar halaman StackSet detail untuk yang dipilih StackSet.

    Operasi deteksi drift mungkin memakan waktu, tergantung pada jumlah instance tumpukan yang disertakan dalam StackSet, dan jumlah sumber daya yang disertakan dalam file. StackSet Anda hanya dapat menjalankan operasi deteksi drift tunggal pada yang diberikan StackSet pada satu waktu. CloudFormation melanjutkan operasi deteksi drift bahkan setelah Anda mengabaikan bilah informasi.

  6. Untuk meninjau hasil deteksi drift untuk instance tumpukan di a StackSet, pilih tab Stack instance.

    Kolom Nama tumpukan mencantumkan nama tumpukan yang terkait dengan setiap instans tumpukan, dan kolom Status drift mencantumkan status penyimpangan tumpukan tersebut. Tumpukan dianggap telah menyimpang jika satu atau beberapa sumber dayanya telah menyimpang.

  7. Untuk meninjau hasil deteksi drift untuk tumpukan yang terkait dengan instance tumpukan tertentu:

    1. Pilih tab Operasi.

    2. Pilih operasi drift yang ingin Anda lihat hasil deteksi drift. Panel split akan menampilkan status instance stack dan alasan untuk operasi yang dipilih. Untuk operasi drift, kolom alasan status menunjukkan status drift dari instance tumpukan.

    3. Pilih instance tumpukan yang ingin Anda lihat detail drift, dan pilih Lihat drift sumber daya. Dalam tabel status drift Resource pada halaman Resource Drifts, setiap sumber daya tumpukan terdaftar dengan status driftnya dan deteksi drift terakhir kali dimulai pada sumber daya. ID logis dan ID fisik setiap sumber daya ditampilkan untuk membantu Anda mengidentifikasinya.

  8. Anda dapat mengurutkan sumber daya berdasarkan status penyimpangannya menggunakan kolom Status Penyimpangan.

    Untuk melihat detail pada sumber daya yang dimodifikasi:

    1. Dengan sumber daya yang dipilih, pilih Lihat detail drift.

      CloudFormation menampilkan halaman detail drift untuk sumber daya tertentu. Halaman ini mencantumkan perbedaan sumber daya. Ini juga mencantumkan nilai properti yang diharapkan dan saat ini dari sumber daya.

      catatan

      Jika tumpukan milik Wilayah dan akun yang berbeda dari yang saat ini Anda masuki, tombol Deteksi drift akan dinonaktifkan dan Anda tidak akan dapat melihat detailnya.

Mendeteksi penyimpangan pada StackSet ()AWS CLI

Untuk mendeteksi penyimpangan pada seluruh tumpukan menggunakan AWS CLI, gunakan prosedur berikut:

Untuk mendeteksi penyimpangan pada a StackSet
  1. Gunakan detect-stack-set-driftperintah untuk mendeteksi penyimpangan pada keseluruhan StackSet dan instance tumpukan yang terkait.

    Contoh berikut memulai deteksi drift pada file. StackSet stack-set-drift-example

    aws cloudformation detect-stack-set-drift \ --stack-set-name stack-set-drift-example

    Output:

    { "OperationId": "c36e44aa-3a83-411a-b503-cb611example" }
  2. Karena operasi deteksi StackSet drift dapat menjadi operasi yang berjalan lama, gunakan describe-stack-set-operationperintah untuk memantau status operasi drift. Perintah ini mengambil ID StackSet operasi yang dikembalikan oleh detect-stack-set-drift perintah.

    Contoh berikut menggunakan ID operasi dari contoh sebelumnya untuk mengembalikan informasi tentang operasi deteksi StackSet drift. Dalam contoh ini, operasi masih berjalan. Dari tujuh instance tumpukan yang terkait dengan ini StackSet, satu instance tumpukan telah ditemukan telah hanyut, dua instance sinkron, dan deteksi drift untuk empat instance tumpukan yang tersisa masih dalam proses. Karena satu contoh telah melayang, status drift dari StackSet dirinya sendiri sekarang. DRIFTED

    aws cloudformation describe-stack-set-operation \ --stack-set-name stack-set-drift-example \ --operation-id c36e44aa-3a83-411a-b503-cb611example

    Output:

    { "StackSetOperation": { "Status": "RUNNING", "AdministrationRoleARN": "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole", "OperationPreferences": { "RegionOrder": [] }, "ExecutionRoleName": "AWSCloudFormationStackSetExecutionRole", "StackSetDriftDetectionDetails": { "DriftedStackInstancesCount": 1, "TotalStackInstancesCount": 7, "LastDriftCheckTimestamp": "2019-12-04T20:34:28.543Z", "InSyncStackInstancesCount": 2, "InProgressStackInstancesCount": 4, "DriftStatus": "DRIFTED", "FailedStackInstancesCount": 0 }, "Action": "DETECT_DRIFT", "CreationTimestamp": "2019-12-04T20:33:13.673Z", "StackSetId": "stack-set-drift-example:bd1f4017-d4f9-432e-a73f-8c22example", "OperationId": "c36e44aa-3a83-411a-b503-cb611example" } }

    Melakukan perintah yang sama nanti, contoh ini menunjukkan informasi akan kembali setelah operasi deteksi penyimpangan selesai. Dua dari tujuh instance tumpukan total yang terkait dengan ini StackSet telah melayang, menjadikan status drift itu sendiri sebagai. StackSet DRIFTED

    aws cloudformation describe-stack-set-operation \ --stack-set-name stack-set-drift-example \ --operation-id c36e44aa-3a83-411a-b503-cb611example

    Output:

    { "StackSetOperation": { "Status": "SUCCEEDED", "AdministrationRoleARN": "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole", "OperationPreferences": { "RegionOrder": [] } "ExecutionRoleName": "AWSCloudFormationStackSetExecutionRole", "EndTimestamp": "2019-12-04T20:37:32.829Z", "StackSetDriftDetectionDetails": { "DriftedStackInstancesCount": 2, "TotalStackInstancesCount": 7, "LastDriftCheckTimestamp": "2019-12-04T20:36:55.612Z", "InSyncStackInstancesCount": 5, "InProgressStackInstancesCount": 0, "DriftStatus": "DRIFTED", "FailedStackInstancesCount": 0 }, "Action": "DETECT_DRIFT", "CreationTimestamp": "2019-12-04T20:33:13.673Z", "StackSetId": "stack-set-drift-example:bd1f4017-d4f9-432e-a73f-8c22example", "OperationId": "c36e44aa-3a83-411a-b503-cb611example" } }
  3. Ketika operasi deteksi StackSet drift selesai, gunakandescribe-stack-set,, list-stack-instancesdescribe-stack-instance, dan list-stack-instance-resource-drifts perintah untuk meninjau hasilnya.

    Perintah describe-stack-set mencakup informasi penyimpangan terperinci yang sama yang dikembalikan oleh perintah describe-stack-set-operation.

    aws cloudformation describe-stack-set \ --stack-set-name stack-set-drift-example

    Output:

    { "StackSet": { "Status": "ACTIVE", "Description": "Demonstration of drift detection on stack sets.", "Parameters": [], "Tags": [ { "Value": "Drift detection", "Key": "Feature" } ], "ExecutionRoleName": "AWSCloudFormationStackSetExecutionRole", "Capabilities": [], "AdministrationRoleARN": "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole", "StackSetDriftDetectionDetails": { "DriftedStackInstancesCount": 2, "TotalStackInstancesCount": 7, "LastDriftCheckTimestamp": "2019-12-04T20:36:55.612Z", "InProgressStackInstancesCount": 0, "DriftStatus": "DRIFTED", "DriftDetectionStatus": "COMPLETED", "InSyncStackInstancesCount": 5, "FailedStackInstancesCount": 0 }, "StackSetARN": "arn:aws:cloudformation:us-east-1:123456789012:stackset/stack-set-drift-example:bd1f4017-d4f9-432e-a73f-8c22example", "TemplateBody": [details omitted], "StackSetId": "stack-set-drift-example:bd1f4017-d4f9-432e-a73f-8c22ebexample", "StackSetName": "stack-set-drift-example" } }

    Anda dapat menggunakan list-stack-instancesperintah untuk mengembalikan informasi ringkasan tentang instance tumpukan yang terkait dengan a StackSet, termasuk status drift dari setiap instance tumpukan.

    Dalam contoh ini, mengeksekusi list-stack-instances pada contoh StackSet dengan filter status drift disetel untuk DRIFTED memungkinkan Anda mengidentifikasi dua instance tumpukan mana yang memiliki status drift. DRIFTED

    aws cloudformation list-stack-instances \ --stack-set-name stack-set-drift-example \ --filters Name=DRIFT_STATUS,Values=DRIFTED

    Output:

    { "Summaries": [ { "StackId": "arn:aws:cloudformation:eu-west-1:123456789012:stack/StackSet-stack-set-drift-example-b0fb6083-60c0-4e39-af15-2f071e0db90c/0e4f0940-16d4-11ea-93d8-0641cexample", "Status": "CURRENT", "Account": "012345678910", "Region": "eu-west-1", "LastDriftCheckTimestamp": "2019-12-04T20:37:32.687Z", "DriftStatus": "DRIFTED", "StackSetId": "stack-set-drift-example:bd1f4017-d4f9-432e-a73f-8c22eexample", "LastOperationId": "c36e44aa-3a83-411a-b503-cb611example" }, { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/StackSet-stack-set-drift-example-b7fde68e-e541-44c2-b33d-ef2e2988071a/008e6030-16d4-11ea-8090-12f89example", "Status": "CURRENT", "Account": "123456789012", "Region": "us-east-1", "LastDriftCheckTimestamp": "2019-12-04T20:34:28.275Z", "DriftStatus": "DRIFTED", "StackSetId": "stack-set-drift-example:bd1f4017-d4f9-432e-a73f-8c22eexample", "LastOperationId": "c36e44aa-3a83-411a-b503-cb611example" }, [additional stack instances omitted] ] }

    Perintah describe-stack-instance juga mengembalikan informasi ini, tetapi untuk instans tumpukan tunggal, seperti dalam contoh di bawah ini.

    aws cloudformation describe-stack-instance \ --stack-set-name stack-set-drift-example \ --stack-instance-account 012345678910 --stack-instance-region us-east-1

    Output:

    { "StackInstance": { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/StackSet-stack-set-drift-example-b7fde68e-e541-44c2-b33d-ef2e2988071a/008e6030-16d4-11ea-8090-12f89example", "Status": "CURRENT", "Account": "123456789012", "Region": "us-east-1", "ParameterOverrides": [], "DriftStatus": "DRIFTED", "LastDriftCheckTimestamp": "2019-12-04T20:34:28.275Z", "StackSetId": "stack-set-drift-example:bd1f4017-d4f9-432e-a73f-8c22eexample", "LastOperationId": "c36e44aa-3a83-411a-b503-cb611example" } }
  4. Setelah Anda mengidentifikasi instance tumpukan mana yang telah hanyut, Anda dapat menggunakan informasi tentang instance tumpukan yang dikembalikan oleh describe-stack-instance perintah list-stack-instances or untuk menjalankan perintah. list-stack-instance-resource-drifts Perintah ini mengembalikan informasi rinci tentang sumber daya dalam tumpukan yang telah hanyut untuk operasi drift tertentu.

    Contoh berikut menggunakan --stack-instance-resource-drift-statuses parameter untuk meminta informasi stack drift untuk sumber daya yang telah dimodifikasi atau dihapus dalam contoh operasi drift sebelumnya. Permintaan mengembalikan informasi pada satu sumber daya yang telah dimodifikasi, termasuk detail tentang dua propertinya dan nilainya yang diubah. Tidak ada sumber daya yang telah dihapus.

    aws cloudformation list-stack-instance-resource-drifts \ --stack-set-name my-stack-set-with-resource-drift \ --stack-instance-account 123456789012 \ --stack-instance-region us-east-1 \ --operation-id c36e44aa-3a83-411a-b503-cb611example \ --stack-instance-resource-drift-statuses MODIFIED DELETED

    Output:

    { "Summaries": [ { "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/my-stack-set-with-resource-drift/489e5570-df85-11e7-a7d9-50example", "ResourceType": "AWS::SQS::Queue", "Timestamp": "2018-03-26T17:23:34.489Z", "PhysicalResourceId": "https://sqs.us-east-1.amazonaws.com/123456789012/my-stack-with-resource-drift-Queue-494PBHCO76H4", "StackResourceDriftStatus": "MODIFIED", "PropertyDifferences": [ { "PropertyPath": "/DelaySeconds", "ActualValue": "120", "ExpectedValue": "20", "DifferenceType": "NOT_EQUAL" }, { "PropertyPath": "/RedrivePolicy/maxReceiveCount", "ActualValue": "12", "ExpectedValue": "10", "DifferenceType": "NOT_EQUAL" } ], "LogicalResourceId": "Queue" } ] }

Menghentikan deteksi drift pada StackSet

Karena deteksi drift pada a StackSet bisa menjadi operasi yang berjalan lama, mungkin ada contoh ketika Anda ingin menghentikan operasi deteksi drift yang saat ini berjalan pada file. StackSet

Untuk menghentikan deteksi drift pada StackSet (konsol)
  1. Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation.

  2. Pada StackSetshalaman, pilih nama StackSet.

    CloudFormation menampilkan halaman StackSets detail untuk yang dipilih StackSet.

  3. Pada halaman StackSets detail, pilih tab Operasi, lalu pilih operasi deteksi drift.

  4. Pilih Hentikan operasi.

Untuk menghentikan deteksi drift pada StackSet ()AWS CLI
  • Gunakan perintah stop-stack-set-operation. Anda harus memberikan StackSet nama dan ID operasi StackSet operasi deteksi drift.

    aws cloudformation stop-stack-set-operation \ --stack-set-name stack-set-drift-example \ --operation-id 624af370-311a-11e8-b6b7-500cexample