JavaScript fitur runtime 1.0 untuk Fungsi CloudFront - Amazon CloudFront

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

JavaScript fitur runtime 1.0 untuk Fungsi CloudFront

Lingkungan JavaScript runtime CloudFront Functions sesuai dengan ECMAScript (ES) versi 5.1 dan juga mendukung beberapa fitur ES versi 6 hingga 9. Lingkungan ini juga menyediakan beberapa metode standar yang bukan bagian dari spesifikasi ES.

Topik berikut mencantumkan semua fitur bahasa yang didukung.

Fitur inti

Mendukung fitur inti ES berikut.

Jenis

Mendukung semua jenis ES 5.1. Ini termasuk nilai, angka, string, objek, susunan, fungsi, konstruktor fungsi, dan ekspresi reguler Boolean.

Operator

Mendukung Semua operator ES 5.1 didukung.

Mendukung operator eksponensial ES 7 (**).

Pernyataan
catatan

Tidak mendukung pernyataan const dan let.

Mendukung pernyataan ES 5.1 berikut:

  • break

  • catch

  • continue

  • do-while

  • else

  • finally

  • for

  • for-in

  • if

  • return

  • switch

  • throw

  • try

  • var

  • while

  • Pernyataan berlabel

Literal

Literal template ES 6 didukung: string multiline, interpolasi ekspresi, dan templat bersarang.

Fungsi

Mendukung semua fitur fungsi ES 5.1.

Mendukung fungsi panah ES 6 didukung, dan sintaks parameter ES 6 sintaks parameter istirahat.

Unicode

Sumber teks dan literal string dapat berisi karakter Unicode yang dikodekan. Juga mendukung unicode code point escape sequence enam karakter (misalnya, \uXXXX).

Mode ketat

Fungsi beroperasi dalam mode ketat secara default, sehingga Anda tidak perlu menambahkan pernyataan use strict dalam kode fungsi Anda. Ini tidak dapat diubah.

Objek primitif

Mendukung objek primitif ES berikut.

Objek

Mendukung metode ES 5.1 berikut pada objek:

  • create (tanpa daftar properti)

  • defineProperties

  • defineProperty

  • freeze

  • getOwnPropertyDescriptor

  • getOwnPropertyNames

  • getPrototypeOf

  • hasOwnProperty

  • isExtensible

  • isFrozen

  • prototype.isPrototypeOf

  • isSealed

  • keys

  • preventExtensions

  • prototype.propertyIsEnumerable

  • seal

  • prototype.toString

  • prototype.valueOf

Mendukung metode ES 6 berikut pada objek:

  • assign

  • is

  • prototype.setPrototypeOf

Mendukung metode ES 8 berikut pada objek:

  • entries

  • values

String

Mendukung metode ES 5.1 berikut pada string:

  • fromCharCode

  • prototype.charAt

  • prototype.concat

  • prototype.indexOf

  • prototype.lastIndexOf

  • prototype.match

  • prototype.replace

  • prototype.search

  • prototype.slice

  • prototype.split

  • prototype.substr

  • prototype.substring

  • prototype.toLowerCase

  • prototype.trim

  • prototype.toUpperCase

Mendukung metode ES 6 berikut pada string:

  • fromCodePoint

  • prototype.codePointAt

  • prototype.endsWith

  • prototype.includes

  • prototype.repeat

  • prototype.startsWith

Mendukung metode ES 8 berikut pada string:

  • prototype.padStart

  • prototype.padEnd

Mendukung metode ES 9 berikut pada string:

  • prototype.trimStart

  • prototype.trimEnd

Mendukung metode tidak standar berikut pada string:

  • prototype.bytesFrom(array | string, encoding)

    Menciptakan string byte dari susunan oktet atau string yang dikodekan. Opsi pengkodean string adalah hex, base64, dan base64url.

  • prototype.fromBytes(start[, end])

    Menciptakan string Unicode dari string byte di mana setiap byte diganti dengan titik kode Unicode yang sesuai.

  • prototype.fromUTF8(start[, end])

    Menciptakan string Unicode dari UTF-8 string byte yang dikodekan. Jika pengkodean salah, akan muncul null.

  • prototype.toBytes(start[, end])

    Menciptakan string byte dari string Unicode. Semua karakter harus dalam rentang [0,255]. Jika tidak, akan muncul null.

  • prototype.toUTF8(start[, end])

    Menciptakan UTF-8 string byte yang dikodekan dari string Unicode.

Nomor

Mendukung semua metode ES 5.1 pada nomor.

Mendukung metode ES 6 berikut pada nomor:

  • isFinite

  • isInteger

  • isNaN

  • isSafeInteger

  • parseFloat

  • parseInt

  • prototype.toExponential

  • prototype.toFixed

  • prototype.toPrecision

  • EPSILON

  • MAX_SAFE_INTEGER

  • MAX_VALUE

  • MIN_SAFE_INTEGER

  • MIN_VALUE

  • NEGATIVE_INFINITY

  • NaN

  • POSITIVE_INFINITY

Objek bawaan

Mendukung objek ES bawaan berikut.

Matematika

Mendukung semua metode matematika ES 5.1.

catatan

Di lingkungan runtime CloudFront Functions, Math.random() implementasi menggunakan arc4random OpenBSD yang diunggulkan dengan stempel waktu saat fungsi berjalan.

Mendukung metode matematika ES 6 berikut:

  • acosh

  • asinh

  • atanh

  • cbrt

  • clz32

  • cosh

  • expm1

  • fround

  • hypot

  • imul

  • log10

  • log1p

  • log2

  • sign

  • sinh

  • tanh

  • trunc

  • E

  • LN10

  • LN2

  • LOG10E

  • LOG2E

  • PI

  • SQRT1_2

  • SQRT2

Tanggal

Mendukung semua fitur ES 5.1 Date.

catatan

Untuk alasan keamanan, Date selalu mengembalikan nilai yang sama—waktu mulai fungsi ini—saat menjalankan fungsi tunggal. Untuk informasi selengkapnya, lihat Fitur yang dibatasi.

Fungsi

Mendukung metode apply, bind, dan call.

Tidak mendukung konstruktor fungsi.

Ekspresi reguler

Mendukung semua fitur ekspresi reguler ES 5.1. Bahasa ekspresi reguler adalah kompatibel dengan Perl. Mendukung kelompok penangkap bernama ES 9.

JSON

Mendukung semua fitur JSON ES 5.1 JSON, termasuk parse dan stringify.

Susunan

Mendukung metode ES 5.1 berikut pada susunan:

  • isArray

  • prototype.concat

  • prototype.every

  • prototype.filter

  • prototype.forEach

  • prototype.indexOf

  • prototype.join

  • prototype.lastIndexOf

  • prototype.map

  • prototype.pop

  • prototype.push

  • prototype.reduce

  • prototype.reduceRight

  • prototype.reverse

  • prototype.shift

  • prototype.slice

  • prototype.some

  • prototype.sort

  • prototype.splice

  • prototype.unshift

Mendukung metode ES 6 berikut pada susunan:

  • of

  • prototype.copyWithin

  • prototype.fill

  • prototype.find

  • prototype.findIndex

Mendukung metode ES 7 berikut pada susunan:

  • prototype.includes

Susunan yang dijeniskan

Mendukung susunan yang diketik ES 6 berikut:

  • Int8Array

  • Uint8Array

  • Uint8ClampedArray

  • Int16Array

  • Uint16Array

  • Int32Array

  • Uint32Array

  • Float32Array

  • Float64Array

  • prototype.copyWithin

  • prototype.fill

  • prototype.join

  • prototype.set

  • prototype.slice

  • prototype.subarray

  • prototype.toString

ArrayBuffer

Mendukung metode pada ArrayBuffer berikut:

  • prototype.isView

  • prototype.slice

Janji

Mendukung metode janji berikut:

  • reject

  • resolve

  • prototype.catch

  • prototype.finally

  • prototype.then

Kripto

