Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Otomatiskan CloudFront pembaruan saat titik akhir penyeimbang beban berubah dengan menggunakan Terraform
Tamilselvan P, Mohan Annam, dan Naveen Suthar, Amazon Web Services
Ringkasan
Saat pengguna Amazon Elastic Kubernetes Service (Amazon EKS) menghapus dan menginstal ulang konfigurasi ingress mereka melalui bagan Helm, Application Load Balancer (ALB) baru akan dibuat. Ini menciptakan masalah karena Amazon CloudFront terus mereferensikan catatan DNS ALB lama. Akibatnya, layanan yang ditujukan ke titik akhir ini tidak akan dapat dijangkau. (Untuk detail selengkapnya tentang alur kerja bermasalah ini, lihat Informasi tambahan.)
Untuk mengatasi masalah ini, pola ini menjelaskan penggunaan AWS Lambda fungsi kustom yang dikembangkan dengan Python. Fungsi Lambda ini secara otomatis mendeteksi ketika ALB baru dibuat melalui aturan Amazon. EventBridge Dengan menggunakan AWS SDK untuk Python (Boto3), fungsi tersebut kemudian memperbarui CloudFront konfigurasi dengan alamat DNS ALB baru, memastikan bahwa lalu lintas diarahkan ke titik akhir yang benar.
Solusi otomatis ini mempertahankan kontinuitas layanan tanpa perutean atau latensi tambahan. Proses ini membantu memastikan bahwa CloudFront selalu mereferensikan titik akhir DNS ALB yang benar, bahkan ketika infrastruktur yang mendasarinya berubah.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS.
Contoh aplikasi web untuk pengujian dan validasi yang digunakan di Amazon EKS dengan menggunakan Helm. Untuk informasi selengkapnya, lihat Menerapkan aplikasi dengan Helm di Amazon EKS di dokumentasi Amazon EKS.
Konfigurasikan CloudFront untuk merutekan panggilan ke ALB yang dibuat oleh pengontrol ingress
Helm. Untuk informasi selengkapnya, lihat Menginstal AWS Load Balancer Controller dengan Helm di dokumentasi Amazon EKS dan Membatasi akses ke Application Load Balancer dalam dokumentasi. CloudFront Terraform diinstal
dan dikonfigurasi di ruang kerja lokal.
Batasan
Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat AWS Layanan menurut Wilayah
. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.
Versi produk
Terraform versi 1.0.0 atau yang lebih baru
AWS Penyedia
Terraform versi 4.20 atau yang lebih baru
Arsitektur
Diagram berikut menunjukkan alur kerja dan komponen arsitektur untuk pola ini.

Solusi ini melakukan langkah-langkah berikut:
Pengontrol ingress Amazon EKS membuat Application Load Balancer (ALB) baru setiap kali ada Helm restart atau deployment.
EventBridge mencari acara pembuatan ALB.
Acara pembuatan ALB memicu fungsi Lambda.
Fungsi Lambda telah digunakan berdasarkan python 3.9 dan menggunakan API boto3 untuk memanggil. Layanan AWS Fungsi Lambda memperbarui CloudFront entri dengan nama DNS penyeimbang beban terbaru, yang diterima dari peristiwa create load balancer.
Alat
Layanan AWS
Amazon CloudFront mempercepat distribusi konten web Anda dengan mengirimkannya melalui jaringan pusat data di seluruh dunia, yang menurunkan latensi dan meningkatkan kinerja.
Amazon Elastic Kubernetes Service (Amazon EKS) membantu Anda menjalankan AWS Kubernetes tanpa perlu menginstal atau memelihara control plane atau node Kubernetes Anda sendiri.
Amazon EventBridge adalah layanan bus acara tanpa server yang membantu Anda menghubungkan aplikasi Anda dengan data waktu nyata dari berbagai sumber. Misalnya, AWS Lambda fungsi, titik akhir pemanggilan HTTP menggunakan tujuan API, atau bus acara di tempat lain. Akun AWS
AWS Lambdaadalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.
AWS SDK untuk Python (Boto3)
adalah kit pengembangan perangkat lunak yang membantu Anda mengintegrasikan aplikasi, perpustakaan, atau skrip Python Anda. Layanan AWS
Alat lainnya
Python adalah bahasa
pemrograman komputer tujuan umum. Terraform
adalah alat infrastruktur sebagai kode (IAc) HashiCorp yang membantu Anda membuat dan mengelola sumber daya cloud dan lokal.
Repositori kode
Kode untuk pola ini tersedia di repositori GitHub aws-cloudfront-automation-terraform-samples
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Siapkan dan konfigurasikan Git CLI. | Untuk menginstal dan mengkonfigurasi antarmuka baris perintah Git (CLI) di workstation lokal Anda, ikuti instruksi Memulai — Menginstal Git | DevOps insinyur |
Buat folder proyek dan tambahkan file. |
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Menyebarkan solusinya. | Untuk menyebarkan sumber daya di target Akun AWS, gunakan langkah-langkah berikut:
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Validasi penerapan. |
| DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Bersihkan infrastruktur. | Untuk membersihkan infrastruktur yang Anda buat sebelumnya, gunakan langkah-langkah berikut:
| DevOps insinyur |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Kesalahan memvalidasi kredensi penyedia | Saat Anda menjalankan Terraform
Kesalahan ini disebabkan oleh kedaluwarsa token keamanan untuk kredensil yang digunakan dalam konfigurasi mesin lokal Anda. Untuk mengatasi kesalahan, lihat Mengatur dan melihat pengaturan konfigurasi dalam dokumentasi AWS Command Line Interface (AWS CLI). |
Sumber daya terkait
AWS sumber daya
Dokumentasi Terraform
Informasi tambahan
Alur kerja bermasalah

Diagram menunjukkan alur kerja berikut:
Saat pengguna mengakses aplikasi, panggilan masuk ke CloudFront.
CloudFront merutekan panggilan ke Application Load Balancer (ALB) masing-masing.
ALB mencakup alamat IP target yang merupakan alamat IP pod aplikasi. Dari sana, ALB memberikan hasil yang diharapkan kepada pengguna.
Namun, alur kerja ini menunjukkan masalah. Penerapan aplikasi terjadi melalui bagan Helm. Setiap kali ada penerapan atau jika seseorang memulai ulang Helm, ingress masing-masing juga dibuat ulang. Akibatnya, pengontrol penyeimbang beban eksternal menciptakan kembali ALB. Juga, selama setiap pembuatan ulang, ALB dibuat ulang dengan nama DNS yang berbeda. Karena itu, CloudFront akan memiliki entri basi di pengaturan asal. Karena entri basi ini, aplikasi tidak akan dapat dijangkau oleh pengguna. Masalah ini mengakibatkan downtime bagi pengguna.
Solusi alternatif
Solusi lain yang mungkin adalah membuat DNS eksternal