Memecahkan masalah penerapan Amazon ECS blue/green - Amazon Elastic Container Service

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 panggilan UpdateService API.

  • Jalur asinkron: Kesalahan yang muncul di statusReason bidang DescribeServiceDeployments 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 danproductionListenerRule. testListenerRule Tambahkan ARN testListenerRule 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 denganloadBalancerName), 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 diperlukan advancedConfiguration 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" }