Pembatasan pada semua fungsi edge - Amazon CloudFront

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

Pembatasan pada semua fungsi edge

Pembatasan berikut berlaku untuk semua fungsi edge, baik CloudFront Fungsi maupun Lambda @Edge.

Kepemilikan Akun AWS

Untuk mengaitkan fungsi tepi dengan CloudFront distribusi, fungsi dan distribusi harus dimiliki oleh yang sama Akun AWS.

Menggabungkan CloudFront Fungsi dengan Lambda @Edge

Untuk perilaku cache tertentu, pembatasan berikut berlaku:

  • Setiap jenis kejadian (permintaan penampil, permintaan asal, respons asal, dan respons penampil) hanya dapat memiliki satu asosiasi fungsi edge.

  • Anda tidak dapat menggabungkan CloudFront Fungsi dan Lambda @Edge dalam acara penampil (permintaan penampil dan respons penampil).

Semua kombinasi fungsi edge lainnya diperbolehkan. Tabel berikut menjelaskan kombinasi yang diizinkan.

CloudFront Fungsi

Permintaan penampil

Respons pemirsa

Lambda@Edge

Permintaan penampil

Tidak diizinkan

Tidak diizinkan

Permintaan asal

Diizinkan

Diizinkan

Respon asal

Diizinkan

Diizinkan

Respons pemirsa

Tidak diizinkan

Tidak diizinkan

Kode status HTTP

CloudFront tidak memanggil fungsi tepi untuk peristiwa respons penampil saat asal mengembalikan kode status HTTP 400 atau lebih tinggi.

Fungsi Lambda@Edge untuk peristiwa respons asal dipanggil untuk semuarespons asal, termasuk saat asal mengembalikan kode status HTTP 400 atau lebih tinggi. Untuk informasi selengkapnya, lihat Perbarui tanggapan HTTP di pemicu respons asal.

Header HTTP

Header HTTP tertentu tidak diizinkan, yang berarti mereka tidak terkena fungsi tepi dan fungsi tidak dapat menambahkannya. Header lainnya hanya baca, yang berarti fungsi dapat membacanya tetapi tidak dapat menambahkan, memodifikasi, atau menghapusnya.

Header yang diizinkan

Header HTTP berikut tidak terkena fungsi edge, dan fungsi tidak dapat menambahkannya. Jika fungsi Anda menambahkan salah satu header ini, itu gagal CloudFront validasi dan CloudFront mengembalikan kode status HTTP 502 (Bad Gateway) ke penampil.

  • Connection

  • Expect

  • Keep-Alive

  • Proxy-Authenticate

  • Proxy-Authorization

  • Proxy-Connection

  • Trailer

  • Upgrade

  • X-Accel-Buffering

  • X-Accel-Charset

  • X-Accel-Limit-Rate

  • X-Accel-Redirect

  • X-Amz-Cf-*

  • X-Amzn-Auth

  • X-Amzn-Cf-Billing

  • X-Amzn-Cf-Id

  • X-Amzn-Cf-Xff

  • X-Amzn-Errortype

  • X-Amzn-Fle-Profile

  • X-Amzn-Header-Count

  • X-Amzn-Header-Order

  • X-Amzn-Lambda-Integration-Tag

  • X-Amzn-RequestId

  • X-Cache

  • X-Edge-*

  • X-Forwarded-Proto

  • X-Real-IP

Header hanya-baca

Header berikut ini hanya untuk dibaca. Fungsi Anda dapat membacanya dan menggunakannya sebagai input ke logika fungsi, tetapi tidak dapat mengubah nilainya. Jika fungsi Anda menambahkan atau mengedit header hanya-baca, permintaan gagal CloudFront validasi dan CloudFront mengembalikan kode status HTTP 502 (Bad Gateway) ke penampil.

Header hanya-baca dalam peristiwa permintaan penampil

Header berikut ini hanya-baca di peristiwa permintaan penampil.

  • Content-Length

  • Host

  • Transfer-Encoding

  • Via

Header hanya-baca dalam peristiwa permintaan asal (hanya Lambda@Edge)

Header berikut hanya-baca dalam peristiwa permintaan asal, yang hanya ada di Lambda@Edge.

  • Accept-Encoding

  • Content-Length

  • If-Modified-Since

  • If-None-Match

  • If-Range

  • If-Unmodified-Since

  • Transfer-Encoding

  • Via

