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
CreateService
atau panggilanUpdateService
API. -
Jalur asinkron: Kesalahan yang muncul di
statusReason
bidangDescribeServiceDeployments
dan menyebabkan rollback penerapan
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 target 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/def456
Solusi: Saat menggunakan Application Load Balancer, Anda harus menentukan aturan pendengar ARN untuk
productionListenerRule
dan,testListenerRule
bukan 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/ghi789
Solusi: 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.
- Aturan pendengar pengujian tidak ada untuk Network Load Balancer
-
Pesan kesalahan:
TestListenerRule is required for NLB with arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/nlb-targetgroup/abc123
Solusi: Bila Anda menggunakan Network Load Balancer, Anda harus menentukan keduanya dan
productionListenerRule
.testListenerRule
Tambahkan ARNtestListenerRule
dengan pendengar yang valid ke konfigurasi Anda. Untuk informasi selengkapnya, lihat Membuat pendengar untuk Network Load Balancer di Panduan Pengguna Network Load Balancer - 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 alternateTargetGroup
Solusi: Bila Anda menggunakan Application Load Balancer, jika kedua grup target tidak terkait dengan aturan pendengar produksi, Anda harus menentukan aturan listener pengujian. Tambahkan a
testListenerRule
ke 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 traffic
Solusi: 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/abc123
Solusi: 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/ghi789
Solusi: 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 loadBalancers
Solusi: 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.advancedConfiguration
Baik 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 defined
Solusi: Jika Anda menggunakan beberapa penyeimbang beban, Anda harus menentukan
advancedConfiguration
untuk semuanya atau tidak satupun. Perbarui konfigurasi Anda untuk memastikan konsistensi di semua entri penyeimbang beban. - Konfigurasi lanjutan tidak ada dengan blue/green penerapan
-
Pesan kesalahan:
advancedConfiguration field is required for all loadBalancers when using a non-ROLLING deployment strategy
Solusi: Saat menggunakan strategi blue/green penyebaran dengan Application Load Balancers, Anda harus menentukan
advancedConfiguration
bidang untuk semua entri penyeimbang beban. Tambahkan yang diperlukanadvancedConfiguration
ke 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:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- 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:DescribeTargetHealth
izin 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:RegisterTargets
izin ke kebijakan peran. Untuk informasi tentang izin Elastic Load Balancing, lihat. Peran IAM infrastruktur Amazon ECS untuk penyeimbang beban - Izin tidak ada untuk memodifikasi 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 action
Solusi: Peran IAM yang digunakan untuk mengelola sumber daya penyeimbang beban tidak memiliki izin untuk memodifikasi pendengar. Tambahkan
elasticloadbalancing:ModifyListener
izin 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/Admin
Solusi: 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:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ecs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
- 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 action
Solusi: Peran IAM yang digunakan untuk hook siklus hidup Lambda tidak memiliki izin untuk menjalankan fungsi Lambda. Tambahkan
lambda:InvokeFunction
izin 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 null
Solusi: Fungsi Lambda habis waktu atau mengembalikan respons yang tidak valid. Pastikan bahwa fungsi Lambda Anda mengembalikan respons yang valid dengan
hookStatus
bidang yang disetel ke salah satu atauSUCCEEDED
.FAILED
Juga, 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" }