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])

    Membuat string Unicode dari string byte UTF -8 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])

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

Jumlah

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 Open BSD arc4random seeded 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

Semua JSON fitur ES 5.1 didukung, termasuk parse danstringify.

Array

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 kode otentikasi pesan berbasis hash () pembantu. 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 Crypto (hash danHMAC) 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.

Crypto (hash danHMAC)

Modul kriptografi (crypto) menyediakan hashing standar dan kode otentikasi pesan berbasis hash () pembantu. 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.

HMACmetode

crypto.createHmac(algorithm, secret key)

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

hmac.update(data)

Memperbarui HMAC konten dengan yang diberikandata.

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 URL kueri untuk Anda. Itu berarti bahwa dalam kebanyakan kasus Anda tidak perlu menggunakan modul ini.

Query string module (querystring) menyediakan metode untuk parsing dan format URL query string. Anda dapat memuat modul menggunakan require('querystring'). Modul ini menyediakan metode berikut.

querystring.escape(string)

URL-mengkodekan yang diberikanstring, 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 yang dikodekan persen dalam string kueri diasumsikan menggunakan pengkodean -8. UTF 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 -unsafe ke encoding persen dalam string kueri. Secara default, itu adalah querystring.escape().

Secara default, karakter yang memerlukan pengkodean persen dalam string kueri dikodekan sebagai -8. UTF 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 URL dikodekan persen dalam yang diberikan, mengembalikan string kueri yang tidak string terlolos. 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.