

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 (konsol)
<a name="lambda-edge-how-it-works-tutorial"></a>

Tutorial ini menunjukkan kepada Anda bagaimana memulai dengan Lambda @Edge dengan membuat dan mengonfigurasi contoh fungsi Node.js yang berjalan di. CloudFront Contoh ini menambahkan header keamanan HTTP 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.

**Topics**
+ [Langkah 1: Mendaftar untuk Akun AWS](#lambda-edge-how-it-works-tutorial-AWS)
+ [Langkah 2: Buat CloudFront distribusi](#lambda-edge-how-it-works-tutorial-cloudfront)
+ [Langkah 3: Buat fungsi Anda](#lambda-edge-how-it-works-tutorial-create-function)
+ [Langkah 4: Tambahkan CloudFront pemicu untuk menjalankan fungsi](#lambda-edge-how-it-works-tutorial-add-trigger)
+ [Langkah 5: Verifikasi bahwa fungsi berjalan](#lambda-edge-how-it-works-tutorial-verify)
+ [Langkah 6: Memecahkan masalah](#lambda-edge-how-it-works-tutorial-troubleshoot)
+ [Langkah 7: Bersihkan sumber daya contoh Anda](#lambda-edge-how-it-works-tutorial-cleanup-resources)
+ [Informasi Terkait](#lambda-edge-how-it-works-tutorial-resources)

## Langkah 1: Mendaftar untuk Akun AWS
<a name="lambda-edge-how-it-works-tutorial-AWS"></a>

Jika Anda belum melakukannya, daftar untuk Akun AWS. Untuk informasi selengkapnya, lihat [Mendaftar untuk Akun AWS](setting-up-cloudfront.md#sign-up-for-aws).

## Langkah 2: Buat CloudFront distribusi
<a name="lambda-edge-how-it-works-tutorial-cloudfront"></a>

Sebelum membuat contoh fungsi Lambda@Edge, Anda harus memiliki CloudFront yang dapat dikerjakan, yang mencakup asal muasal 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.<a name="lambda-edge-how-it-works-tutorial-cf-proc"></a>

**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](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GettingStarted.html#GettingStartedUploadContent). Pastikan Anda mengatur izin untuk memberikan akses baca publik ke objek dalam keranjang Anda.

1. Buat CloudFront distribusi dan tambahkan bucket S3 Anda sebagai asal, dengan mengikuti langkah-langkah di [Buat distribusi CloudFront web](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GettingStarted.html#GettingStartedCreateDistribution). 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
<a name="lambda-edge-how-it-works-tutorial-create-function"></a>

Pada langkah ini, Anda membuat fungsi Lambda dari templat cetak biru di konsol Lambda. Fungsi menambahkan kode untuk memperbarui header keamanan di CloudFront distribusi. <a name="lambda-edge-how-it-works-tutorial-create-function-blueprint-proc"></a>

**Untuk membuat fungsi Lambda**

1. Masuk ke Konsol Manajemen AWS dan buka AWS Lambda konsol di[https://console.aws.amazon.com/lambda/](https://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.

1. Pilih **Buat fungsi**.

1. 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).****

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

1. 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 izin dan peran IAM untuk Lambda @Edge](lambda-edge-permissions.md).

1. Pilih **Buat fungsi** di bagian bawah halaman.

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

1. Gulir ke bawah ke bagian **Sumber kode** halaman.

1. 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);
   };
   ```

1. Pilih **File**, **Simpan** untuk menyimpan kode yang diperbarui.

1. Pilih **Deploy**.

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

## Langkah 4: Tambahkan CloudFront pemicu untuk menjalankan fungsi
<a name="lambda-edge-how-it-works-tutorial-add-trigger"></a>

Sekarang Anda memiliki fungsi Lambda untuk memperbarui header keamanan, konfigurasikan CloudFront memicu untuk menjalankan fungsi Anda untuk menambahkan header dalam respons apa pun yang CloudFront dari tempat awal distribusi Anda.<a name="lambda-edge-how-it-works-tutorial-add-trigger-proc"></a>

**Untuk mengkonfigurasi CloudFront pemicu untuk fungsi Anda**

1. Di konsol Lambda, pada halaman **Ikhtisar fungsi** untuk fungsi Anda, pilih **Tambah** pemicu.

1. Untuk **konfigurasi Trigger**, pilih **CloudFront**.

1. Pilih **Terapkan ke Lambda @Edge**.

1. 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 **\$1**, yang berarti perilaku cache default distribusi Anda. Untuk informasi selengkapnya, lihat [Pengaturan perilaku cache](DownloadDistValuesCacheBehavior.md) dalam topik [Semua referensi pengaturan distribusi](distribution-web-values-specify.md).
   + **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](lambda-edge-add-triggers.md).

1. Pilih kotak **centang Konfirmasi penerapan ke Lambda** @Edge.

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

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

    Anda dapat memeriksa untuk melihat apakah replikasi selesai oleh [menuju ke CloudFront konsol](https://console.aws.amazon.com/cloudfront/v4/home) 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
<a name="lambda-edge-how-it-works-tutorial-verify"></a>

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 header HTTP yang CloudFront kembali, untuk memastikan bahwa judul keamanan ditambahkan.<a name="lambda-edge-how-it-works-tutorial-verify-proc"></a>

**Untuk memverifikasi bahwa fungsi Lambda@Edge Anda menambahkan header keamanan**

1. Dalam peramban, masukkan URL untuk file dalam buket S3. Misalnya, Anda mungkin menggunakan URL yang serupa dengan `https://d111111abcdef8.cloudfront.net/image.jpg`.

   Untuk informasi selengkapnya tentang nama CloudFront domain yang akan digunakan dalam URL file, lihat[Sesuaikan format URL untuk file di CloudFront](LinkFormat.md).

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

1. Pilih **Jaringan** tab.

1. Muat ulang halaman untuk menampilkan citra Anda, lalu pilih permintaan HTTP di panel kiri. Anda melihat header HTTP yang ditampilkan dalam panel terpisah.

1. Lihat daftar header HTTP untuk memverifikasi bahwa header keamanan yang diharapkan disertakan dalam daftar. Misalnya, Anda mungkin melihat header yang mirip dengan yang ditampilkan di screenshot berikut.  
![\[Daftar header HTTP dengan header keamanan yang diharapkan disorot.\]](http://docs.aws.amazon.com/id_id/AmazonCloudFront/latest/DeveloperGuide/images/lambda-at-edge-security-headers-list.png)

Jika header keamanan disertakan dalam daftar header Anda, bagus\$1 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
<a name="lambda-edge-how-it-works-tutorial-troubleshoot"></a>

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 dalam CloudWatch konsol ke Eropa (London).<a name="lambda-edge-how-it-works-tutorial-cloudwatch-proc"></a>

**Untuk memeriksa CloudWatch log untuk fungsi Lambda @Edge Anda**

1. Masuk ke Konsol Manajemen AWS dan buka CloudWatch konsol di [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

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

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

Untuk informasi selengkapnya, lihat [Pantau CloudFront metrik dengan Amazon CloudWatch](monitoring-using-cloudwatch.md).

## Langkah 7: Bersihkan sumber daya contoh Anda
<a name="lambda-edge-how-it-works-tutorial-cleanup-resources"></a>

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](#lambda-edge-how-it-works-tutorial-delete-bucket) 
+ [Hapus fungsi Lambda](#lambda-edge-how-it-works-tutorial-delete-function)
+ [Hapus CloudFront distribusi](#lambda-edge-how-it-works-tutorial-delete-distribution)

### Hapus ember S3
<a name="lambda-edge-how-it-works-tutorial-delete-bucket"></a>

Sebelum Anda menghapus buket Amazon S3, pastikan pembuatan log dinonaktifkan untuk buket. Jika tidak, AWS terus menulis log ke bucket Anda saat Anda menghapusnya.<a name="lambda-edge-how-it-works-tutorial-delete-bucket-proc"></a>

**Untuk menonaktifkan pembuatan log untuk bucket**

1. Buka konsol Amazon S3 di. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)

1. Pilih keranjang Anda, lalu pilih **Properti**.

1. Dari **Properti**, pilih **Pencatatan**.

1. Hapus kotak centang **Diaktifkan**.

1. Pilih **Simpan**.

Sekarang, Anda dapat menghapus bucket Anda. Untuk informasi selengkapnya, lihat [Menghapus bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) di *Panduan Pengguna Konsol Layanan Penyimpanan Sederhana Amazon*.

### Hapus fungsi Lambda
<a name="lambda-edge-how-it-works-tutorial-delete-function"></a>

Untuk instruksi untuk menghapus asosiasi fungsi Lambda dan opsional fungsi itu sendiri, lihat. [Hapus fungsi dan replika Lambda @Edge](lambda-edge-delete-replicas.md)

### Hapus CloudFront distribusi
<a name="lambda-edge-how-it-works-tutorial-delete-distribution"></a>

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.<a name="lambda-edge-how-it-works-tutorial-delete-distribution-proc"></a>

**Untuk menonaktifkan dan menghapus CloudFront distribusi**

1. Buka CloudFront konsol di[https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home).

1. Pilih distribusi yang ingin Anda nonaktifkan, lalu pilih **Nonaktifkan**.

1. Saat diminta untuk mengonfirmasi, pilih **Ya, Nonaktifkan**.

1. Pilih distribusi yang dinonaktifkan, lalu pilih **Hapus**.

1. Saat diminta konfirmasi, pilih **Ya, Hapus**.

## Informasi Terkait
<a name="lambda-edge-how-it-works-tutorial-resources"></a>

Sekarang, setelah Anda memiliki gagasan dasar tentang cara kerja fungsi Lambda@Edge, pelajari lebih lanjut dengan membaca hal berikut:
+ [Lambda @Edge contoh fungsi](lambda-examples.md)
+ [Praktik Terbaik Desain Lambda @Edge](https://aws.amazon.com/blogs/networking-and-content-delivery/lambdaedge-design-best-practices/)
+ [Mengurangi Latensi dan Menggeser Komputasi ke Edge dengan Lambda @Edge](https://aws.amazon.com/blogs/networking-and-content-delivery/reducing-latency-and-shifting-compute-to-the-edge-with-lambdaedge/)