Pemecahan masalah AWS CloudFormation StackSets - AWS CloudFormation

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

Pemecahan masalah AWS CloudFormation StackSets

Topik ini berisi beberapa AWS CloudFormation StackSets masalah umum, dan solusi yang disarankan untuk masalah tersebut.

Alasan umum untuk kegagalan operasi tumpukan

Masalah: Operasi tumpukan gagal, dan status instans tumpukan adalah OUTDATED.

Penyebab: Ada beberapa penyebab umum kegagalan operasi tumpukan.

  • Izin tidak memadai di akun target untuk membuat sumber daya yang ditentukan di templat Anda.

  • AWS CloudFormation Template mungkin memiliki kesalahan. Validasi template AWS CloudFormation dan perbaiki kesalahan sebelum mencoba membuat kumpulan tumpukan Anda.

  • Templat dapat mencoba untuk membuat sumber daya global yang harus unik tetapi tidak, seperti bucket S3.

  • Nomor akun target yang ditentukan tidak ada. Periksa nomor akun target yang Anda tentukan di halaman Mengatur opsi deployment dari panduan.

  • Akun administrator tidak memiliki hubungan kepercayaan dengan akun target.

  • Jumlah maksimum sumber daya yang ditentukan dalam templat Anda sudah ada di akun target. Misalnya, Anda mungkin telah mencapai batas IAM peran yang diizinkan di akun target, tetapi templat membuat lebih banyak IAM peran.

  • Anda telah mencapai jumlah maksimum tumpukan yang diizinkan dalam satu set tumpukan. Lihat Batasan AWS CloudFormation untuk jumlah maksimum tumpukan per set tumpukan.

Solusi: Untuk informasi selengkapnya tentang izin yang diperlukan dari akun target dan administrator sebelum Anda dapat membuat set tumpukan, lihat Berikan semua pengguna izin akun administrator untuk mengelola tumpukan di semua akun target.

Mencoba lagi pembuatan tumpukan atau operasi pembaruan yang gagal

Masalah: Pembuatan atau pembaruan tumpukan gagal, dan status instans tumpukan adalah OUTDATED. Untuk memecahkan masalah mengapa pembuatan atau pembaruan tumpukan gagal, buka AWS CloudFormation konsol, dan lihat peristiwa untuk tumpukan, yang akan memiliki status DELETED (untuk operasi pembuatan yang gagal) atau FAILED (untuk operasi pembaruan yang gagal). Telusuri peristiwa tumpukan, dan cari kolom Alasan status. Nilai dari Alasan status menjelaskan alasan operasi tumpukan mengalami kegagalan.

Setelah Anda memperbaiki penyebab utama kegagalan pembuatan tumpukan, dan siap untuk mencoba lagi pembuatan tumpukan, lakukan langkah-langkah berikut.

Solusi: Lakukan langkah-langkah berikut untuk mencoba lagi operasi tumpukan.

  1. Di konsol, pilih set tumpukan yang berisi tumpukan di mana operasi mengalami kegagalan.

  2. Di menu Tindakan, pilih Edit StackSet detail untuk mencoba lagi membuat atau memperbarui tumpukan.

  3. DI halaman Tentukan templat, untuk menggunakan templat AWS CloudFormation yang sama, simpan opsi default, Gunakan templat saat ini. Jika operasi tumpukan Anda gagal karena templat memerlukan perubahan, dan Anda ingin mengunggah templat yang direvisi, pilih Unggah templat ke Amazon S3, lalu pilih Telusuri untuk memilih templat yang diperbarui. Setelah selesai mengunggah templat yang direvisi, pilih Selanjutnya.

  4. Pada halaman Tentukan detail tumpukan, jika Anda tidak mengubah parameter apa pun yang spesifik untuk templat Anda, pilih Berikutnya.

  5. Di halaman Atur opsi deployment, ubah default untuk Akun serentak maksimum dan Toleransi kegagalan, jika diinginkan. Untuk informasi selengkapnya tentang pengaturan ini, lihat Opsi operasi set tumpukan.

  6. Pada halaman Tinjauan, tinjau pilihan Anda, dan isi kotak centang untuk mengetahui kemampuan yang diperlukan. IAM Pilih Kirim.

  7. Jika tumpukan Anda tidak berhasil diperbarui, ulangi prosedur ini, setelah Anda menyelesaikan masalah mendasar yang mencegah pembuatan tumpukan.

Penghapusan instans tumpukan gagal

Masalah: Penghapusan tumpukan telah mengalami kegagalan.

Penyebab: Penghapusan tumpukan akan gagal untuk setiap tumpukan di mana perlindungan pengakhiran telah diaktifkan.

Solusi: Tentukan apakah perlindungan pengakhiran telah diaktifkan untuk tumpukan tersebut. Jika sudah, nonaktifkan perlindungan pengakhiran, kemudian lakukan penghapusan instans tumpukan lagi.

Operasi impor tumpukan gagal

Masalah: Operasi impor tumpukan gagal mengimpor tumpukan yang ada ke set tumpukan baru atau yang sudah ada. Instans tumpukan berada dalam INOPERABLE status.

Solusi: Kembalikan operasi impor tumpukan, dengan menyelesaikan tugas-tugas berikut.

  1. Gunakan Hapus Tumpukan dari StackSets opsi dan aktifkan RetainStacksselama konfigurasi, lalu lanjutkan untuk menghapus instance tumpukan dari kumpulan tumpukan Anda. Untuk informasi lebih lanjut, Untuk informasi lebih lanjut, lihatHapus instance tumpukan menggunakan CloudFormation konsol atau AWS CLI.

  2. Anda akan melihat instance stack Stackset diperbarui untuk menghapus instance INOPERABLE stack.

  3. Perbaiki instance tumpukan sesuai dengan kesalahan kegagalan impor dan coba lagi operasi impor tumpukan.

Jumlah kegagalan instance stack untuk StackSets operasi

Jumlah kegagalan instans tumpukan memberi tahu Anda jika instance tumpukan gagal disediakan atau diperbarui. Instans tumpukan ini tidak diterapkan karena satu atau lebih alasan berikut:

  • Sumber daya yang ada dengan konfigurasi serupa

  • Dependensi yang hilang, seperti peran AWS Identity and Access Management () IAM

  • Faktor lain yang saling bertentangan

Jika Anda ingin menerapkan dengan konkurensi maksimum, jumlah konkurensi maks adalah satu lebih banyak dari jumlah toleransi kegagalan, paling banyak. Misalnya, jika jumlah toleransi kegagalan adalah 9, maka jumlah konkurensi maks tidak boleh lebih dari 10. Ini akan menyebabkan operasi kembali SUCCEEDED bahkan jika beberapa instance tumpukan gagal diperbarui. Jumlah kegagalan instans tumpukan baru memungkinkan Anda menentukan apakah operasi hanya berhasil secara kondisional karena jumlah toleransi kegagalan diatur untuk memungkinkan semua kegagalan.

Anda dapat menggunakan AWS Management Console, AWS SDK, atau AWS CLI untuk mendapatkan hitungan kegagalan dan contoh tumpukan filter untuk menentukan instance mana yang perlu digunakan kembali.

Menggunakan konsol

Untuk melihat jumlah instance tumpukan yang gagal:
  1. Buka AWS CloudFormation konsol dan pilih StackSets.

  2. Pilih tab Anda StackSet, lalu pilih tab Operasi.

  3. Pilih status di kolom Status untuk melihat detail status. Anda akan menemukan jumlah instance tumpukan gagal untuk operasi tertentu dalam detail status.

Untuk melihat akun, wilayah, dan status instance tumpukan untuk operasi:
  1. Dalam detail status, pilih jumlah instans tumpukan yang gagal. Contoh: Stack instance: <number of failed stack instances>.

  2. Perluas panel samping dengan memilih header panel. Hasil di panel samping adalah status instance tumpukan setelah selesainya operasi yang dipilih.

Untuk melihat detail instance tumpukan saat ini untuk operasi:
  1. Pilih tab Stack Instances.

  2. Filter berdasarkan ID operasi terakhir. Hasilnya adalah status dan alasan status saat ini dari operasi terakhir untuk memodifikasi instance. Anda dapat menggunakan filter ini dalam kombinasi dengan AWS akun, AWS wilayah, Status Terperinci, dan status Drift untuk lebih menyempurnakan hasil pencarian Anda.

Menggunakan AWS CLI

Untuk mendapatkan jumlah instance tumpukan yang gagal, panggil describe-stack-set-operation atau list-stack-set-operations dan lihatStatusDetails.