Header hanya-baca dalam peristiwa respons asal (hanya Lambda@Edge)

Header berikut hanya-baca dalam peristiwa respon asal, yang hanya ada di Lambda@Edge.

  • Transfer-Encoding

  • Via

Header hanya-baca dalam peristiwa respons penampil

Header berikut hanya-baca dalam peristiwa respons penampil untuk Fungsi CloudFront dan Lambda @Edge.

  • Warning

  • Via

Header berikut hanya-baca dalam peristiwa respons penampil untuk Lambda @Edge.

  • Content-Length

  • Content-Encoding

  • Transfer-Encoding

String pertanyaan

Pembatasan berikut berlaku untuk fungsi yang membaca, memperbarui, atau membuat string kueri dalam permintaan URI.

  • (Lambda@Edge saja) Untuk mengakses string kueri dalam permintaan asal atau fungsi respons asal, kebijakan cache atau kebijakan permintaan asal harus disetel ke semua untuk string kueri.

  • Sebuah fungsi dapat membuat atau memperbarui string kueri untuk permintaan penampil dan peristiwa permintaan asal (peristiwa permintaan asal hanya ada di Lambda@Edge).

  • Sebuah fungsi dapat membaca string kueri, tetapi tidak dapat membuat atau memperbarui satu, untuk respons asal dan peristiwa respons penampil (peristiwa respons asal hanya ada di Lambda@Edge).

  • Jika fungsi membuat atau memperbarui string kueri, pembatasan berikut berlaku:

    • String kueri tidak dapat menyertakan spasi, karakter kontrol, atau pengenal fragmen ()#.

    • Ukuran total URI, termasuk string kueri, harus kurang dari 8.192 karakter.

    • Kami sarankan Anda menggunakan persen pengkodean untuk URI dan string kueri. Untuk informasi selengkapnya, lihat URI, string kueri, dan pengkodean header.

URI

Jika sebuah fungsi mengubah URI untuk permintaan, hal itu tidak mengubah perilaku cache untuk permintaan tersebut atau asal permintaan tersebut yang diteruskan.

Ukuran total URI, termasuk string kueri, harus kurang dari 8.192 karakter.

URI, string kueri, dan pengkodean header

Nilai untuk URI, string kueri, dan header yang diteruskan ke fungsi edge dikodekan UTF-8. Fungsi Anda harus menggunakan pengkodean UTF-8 untuk URI, string kueri, dan nilai header yang dikembalikan. Pengkodean persen kompatibel dengan pengkodean UTF-8.

Daftar berikut menjelaskan cara CloudFront menangani pengkodean untuk URI, string kueri, dan header:

  • Ketika nilai dalam permintaan dikodekan UTF-8, teruskan nilai CloudFront ke fungsi Anda tanpa mengubahnya.

  • Ketika nilai dalam permintaan dikodekan ISO-8859-1, CloudFront konversi nilai ke UTF-8 encoding sebelum meneruskannya ke fungsi Anda.

  • Ketika nilai dalam permintaan dikodekan menggunakan beberapa pengkodean karakter lain, CloudFront asumsikan bahwa mereka dikodekan ISO-8859-1 dan mencoba mengonversi dari ISO-8859-1 ke UTF-8.

    penting

    Karakter yang dikonversi mungkin merupakan interpretasi yang tidak akurat dari nilai-nilai dalam permintaan asli. Hal ini dapat menyebabkan fungsi atau asal Anda memberi hasil yang tidak diinginkan.

Nilai untuk URI, string kueri, dan header yang CloudFront diteruskan ke asal Anda bergantung pada apakah suatu fungsi mengubah nilai:

  • Jika fungsi tidak mengubah URI, string kueri, atau header, CloudFront teruskan nilai yang diterimanya dalam permintaan ke asal Anda.

  • Jika fungsi mengubah URI, string kueri, atau header, CloudFront teruskan nilai yang dikodekan UTF-8.

Streaming Microsoft yang Lancar

Anda tidak dapat menggunakan fungsi edge dengan CloudFront distribusi yang Anda gunakan untuk streaming file media yang telah Anda transkode ke dalam format Microsoft Smooth Streaming.

Penandaan

Anda tidak dapat menambahkan tag ke fungsi tepi. Untuk informasi selengkapnya tentang penandaan CloudFront, lihatTandai distribusi.