Tutorial: Buat fungsi Lambda @Edge dasar - Amazon CloudFront

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

Tutorial: Buat fungsi Lambda @Edge dasar

Tutorial ini menunjukkan cara memulai dengan Lambda @Edge dengan membuat dan mengonfigurasi contoh fungsi Node.js yang berjalan di. CloudFront Contoh ini menambahkan header HTTP keamanan ke respons saat CloudFront mengambil file. (Ini dapat meningkatkan keamanan dan privasi untuk situs web.)

Anda tidak memerlukan situs web Anda sendiri untuk tutorial ini. Namun, ketika Anda memilih untuk membuat solusi Lambda @Edge Anda sendiri, Anda mengikuti langkah-langkah serupa dan memilih dari opsi yang sama.

Langkah 1: Mendaftar untuk Akun AWS

Jika Anda belum melakukannya, daftar untuk Akun AWS. Untuk informasi selengkapnya, lihat Mendaftar untuk Akun AWS.

Langkah 2: Buat CloudFront distribusi

Sebelum Anda membuat contoh fungsi Lambda @Edge, Anda harus memiliki CloudFront lingkungan untuk bekerja dengan yang menyertakan asal untuk menyajikan konten.

Untuk contoh ini, Anda membuat CloudFront distribusi yang menggunakan bucket Amazon S3 sebagai asal distribusi. Jika Anda sudah memiliki lingkungan untuk digunakan, Anda dapat melewati langkah ini.

Untuk membuat CloudFront distribusi dengan asal Amazon S3
  1. Buat bucket Amazon S3 dengan satu atau dua file, seperti file citra, untuk konten sampel. Untuk bantuan, ikuti langkah dalam Unggah konten Anda ke Amazon S3. Pastikan Anda mengatur izin untuk memberikan akses baca publik ke objek dalam keranjang Anda.

  2. Buat CloudFront distribusi dan tambahkan bucket S3 Anda sebagai asal, dengan mengikuti langkah-langkah di Buat distribusi CloudFront web. Jika Anda sudah memiliki distribusi, Anda dapat menambahkan bucket sebagai asal distribusi tersebut.

    Tip

    Catat ID distribusi Anda. Kemudian dalam tutorial ini ketika Anda menambahkan CloudFront pemicu untuk fungsi Anda, Anda harus memilih ID untuk distribusi Anda dalam daftar dropdown—misalnya,. E653W22221KDDL

Langkah 3: Buat fungsi Anda

Pada langkah ini, Anda membuat fungsi Lambda dari templat cetak biru di konsol Lambda. Fungsi ini menambahkan kode untuk memperbarui header keamanan dalam CloudFront distribusi Anda.