$ aws cloudformation describe-stack-set-operation --stack-set-name ss1 \ --operation-id 5550e62f-c822-4331-88fa-21c1d7bafc60
{ "StackSetOperation": { "OperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60", "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Action": "CREATE", "Status": "SUCCEEDED", "OperationPreferences": { "RegionOrder": [], "FailureToleranceCount": 10, "MaxConcurrentCount": 10 }, "AdministrationRoleARN": "arn:aws:iam::123456789012:role/AWSCloudFormationStackSetAdministrationRole", "ExecutionRoleName": "AWSCloudFormationStackSetExecutionRole", "CreationTimestamp": "2022-10-26T17:18:53.947000+00:00", "EndTimestamp": "2022-10-26T17:19:35.304000+00:00", "StatusDetails": { "FailedStackInstancesCount": 3 } } }
aws cloudformation list-stack-set-operations --stack-set-name ss1
{ "Summaries": [ { "OperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60", "Action": "CREATE", "Status": "SUCCEEDED", "CreationTimestamp": "2022-10-26T17:18:53.947000+00:00", "EndTimestamp": "2022-10-26T17:19:35.304000+00:00", "StatusDetails": { "FailedStackInstancesCount": 3 }, "OperationPreferences": { "RegionOrder": [], "FailureToleranceCount": 10, "MaxConcurrentCount": 10 } } ] }

Untuk mendapatkan gambaran historis untuk operasi tertentu, gunakan list-stack-set-operation-results untuk melihat status dan alasan status untuk setiap instance tumpukan setelah operasi selesai. Lihat contoh berikut untuk menemukan Status danStatusReason:

aws cloudformation list-stack-set-operation-results --stack-set-name ss1 --operation-id 5550e62f-c822-4331-88fa-21c1d7bafc60 --filters Name=OPERATION_RESULT_STATUS,Values=FAILED
{ "Summaries": [ { "Account": "123456789012", "Region": "us-west-2", "Status": "FAILED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "AccountGateResult": { "Status": "SKIPPED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'." }, "OrganizationalUnitId": "" }, { "Account": "123456789012", "Region": "us-west-1", "Status": "FAILED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "AccountGateResult": { "Status": "SKIPPED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'." }, "OrganizationalUnitId": "" }, { "Account": "123456789012", "Region": "us-east-1", "Status": "FAILED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "AccountGateResult": { "Status": "SKIPPED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'." }, "OrganizationalUnitId": "" } ] }

Gunakan list-stack-instances dengan LAST_OPERATION_ID filter DETAILED_STATUS dan untuk mendapatkan daftar instance tumpukan yang gagal dalam operasi terakhir yang mencoba menerapkan instance tumpukan. Lihat --filters bendera dalam contoh dengan DETAILED_STATUS danLAST_OPERATION_ID:

aws cloudformation list-stack-instances --stack-set-name ss1 --filters Name=DETAILED_STATUS,Values=FAILED Name=LAST_OPERATION_ID,Values=5550e62f-c822-4331-88fa-21c1d7bafc60
{ "Summaries": [ { "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Region": "us-east-1", "Account": "123456789012", "Status": "OUTDATED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "StackInstanceStatus": { "DetailedStatus": "FAILED" }, "OrganizationalUnitId": "", "DriftStatus": "NOT_CHECKED", "LastOperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60" }, { "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Region": "us-west-1", "Account": "123456789012", "Status": "OUTDATED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "StackInstanceStatus": { "DetailedStatus": "FAILED" }, "OrganizationalUnitId": "", "DriftStatus": "NOT_CHECKED", "LastOperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60" }, { "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Region": "us-west-2", "Account": "123456789012", "Status": "OUTDATED", "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "StackInstanceStatus": { "DetailedStatus": "FAILED" }, "OrganizationalUnitId": "", "DriftStatus": "NOT_CHECKED", "LastOperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60" } ] }

Untuk menemukan ID operasi terakhir untuk memodifikasi instance tumpukan, gunakan list-stack-instances atau describe-stack-instance untuk mendapatkanLastOperationId:

aws cloudformation describe-stack-instance --stack-set-name ss1 --stack-instance-account 123456789012 --stack-instance-region us-east-2
{ "StackInstance": { "StackSetId": "ss1:9101ca57-49fc-4a61-a5a6-4c97b8adb08f", "Region": "us-west-2", "Account": "123456789012", "ParameterOverrides": [], "Status": "OUTDATED", "StackInstanceStatus": { "DetailedStatus": "FAILED" }, "StatusReason": "Account 123456789012 should have 'AWSCloudFormationStackSetExecutionRole' role with trust relationship to Role 'AWSCloudFormationStackSetAdministrationRole'.", "OrganizationalUnitId": "", "DriftStatus": "NOT_CHECKED", "LastOperationId": "5550e62f-c822-4331-88fa-21c1d7bafc60" } }