Modul kriptografi menyediakan hashing standar dan pembantu kode autentikasi pesan berbasis hash (HMAC). Anda dapat memuat modul menggunakan require('crypto'). Modul ini memperlihatkan metode berikut yang berperilaku persis seperti rekan-rekan Node.js mereka:

  • createHash(algorithm)

  • hash.update(data)

  • hash.digest([encoding])

  • createHmac(algorithm, secret key)

  • hmac.update(data)

  • hmac.digest([encoding])

Untuk informasi lebih lanjut, lihat Kripto (hash dan HMAC) di bagian modul bawaan.

Konsol

Ini adalah objek pembantu untuk debugging. Ini hanya mendukung metode log(), untuk merekam pesan log.

catatan

CloudFront Fungsi tidak mendukung sintaks koma, seperti. console.log('a', 'b') Sebagai gantinya, gunakan console.log('a' + ' ' + 'b') formatnya.

Jenis kesalahan

Mendukung objek kesalahan berikut:

  • Error

  • EvalError

  • InternalError

  • MemoryError

  • RangeError

  • ReferenceError

  • SyntaxError

  • TypeError

  • URIError

Global

Mendukung objek globalThis.

Mendukung fungsi global ES 5.1 berikut:

  • decodeURI

  • decodeURIComponent

  • encodeURI

  • encodeURIComponent

  • isFinite

  • isNaN

  • parseFloat

  • parseInt

Mendukung konstanta global berikut:

  • NaN

  • Infinity

  • undefined

Modul bawaan

Mendukung modul bawaan berikut.

Kripto (hash dan HMAC)

Modul kriptografi (crypto) menyediakan hashing standar dan pembantu kode autentikasi pesan berbasis hash (HMAC). Anda dapat memuat modul menggunakan require('crypto'). Modul ini menyediakan metode berikut yang berperilaku persis seperti rekan-rekan Node.js mereka.

Metode hashing

crypto.createHash(algorithm)

Menciptakan dan mengembalikan objek hash yang dapat digunakan untuk menghasilkan hash digests menggunakan algoritme yang diberikan: md5, sha1, atau sha256.

hash.update(data)

Update konten hash dengan data yang tersedia.

hash.digest([encoding])

Menghitung digest dari semua data yang diteruskan menggunakan hash.update(). Pengkodean dapat berupa hex, base64, atau base64url.

Metode HMAC

crypto.createHmac(algorithm, secret key)

Menciptakan dan mengembalikan objek HMAC yang menggunakan algorithm dan secret key yang tersedia. Algoritma dapat berupa md5, sha1, atau sha256.

hmac.update(data)

Memperbarui konten HMAC dengan data yang tersedia.

hmac.digest([encoding])

Menghitung digest dari semua data yang diteruskan menggunakan hmac.update(). Pengkodean dapat berupa hex, base64, atau base64url.

String kueri

catatan

Objek acara CloudFront Functions secara otomatis mem-parsing string kueri URL untuk Anda. Itu berarti bahwa dalam kebanyakan kasus Anda tidak perlu menggunakan modul ini.

Modul string kueri (querystring) menyediakan metode untuk mengurai dan memformat string kueri URL. Anda dapat memuat modul menggunakan require('querystring'). Modul ini menyediakan metode berikut.

querystring.escape(string)

Mengkodekan URL string yang tersedia, mengembalikan string kueri yang lolos. Metode ini digunakan oleh querystring.stringify() dan tidak boleh digunakan secara langsung.

querystring.parse(string[, separator[, equal[, options]]])

Mengurai string kueri (string) dan mengembalikan objek.

Parameter separator adalah substring untuk membatasi pasangan kunci dan nilai dalam string kueri. Secara default, itu adalah &.

Parameter equal adalah substring untuk membatasi kunci dan nilai dalam string kueri. Secara default, itu adalah =.

Parameter options adalah objek dengan kunci berikut:

decodeURIComponent function

Sebuah fungsi untuk memecahkan kode karakter persentase dikodekan dalam string kueri. Secara default, itu adalah querystring.unescape().

maxKeys number

Jumlah kunci maksimum untuk diurai Secara default, itu adalah 1000. Gunakan nilai 0 untuk menghapus pembatasan untuk menghitung kunci.

Secara default, karakter persentase dikodekan dalam string kueri diasumsikan menggunakan pengkodean UTF-8. Urutan UTF-8 tidak valid diganti dengan karakter pengganti U+FFFD.

Misalnya, untuk string kueri berikut:

'name=value&abc=xyz&abc=123'

Nilai querystring.parse() yang dikembalikan adalah:

{ name: 'value', abc: ['xyz', '123'] }

querystring.decode() adalah alias untuk querystring.parse().

querystring.stringify(object[, separator[, equal[, options]]])

Menyerialisasi object dan mengembalikan string kueri.

Parameter separator adalah substring untuk membatasi pasangan kunci dan nilai dalam string kueri. Secara default, itu adalah &.

Parameter equal adalah substring untuk membatasi kunci dan nilai dalam string kueri. Secara default, itu adalah =.

Parameter options adalah objek dengan kunci berikut:

encodeURIComponent function

Fungsi yang digunakan untuk mengonversi karakter URL yang tidak aman untuk pengkodean persentase dalam string kueri. Secara default, itu adalah querystring.escape().

Secara default, karakter yang memerlukan pengkodean persentase dalam string kueri dikodekan sebagai UTF-8. Untuk menggunakan pengkodean yang berbeda, tentukan opsi encodeURIComponent.

Misalnya, gunakan kode berikut:

querystring.stringify({ name: 'value', abc: ['xyz', '123'], anotherName: '' });

Nilai yang dikembalikan adalah:

'name=value&abc=xyz&abc=123&anotherName='

querystring.encode() adalah alias untuk querystring.stringify().

querystring.unescape(string)

Mendekode karakter yang dikodekan persentase URL dalam string yang tersedia, mengembalikan string kueri yang tidak lolos. Metode ini digunakan oleh querystring.parse() dan tidak boleh digunakan secara langsung.

Fitur yang dibatasi

Fitur JavaScript bahasa berikut tidak didukung atau dibatasi karena masalah keamanan.

Evaluasi kode dinamis

Evaluasi kode dinamis tidak didukung. Konstruktor eval() dan Function mengalami kesalahan jika dicoba. Misalnya, const sum = new Function('a', 'b', 'return a + b') mengalami kesalahan.

Timer

Fungsi setTimeout(), setImmediate(), dan clearTimeout() tidak didukung. Tidak ada ketentuan untuk menunda atau menghasilkan dalam fungsi jalankan. Fungsi Anda harus dijalankan secara serentak sampai selesai.

Tanggal dan stempel waktu

Untuk alasan keamanan, tidak ada akses ke timer beresolusi tinggi. Semua metode Date untuk meminta waktu saat ini selalu mengembalikan nilai yang sama saat menjalankan fungsi tunggal. Stempel waktu yang dikembalikan adalah waktu fungsi mulai berjalan. Akibatnya, Anda tidak dapat mengukur waktu berlalu dalam fungsi Anda.

Akses sistem file

Tidak ada akses sistem file. Misalnya, tidak ada modul fs untuk akses sistem file seperti yang ada di Node.js.

Akses proses

Tidak ada akses proses. Misalnya, tidak ada objek process global untuk memproses akses informasi seperti yang ada di Node.js.

Variabel-variabel lingkungan

Tidak ada akses ke variabel lingkungan.

Sebagai gantinya, Anda dapat menggunakan CloudFront KeyValueStore untuk membuat datastore terpusat dari pasangan kunci-nilai untuk Fungsi Anda. CloudFront CloudFront KeyValueStore memungkinkan pembaruan dinamis ke data konfigurasi Anda tanpa perlu menerapkan perubahan kode. Anda harus menggunakan JavaScript runtime 2.0 untuk menggunakannya CloudFront KeyValueStore. Untuk informasi selengkapnya, lihat Amazon CloudFront KeyValueStore.

Akses jaringan

Tidak ada dukungan untuk panggilan jaringan. Misalnya, XHR, HTTP (S), dan soket tidak didukung.