Ubah header HTTP saat Anda bermigrasi dari F5 ke Application Load Balancer di AWS - AWS Prescriptive Guidance

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

Ubah header HTTP saat Anda bermigrasi dari F5 ke Application Load Balancer di AWS

Sachin Trivedi, Amazon Web Services

Ringkasan

Saat Anda memigrasikan aplikasi yang menggunakan penyeimbang Load F5 ke Amazon Web Services (AWS) dan ingin menggunakan Application Load Balancer di AWS, memigrasikan aturan F5 untuk modifikasi header adalah masalah umum. Application Load Balancer tidak mendukung modifikasi header, tetapi Anda dapat menggunakan Amazon CloudFront sebagai jaringan pengiriman konten (CDN) dan Lambda @Edge untuk memodifikasi header.

Pola ini menjelaskan integrasi yang diperlukan dan menyediakan kode contoh untuk modifikasi header dengan menggunakan AWS CloudFront dan Lambda @Edge.

Prasyarat dan batasan

Prasyarat

  • Aplikasi lokal yang menggunakan penyeimbang beban F5 dengan konfigurasi yang menggantikan nilai header HTTP dengan menggunakan. if, else Untuk informasi selengkapnya tentang konfigurasi ini, lihat HTTP: :header dalam dokumentasi produk F5. 

Batasan

  • Pola ini berlaku untuk kustomisasi header load balancer F5. Untuk penyeimbang beban pihak ketiga lainnya, silakan periksa dokumentasi penyeimbang beban untuk informasi dukungan.

  • Fungsi Lambda yang Anda gunakan untuk Lambda @Edge harus berada di Wilayah AS Timur (Virginia N.).

Arsitektur

Diagram berikut menunjukkan arsitektur di AWS, termasuk aliran integrasi antara CDN dan komponen AWS lainnya.

Arsitektur untuk modifikasi header dengan menggunakan Amazon CloudFront dan Lambda @Edge

Alat

Layanan AWS

  • Application Load Balancer ─ Application Load Balancer adalah layanan load balancing AWS yang dikelola sepenuhnya yang berfungsi pada lapisan ketujuh model Open Systems Interconnection (OSI). Ini menyeimbangkan lalu lintas di beberapa target dan mendukung permintaan perutean lanjutan berdasarkan header dan metode HTTP, string kueri, dan perutean berbasis host atau berbasis jalur.

  • Amazon CloudFront - Amazon CloudFront adalah layanan web yang mempercepat distribusi konten web statis dan dinamis Anda, seperti.html, .css, .js, dan file gambar, kepada pengguna Anda. CloudFront mengirimkan konten Anda melalui jaringan pusat data di seluruh dunia yang disebut lokasi tepi untuk latensi yang lebih rendah dan peningkatan kinerja.

  • Lambda @Edge ─ Lambda @Edge adalah ekstensi AWS Lambda yang memungkinkan Anda menjalankan fungsi untuk menyesuaikan konten yang dikirimkan. CloudFront Anda dapat membuat fungsi di Wilayah AS Timur (Virginia N.), dan kemudian mengaitkan fungsi tersebut dengan CloudFront distribusi untuk secara otomatis mereplikasi kode Anda di seluruh dunia, tanpa menyediakan atau mengelola server. Ini mengurangi latensi dan meningkatkan pengalaman pengguna.

Kode

Kode contoh berikut menyediakan cetak biru untuk memodifikasi CloudFront header respons. Ikuti instruksi di bagian Epik untuk menyebarkan kode.

exports.handler = async (event, context) => {     const response = event.Records[0].cf.response;     const headers = response.headers;     const headerNameSrc = 'content-security-policy';     const headerNameValue = '*.xyz.com';     if (headers[headerNameSrc.toLowerCase()]) {         headers[headerNameSrc.toLowerCase()] = [{             key: headerNameSrc,             value: headerNameValue,         }];         console.log(`Response header "${headerNameSrc}" was set to ` +                     `"${headers[headerNameSrc.toLowerCase()][0].value}"`);     }     else {             headers[headerNameSrc.toLowerCase()] = [{             key: headerNameSrc,             value: headerNameValue,             }];     }     return response; };

Epik

TugasDeskripsiKeterampilan yang dibutuhkan
Buat distribusi CloudFront web.

Pada langkah ini, Anda membuat CloudFront distribusi untuk memberi tahu dari CloudFront mana Anda ingin konten dikirim, dan detail tentang cara melacak dan mengelola pengiriman konten.

Untuk membuat distribusi menggunakan konsol, masuk ke AWS Management Console, buka CloudFront konsol, lalu ikuti langkah-langkah dalam CloudFront dokumentasi.

Administrator awan
TugasDeskripsiKeterampilan yang dibutuhkan
Buat dan terapkan fungsi Lambda @Edge.

Anda dapat membuat fungsi Lambda @Edge dengan menggunakan cetak biru untuk memodifikasi header respons. CloudFront (Cetak Biru lainnya tersedia untuk kasus penggunaan yang berbeda; untuk informasi selengkapnya, lihat Lambda @Edge contoh fungsi dalam dokumentasi.) CloudFront  

Untuk membuat fungsi Lambda @Edge:

  1. Masuk ke AWS Management Console dan buka konsol AWS Lambda di. https://console.aws.amazon.com/lambda/

  2. Pastikan Anda berada di Wilayah AS Timur (Virginia N.). CloudFront cetak biru hanya tersedia di Wilayah ini.

  3. Pilih Buat fungsi.

  4. Pilih Gunakan cetak biru, lalu masukkan cloudfront di kolom Pencarian cetak biru. 

  5. Pilih cloudfront-modify-response-headercetak biru, lalu pilih Konfigurasi.

  6. Pada halaman Informasi dasar, masukkan informasi berikut:

    1. Masukkan nama fungsi.

    2. Untuk peran Eksekusi, pilih Buat peran baru dari templat kebijakan AWS.

    3. Kaitkan nama peran AWS Identity and Access Management (IAM) yang diperlukan.

  7. Pilih Buat fungsi.

  8. Di bagian Desainer halaman, pilih nama fungsi Anda.

  9. Di bagian Kode fungsi, ganti kode template dengan kode sampel yang disediakan sebelumnya dalam pola ini, di bagian Kode.

  10. Dalam kode contoh, ganti xyz.com dengan nama domain Anda.  

  11. Pilih Simpan.

Administrator AWS
Terapkan fungsi Lambda @Edge.

Ikuti petunjuk di langkah 4 dari Tutorial: Membuat fungsi Lambda @Edge sederhana dalam CloudFront dokumentasi Amazon untuk mengonfigurasi CloudFront pemicu dan menyebarkan fungsi.

Administrator AWS

Sumber daya terkait

CloudFront dokumentasi