Untuk membuat fungsi Lambda
  1. Masuk ke AWS Management Console dan buka AWS Lambda konsol dihttps://console.aws.amazon.com/lambda/.

    penting

    Pastikan Anda berada di AS-Timur-1 (Virginia N.) ( Wilayah AWS us-east-1). Anda harus berada di Wilayah ini untuk membuat fungsi Lambda@Edge.

  2. Pilih Buat fungsi.

  3. Pada halaman fungsi Buat, pilih Gunakan cetak biru, lalu filter untuk CloudFront cetak biru dengan memasukkan di bidang pencarian. cloudfront

    catatan

    CloudFront cetak biru hanya tersedia di Wilayah AS-Timur-1 (Virginia N.) (us-east-1).

  4. Pilih cetak biru header Modify HTTP response sebagai template untuk fungsi Anda.

  5. Masukkan informasi tentang fungsi Anda berikut ini:

    • Nama fungsi — Masukkan nama untuk fungsi Anda.

    • Peran eksekusi - Pilih cara mengatur izin untuk fungsi Anda. Untuk menggunakan templat kebijakan izin Lambda @Edge dasar yang direkomendasikan, pilih Buat peran baru dari AWS templat kebijakan.

    • Nama peran — Masukkan nama untuk peran yang dibuat oleh templat kebijakan.

    • Templat kebijakan — Lambda secara otomatis menambahkan templat kebijakan Izin Lambda @Edge Dasar karena Anda memilih CloudFront cetak biru sebagai dasar fungsi Anda. Templat kebijakan ini menambahkan izin peran eksekusi yang memungkinkan CloudFront untuk menjalankan fungsi Lambda untuk Anda CloudFront di lokasi di seluruh dunia. Untuk informasi selengkapnya, lihat Siapkan IAM izin dan peran untuk Lambda @Edge.

  6. Pilih Buat fungsi di bagian bawah halaman.

  7. Di panel Deploy to Lambda @Edge yang muncul, pilih Batal. (Untuk tutorial ini, Anda harus memodifikasi kode fungsi sebelum menerapkan fungsi ke Lambda @Edge.)

  8. Gulir ke bawah ke bagian Sumber kode halaman.

  9. Ganti kode templat dengan fungsi yang memodifikasi header keamanan yang dikembalikan oleh Anda. Misalnya, Anda dapat menggunakan kode yang serupa dengan yang berikut ini:

    'use strict'; export const handler = (event, context, callback) => { //Get contents of response const response = event.Records[0].cf.response; const headers = response.headers; //Set new headers headers['strict-transport-security'] = [{key: 'Strict-Transport-Security', value: 'max-age= 63072000; includeSubdomains; preload'}]; headers['content-security-policy'] = [{key: 'Content-Security-Policy', value: "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'"}]; headers['x-content-type-options'] = [{key: 'X-Content-Type-Options', value: 'nosniff'}]; headers['x-frame-options'] = [{key: 'X-Frame-Options', value: 'DENY'}]; headers['x-xss-protection'] = [{key: 'X-XSS-Protection', value: '1; mode=block'}]; headers['referrer-policy'] = [{key: 'Referrer-Policy', value: 'same-origin'}]; //Return modified response callback(null, response); };
  10. Pilih File, Simpan untuk menyimpan kode yang diperbarui.

  11. Pilih Deploy.

Lanjutkan ke bagian berikutnya untuk menambahkan CloudFront pemicu untuk menjalankan fungsi.

Langkah 4: Tambahkan CloudFront pemicu untuk menjalankan fungsi

Sekarang setelah Anda memiliki fungsi Lambda untuk memperbarui header keamanan, konfigurasikan CloudFront pemicu untuk menjalankan fungsi Anda untuk menambahkan header dalam respons apa pun yang CloudFront diterima dari asal untuk distribusi Anda.

Untuk mengkonfigurasi CloudFront pemicu untuk fungsi Anda
  1. Di konsol Lambda, pada halaman Ikhtisar fungsi untuk fungsi Anda, pilih Tambah pemicu.

  2. Untuk konfigurasi Trigger, pilih CloudFront.

  3. Pilih Terapkan ke Lambda @Edge.

  4. Di panel Deploy to Lambda @Edge, di bawah pemicu CloudFront Konfigurasi, masukkan informasi berikut:

    • Distribusi — ID CloudFront distribusi untuk dikaitkan dengan fungsi Anda. Dalam daftar dropdown, pilih ID distribusi.

    • Perilaku cache — Perilaku cache yang digunakan dengan pemicu. Untuk contoh ini, biarkan nilai disetel ke *, yang berarti perilaku cache default distribusi Anda. Untuk informasi selengkapnya, lihat Pengaturan perilaku cache dalam topik Referensi pengaturan distribusi.

    • CloudFront event - Pemicu yang menentukan kapan fungsi Anda berjalan. Kami ingin fungsi header keamanan berjalan setiap kali CloudFront mengembalikan respons dari asal. Dalam daftar dropdown, pilih Respons asal. Untuk informasi selengkapnya, lihat Tambahkan pemicu untuk fungsi Lambda @Edge.

  5. Pilih kotak centang Konfirmasi penerapan ke Lambda @Edge.

  6. Pilih Deploy untuk menambahkan pemicu dan mereplikasi fungsi ke AWS lokasi di seluruh dunia.

  7. Tunggu fungsi mereplikasi. Ini biasanya memerlukan waktu beberapa menit.

    Anda dapat memeriksa untuk melihat apakah replikasi selesai dengan pergi ke CloudFront konsol dan melihat distribusi Anda. Tunggu status distribusi berubah dari Deploying ke tanggal dan waktu, yang berarti bahwa fungsi Anda telah direplikasi. Untuk memverifikasi bahwa fungsi bekerja, ikuti langkah-langkah di bagian berikutnya.

Langkah 5: Verifikasi bahwa fungsi berjalan

Sekarang setelah Anda membuat fungsi Lambda dan mengonfigurasi pemicu untuk menjalankannya untuk CloudFront distribusi, periksa untuk memastikan bahwa fungsi tersebut memenuhi apa yang Anda harapkan. Dalam contoh ini, kami memeriksa HTTP header yang CloudFront kembali, untuk memastikan bahwa header keamanan ditambahkan.

Untuk memverifikasi bahwa fungsi Lambda@Edge Anda menambahkan header keamanan
  1. Di browser, masukkan file URL for di bucket S3 Anda. Misalnya, Anda mungkin menggunakan yang URL mirip denganhttps://d111111abcdef8.cloudfront.net/image.jpg.

    Untuk informasi selengkapnya tentang nama CloudFront domain yang akan digunakan dalam fileURL, lihatKustomisasi URL format untuk file di CloudFront.

  2. Buka bilah alat Pengembang Web browser Anda. Misalnya, di jendela browser Anda di Chrome, buka menu konteks (klik kanan), lalu pilih Periksa.

  3. Pilih Jaringan tab.

  4. Muat ulang halaman untuk melihat gambar Anda, lalu pilih HTTP permintaan di panel kiri. Anda melihat HTTP header ditampilkan di panel terpisah.

  5. Lihat daftar HTTP header untuk memverifikasi bahwa header keamanan yang diharapkan termasuk dalam daftar. Misalnya, Anda mungkin melihat header yang mirip dengan yang ditampilkan di screenshot berikut.

    HTTPdaftar header dengan header keamanan yang diharapkan disorot.

Jika header keamanan disertakan dalam daftar header Anda, bagus! Anda telah berhasil membuat fungsi Lambda@Edge pertama Anda. Jika CloudFront mengembalikan kesalahan atau ada masalah lain, lanjutkan ke langkah berikutnya untuk memecahkan masalah.

Langkah 6: Memecahkan masalah

Jika CloudFront mengembalikan kesalahan atau tidak menambahkan header keamanan seperti yang diharapkan, Anda dapat menyelidiki eksekusi fungsi Anda dengan melihat CloudWatch Log. Pastikan untuk menggunakan log yang disimpan di AWS lokasi yang paling dekat dengan lokasi di mana fungsi dijalankan.

Misalnya, jika Anda melihat file dari London, coba ubah Wilayah di CloudWatch konsol ke Eropa (London).

Untuk memeriksa CloudWatch log untuk fungsi Lambda @Edge Anda
  1. Masuk ke AWS Management Console dan buka CloudWatch konsol di https://console.aws.amazon.com/cloudwatch/.

  2. Perubahan Wilayah ke lokasi yang ditampilkan saat Anda melihat file di browser Anda. Di sinilah fungsi beroperasi.

  3. Di panel kiri, pilih Log untuk melihat log untuk distribusi Anda.

Untuk informasi selengkapnya, lihat Pantau CloudFront metrik dengan Amazon CloudWatch.

Langkah 7: Bersihkan sumber daya contoh Anda

Jika Anda membuat bucket dan CloudFront distribusi Amazon S3 hanya untuk tutorial ini, hapus AWS sumber daya yang Anda alokasikan sehingga Anda tidak lagi dikenakan biaya. Setelah Anda menghapus AWS sumber daya, konten apa pun yang Anda tambahkan tidak lagi tersedia.

Tugas

Hapus ember S3

Sebelum Anda menghapus buket Amazon S3, pastikan pembuatan log dinonaktifkan untuk buket. Jika tidak, AWS terus menulis log ke bucket Anda saat Anda menghapusnya.

Untuk menonaktifkan pembuatan log untuk bucket
  1. Buka konsol Amazon S3 di. https://console.aws.amazon.com/s3/

  2. Pilih keranjang Anda, lalu pilih Properti.

  3. Dari Properti, pilih Pencatatan.

  4. Hapus kotak centang Diaktifkan.

  5. Pilih Simpan.

Sekarang, Anda dapat menghapus bucket Anda. Untuk informasi selengkapnya, lihat Menghapus bucket di Panduan Pengguna Konsol Layanan Penyimpanan Sederhana Amazon.

Hapus fungsi Lambda

Untuk instruksi untuk menghapus asosiasi fungsi Lambda dan opsional fungsi itu sendiri, lihat. Hapus fungsi dan replika Lambda @Edge

Hapus CloudFront distribusi

Sebelum Anda menghapus CloudFront distribusi, Anda harus menonaktifkannya. Distribusi yang dinonaktifkan tidak lagi berfungsi, dan tidak dikenakan biaya. Anda dapat mengaktifkan distribusi yang dinonaktifkan kapan saja. Setelah Anda menghapus distribusi yang dinonaktifkan, maka tidak lagi tersedia.

Untuk menonaktifkan dan menghapus CloudFront distribusi
  1. Buka CloudFront konsol dihttps://console.aws.amazon.com/cloudfront/v4/home.

  2. Pilih distribusi yang ingin Anda nonaktifkan, lalu pilih Nonaktifkan.

  3. Saat diminta untuk mengonfirmasi, pilih Ya, Nonaktifkan.

  4. Pilih distribusi yang dinonaktifkan, lalu pilih Hapus.

  5. Saat diminta konfirmasi, pilih Ya, Hapus.

Informasi terkait

Sekarang, setelah Anda memiliki gagasan dasar tentang cara kerja fungsi Lambda@Edge, pelajari lebih lanjut dengan membaca hal berikut: