Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memecahkan masalah penerapan Amazon ECS blue/green
Berikut ini memberikan solusi untuk masalah umum yang mungkin Anda temui saat menggunakan blue/green penerapan dengan Amazon ECS. Blue/green kesalahan penerapan dapat terjadi selama fase berikut:
-
Jalur sinkron: Kesalahan yang segera muncul sebagai respons
CreateServiceatau panggilanUpdateServiceAPI. -
Jalur asinkron: Kesalahan yang muncul di
statusReasonbidangDescribeServiceDeploymentsdan menyebabkan rollback penerapan
Tip
Anda dapat menggunakan asisten AI Server MCP Amazon ECS with untuk memantau penerapan dan memecahkan masalah penerapan menggunakan bahasa alami.
Masalah konfigurasi penyeimbang beban
Konfigurasi penyeimbang beban adalah komponen penting dari blue/green penerapan di Amazon ECS. Konfigurasi yang tepat dari aturan pendengar, grup target, dan tipe penyeimbang beban sangat penting untuk penerapan yang berhasil. Bagian ini mencakup masalah konfigurasi penyeimbang beban umum yang dapat menyebabkan blue/green penerapan gagal.
Saat memecahkan masalah penyeimbang beban, penting untuk memahami hubungan antara aturan pendengar dan kelompok sasaran. Dalam blue/green penerapan:
-
Aturan pendengar produksi mengarahkan lalu lintas ke revisi layanan (biru) yang saat ini aktif
-
Aturan test listener dapat digunakan untuk memvalidasi revisi layanan baru (hijau) sebelum mengalihkan lalu lintas produksi
-
Grup sasaran digunakan untuk mendaftarkan instance kontainer dari setiap revisi layanan
-
Selama penyebaran, lalu lintas secara bertahap bergeser dari revisi layanan biru ke revisi layanan hijau dengan menyesuaikan bobot kelompok sasaran dalam aturan pendengar
Kesalahan konfigurasi aturan pendengar
Masalah berikut terkait dengan konfigurasi aturan listener yang salah untuk blue/green penerapan.
- Menggunakan ARN pendengar Application Load Balancer alih-alih ARN aturan pendengar
-
Pesan kesalahan:
productionListenerRule has an invalid ARN format. Must be RuleArn for ALB or ListenerArn for NLB. Got: arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-alb/abc123/def456Solusi: Saat menggunakan Application Load Balancer, Anda harus menentukan aturan pendengar ARN untuk
productionListenerRuledan,testListenerRulebukan ARN pendengar. Untuk Network Load Balancers, Anda harus menggunakan ARN pendengar.Untuk informasi tentang cara menemukan ARN listener, lihat Listener untuk Application Load Balancers Anda di Panduan Pengguna Application Load Balancer. ARN untuk aturan memiliki format.
arn:aws:elasticloadbalancing:region:account-id:listener-rule/app/... - Menggunakan aturan yang sama untuk pendengar produksi dan pengujian
-
Pesan kesalahan:
The following rules cannot be used as both production and test listener rules: arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-alb/abc123/def456/ghi789Solusi: Anda harus menggunakan aturan pendengar yang berbeda untuk lalu lintas produksi dan pengujian. Buat aturan listener terpisah untuk lalu lintas pengujian yang merutekan ke grup target pengujian Anda.
- Grup target tidak terkait dengan aturan pendengar
-
Pesan kesalahan:
Service deployment rolled back because of invalid networking configuration: Target group arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/myAlternateTG/abc123 is not associated with either productionListenerRule or testListenerRule.Solusi: Baik grup target utama dan grup target alternatif harus dikaitkan dengan aturan pendengar produksi atau aturan pendengar pengujian. Perbarui konfigurasi penyeimbang beban Anda untuk memastikan kedua grup target terkait dengan aturan pendengar Anda dengan benar.
- Aturan pendengar pengujian tidak ada dengan Application Load Balancer
-
Pesan kesalahan:
For Application LoadBalancer, testListenerRule is required when productionListenerRule is not associated with both targetGroup and alternateTargetGroupSolusi: Bila Anda menggunakan Application Load Balancer, jika kedua grup target tidak terkait dengan aturan pendengar produksi, Anda harus menentukan aturan listener pengujian. Tambahkan a
testListenerRuleke konfigurasi Anda dan pastikan kedua grup target terkait dengan aturan produksi atau pengujian listener. Untuk informasi selengkapnya, lihat Listener untuk Application Load Balancer Anda di Panduan Pengguna Application Load Balancer.
Kesalahan konfigurasi grup sasaran
Masalah berikut terkait dengan konfigurasi grup target yang salah untuk blue/green penerapan.
- Beberapa grup target dengan lalu lintas dalam aturan pendengar
-
Pesan kesalahan:
Service deployment rolled back because of invalid networking configuration. productionListenerRule arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-alb/abc123/def456/ghi789 should have exactly one target group serving traffic but found 2 target groups which are serving trafficSolusi: Sebelum memulai blue/green penerapan, pastikan hanya satu grup target yang menerima lalu lintas (memiliki bobot bukan nol) dalam aturan pendengar Anda. Perbarui konfigurasi aturan listener Anda untuk menyetel bobot ke nol untuk grup target apa pun yang seharusnya tidak menerima lalu lintas.
- Gandakan grup target di seluruh entri penyeimbang beban
-
Pesan kesalahan:
Duplicate targetGroupArn found: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/myecs-targetgroup/abc123Solusi: Setiap kelompok sasaran ARN harus unik di semua entri penyeimbang beban dalam definisi layanan Anda. Tinjau konfigurasi Anda dan pastikan Anda menggunakan grup target yang berbeda untuk setiap entri penyeimbang beban.
- Kelompok target tak terduga dalam aturan pendengar produksi
-
Pesan kesalahan:
Service deployment rolled back because of invalid networking configuration. Production listener rule is forwarding traffic to unexpected target group arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/random-nlb-tg/abc123. Expected traffic to be forwarded to either targetGroupArn: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/nlb-targetgroup/def456 or alternateTargetGroupArn: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/nlb-tg-alternate/ghi789Solusi: Aturan pendengar produksi adalah meneruskan lalu lintas ke grup target yang tidak ditentukan dalam definisi layanan Anda. Pastikan aturan listener dikonfigurasi untuk meneruskan lalu lintas hanya ke grup target yang ditentukan dalam definisi layanan Anda.
Untuk informasi selengkapnya, lihat meneruskan tindakan di Panduan Pengguna Application Load Balancer.
Kesalahan konfigurasi tipe penyeimbang beban
Masalah berikut terkait dengan konfigurasi tipe penyeimbang beban yang salah untuk blue/green penerapan.
- Mencampur konfigurasi Classic Load Balancer dan Application Load Balancer atau Network Load Balancer
-
Pesan kesalahan:
All loadBalancers must be strictly either ELBv1 (defining loadBalancerName) or ELBv2 (defining targetGroupArn)catatan
Classic Load Balancer adalah load balancer generasi sebelumnya dari Elastic Load Balancing. Kami menyarankan Anda untuk bermigrasi ke penyeimbang beban generasi saat ini. Untuk informasi selengkapnya, lihat Memigrasi Classic Load Balancer Anda.
Solusi:. Gunakan semua Classic Load Balancer atau semua Application Load Balancer dan Network Load Balancer.
Untuk Application Load Balancers dan Network Load Balancers, tentukan hanya bidangnya.
targetGroupArn - Menggunakan konfigurasi lanjutan dengan Classic Load Balancer
-
Pesan kesalahan:
advancedConfiguration field is not allowed with ELBv1 loadBalancersSolusi: Konfigurasi lanjutan untuk blue/green penerapan hanya didukung dengan Application Load Balancers dan Network Load Balancer. Jika Anda menggunakan Classic Load Balancer (ditentukan dengan
loadBalancerName), Anda tidak dapat menggunakan bidang tersebut.advancedConfigurationBaik beralih ke Application Load Balancer, atau hapus bidang.advancedConfiguration - Konfigurasi lanjutan yang tidak konsisten di seluruh penyeimbang beban
-
Pesan kesalahan:
Either all or none of the provided loadBalancers must have advancedConfiguration definedSolusi: Jika Anda menggunakan beberapa penyeimbang beban, Anda harus menentukan
advancedConfigurationuntuk semuanya atau tidak satupun dari mereka. Perbarui konfigurasi Anda untuk memastikan konsistensi di semua entri penyeimbang beban. - Konfigurasi lanjutan yang tidak ada dengan blue/green penerapan
-
Pesan kesalahan:
advancedConfiguration field is required for all loadBalancers when using a non-ROLLING deployment strategySolusi: Saat menggunakan strategi blue/green penyebaran dengan Application Load Balancers, Anda harus menentukan
advancedConfigurationbidang untuk semua entri penyeimbang beban. Tambahkan yang diperlukanadvancedConfigurationke konfigurasi penyeimbang beban Anda.
Masalah izin
Masalah berikut terkait dengan izin yang tidak memadai untuk blue/green penerapan.
- Kebijakan Missing trust tentang infrastructure role
-
Pesan kesalahan:
Service deployment rolled back because of invalid networking configuration. ECS was unable to manage the ELB resources due to missing permissions on ECS Infrastructure Role 'arn:aws:iam::123456789012:role/Admin'.Solusi: Peran IAM yang ditentukan untuk mengelola sumber daya penyeimbang beban tidak memiliki kebijakan kepercayaan yang benar. Perbarui kebijakan kepercayaan peran untuk memungkinkan layanan mengambil peran. Kebijakan kepercayaan harus mencakup:
- Izin baca tidak ada pada peran penyeimbang beban
-
Pesan kesalahan:
service myService failed to describe target health on target-group myTargetGroup with (error User: arn:aws:sts::123456789012:assumed-role/myELBRole/ecs-service-scheduler is not authorized to perform: elasticloadbalancing:DescribeTargetHealth because no identity-based policy allows the elasticloadbalancing:DescribeTargetHealth action)Solusi: Peran IAM yang digunakan untuk mengelola sumber daya penyeimbang beban tidak memiliki izin untuk membaca informasi kesehatan target. Tambahkan
elasticloadbalancing:DescribeTargetHealthizin ke kebijakan peran. Untuk informasi tentang izin Elastic Load Balancing, lihat. Peran IAM infrastruktur Amazon ECS untuk penyeimbang beban - Izin tulis tidak ada pada peran penyeimbang beban
-
Pesan kesalahan:
service myService failed to register targets in target-group myTargetGroup with (error User: arn:aws:sts::123456789012:assumed-role/myELBRole/ecs-service-scheduler is not authorized to perform: elasticloadbalancing:RegisterTargets on resource: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/myTargetGroup/abc123 because no identity-based policy allows the elasticloadbalancing:RegisterTargets action)Solusi: Peran IAM yang digunakan untuk mengelola sumber daya penyeimbang beban tidak memiliki izin untuk mendaftarkan target. Tambahkan
elasticloadbalancing:RegisterTargetsizin ke kebijakan peran. Untuk informasi tentang izin Elastic Load Balancing, lihat. Peran IAM infrastruktur Amazon ECS untuk penyeimbang beban - Izin tidak ada untuk mengubah aturan pendengar
-
Pesan kesalahan:
Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. User: arn:aws:sts::123456789012:assumed-role/myELBRole/ECSNetworkingWithELB is not authorized to perform: elasticloadbalancing:ModifyListener on resource: arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-alb/abc123/def456 because no identity-based policy allows the elasticloadbalancing:ModifyListener actionSolusi: Peran IAM yang digunakan untuk mengelola sumber daya penyeimbang beban tidak memiliki izin untuk memodifikasi pendengar. Tambahkan
elasticloadbalancing:ModifyListenerizin ke kebijakan peran. Untuk informasi tentang izin Elastic Load Balancing, lihat. Peran IAM infrastruktur Amazon ECS untuk penyeimbang beban
Untuk blue/green penerapan, sebaiknya lampirkan kebijakan AmazonECS-ServiceLinkedRolePolicy terkelola ke peran infrastruktur Anda, yang mencakup semua izin yang diperlukan untuk mengelola sumber daya penyeimbang beban.
Masalah kait siklus hidup
Masalah berikut terkait dengan kait siklus hidup dalam penerapan. blue/green
- Kebijakan trust yang salah tentang Lambda hook role
-
Pesan kesalahan:
Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. ECS was unable to assume role arn:aws:iam::123456789012:role/AdminSolusi: Peran IAM yang ditentukan untuk hook siklus hidup Lambda tidak memiliki kebijakan kepercayaan yang benar. Perbarui kebijakan kepercayaan peran untuk memungkinkan layanan mengambil peran. Kebijakan kepercayaan harus mencakup:
- Lambda hook mengembalikan status GAGAL
-
Pesan kesalahan:
Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. Lifecycle hook target arn:aws:lambda:us-west-2:123456789012:function:myHook returned FAILED status.Solusi: Fungsi Lambda yang ditentukan sebagai kait siklus hidup mengembalikan status GAGAL. Periksa log fungsi Lambda di CloudWatch log Amazon untuk menentukan alasan kegagalan, dan perbarui fungsi untuk menangani peristiwa penerapan dengan benar.
- Izin tidak ada untuk menjalankan fungsi Lambda
-
Pesan kesalahan:
Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. ECS was unable to invoke hook target arn:aws:lambda:us-west-2:123456789012:function:myHook due to User: arn:aws:sts::123456789012:assumed-role/myLambdaRole/ECS-Lambda-Execution is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-west-2:123456789012:function:myHook because no identity-based policy allows the lambda:InvokeFunction actionSolusi: Peran IAM yang digunakan untuk hook siklus hidup Lambda tidak memiliki izin untuk menjalankan fungsi Lambda. Tambahkan
lambda:InvokeFunctionizin ke kebijakan peran untuk ARN fungsi Lambda tertentu. Untuk informasi tentang izin Lambda, lihat. Izin diperlukan untuk fungsi Lambda di penerapan Amazon ECS blue/green - Batas waktu fungsi Lambda atau respons tidak valid
-
Pesan kesalahan:
Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. ECS was unable to parse the response from arn:aws:lambda:us-west-2:123456789012:function:myHook due to HookStatus must not be nullSolusi: Fungsi Lambda habis waktu atau mengembalikan respons yang tidak valid. Pastikan bahwa fungsi Lambda Anda mengembalikan respons yang valid dengan
hookStatusbidang yang disetel ke salah satu atauSUCCEEDED.FAILEDJuga, periksa apakah batas waktu fungsi Lambda diatur dengan tepat untuk logika validasi Anda. Untuk informasi selengkapnya, lihat Kait siklus hidup untuk penerapan layanan Amazon ECS.Contoh respons Lambda yang valid:
{ "hookStatus": "SUCCEEDED", "reason": "Validation passed" }