JavaScript Runtime 1.0-Funktionen für CloudFront Funktionen - Amazon CloudFront

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

JavaScript Runtime 1.0-Funktionen für CloudFront Funktionen

Die JavaScript Runtime-Umgebung von CloudFront Functions ist kompatibel mit ECMAScript(ES) Version 5.1 und unterstützt auch einige Funktionen der ES-Versionen 6 bis 9. Sie enthält auch einige nicht standardmäßige Methoden, die nicht Teil der ES-Spezifikationen sind.

In den folgenden Themen werden alle unterstützten Sprachfunktionen aufgeführt.

Kernfunktionen

Die folgenden Kern-Features von ES werden unterstützt.

Typen

Alle ES 5.1-Typen werden unterstützt. Dies umfasst boolesche Werte, Zahlen, Zeichenfolgen, Objekte, Arrays, Funktionen, Funktionskonstruktoren und reguläre Ausdrücke.

Operatoren

Alle ES 5.1-Operatoren werden unterstützt.

Der Potenzierungsoperator (**) wird unterstützt.

Anweisungen
Anmerkung

const- und let-Anweisungen werden nicht unterstützt.

Die folgenden ES 5.1-Anweisungen werden unterstützt:

  • break

  • catch

  • continue

  • do-while

  • else

  • finally

  • for

  • for-in

  • if

  • return

  • switch

  • throw

  • try

  • var

  • while

  • Bezeichnete Anweisungen

Literale

ES 6-Vorlagenliterale werden unterstützt: mehrzeilige Zeichenfolgen, Interpolation von Ausdrücken und Verschachtelungsvorlagen.

Funktionen

Alle Features von ES 5.1 werden unterstützt.

ES 6-Pfeilfunktionen werden unterstützt, und die ES 6 Rest-Parametersyntax wird unterstützt.

Unicode

Quelltext und Zeichenfolgenliterale können Unicode-codierte Zeichen enthalten. Unicode-Code-Punkt-Escape-Sequenzen von sechs Zeichen (z. B. \uXXXX) werden ebenfalls unterstützt.

Strikter Modus

Funktionen arbeiten standardmäßig im strikten Modus, sodass Sie Ihrem Funktionscode keine use strict-Anweisung hinzufügen müssen. Dies können nicht geändert werden.

Primitive Objekte

Die folgenden primitiven Objekte von ES werden unterstützt.

Objekt

Die folgenden ES 5.1-Methoden für Objekte werden unterstützt:

  • create (ohne Eigenschaftenliste)

  • defineProperties

  • defineProperty

  • freeze

  • getOwnPropertyDescriptor

  • getOwnPropertyNames

  • getPrototypeOf

  • hasOwnProperty

  • isExtensible

  • isFrozen

  • prototype.isPrototypeOf

  • isSealed

  • keys

  • preventExtensions

  • prototype.propertyIsEnumerable

  • seal

  • prototype.toString

  • prototype.valueOf

Die folgenden ES 6-Methoden für Objekte werden unterstützt:

  • assign

  • is

  • prototype.setPrototypeOf

Die folgenden ES 8-Methoden für Objekte werden unterstützt:

  • entries

  • values

Zeichenfolge

Die folgenden ES 5.1-Methoden für Zeichenfolgen werden unterstützt:

  • 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

Die folgenden ES 6-Methoden für Zeichenfolgen werden unterstützt:

  • fromCodePoint

  • prototype.codePointAt

  • prototype.endsWith

  • prototype.includes

  • prototype.repeat

  • prototype.startsWith

Die folgenden ES 8-Methoden für Zeichenfolgen werden unterstützt:

  • prototype.padStart

  • prototype.padEnd

Die folgenden ES 9-Methoden für Zeichenfolgen werden unterstützt:

  • prototype.trimStart

  • prototype.trimEnd

Die folgenden nicht standardmäßigen Methoden für Zeichenfolgen werden unterstützt:

  • prototype.bytesFrom(array | string, encoding)

    Erstellt eine Bytezeichenfolge aus einem Array von Oktetten oder einer codierten Zeichenfolge. Die Optionen für die Zeichenfolgencodierung sind hex, base64 und base64url.

  • prototype.fromBytes(start[, end])

    Erstellt eine Unicode-Zeichenfolge aus einer Bytezeichenfolge, in der jedes Byte durch den entsprechenden Unicode-Codepunkt ersetzt wird.

  • prototype.fromUTF8(start[, end])

    Erzeugt eine Unicode-Zeichenfolge aus einer UTF -8-Byte-Zeichenfolge. Wenn die Codierung falsch ist, wird null zurückgegeben.

  • prototype.toBytes(start[, end])

    Erstellt eine Bytezeichenfolge aus einer Unicode-Zeichenfolge. Alle Zeichen müssen im Bereich von [0,255] liegen. Wenn nicht, wird null zurückgegeben.

  • prototype.toUTF8(start[, end])

    Erzeugt eine mit UTF -8 Byte kodierte Zeichenfolge aus einer Unicode-Zeichenfolge.

Nummer

Alle ES 5.1-Methoden für Zahlen werden unterstützt.

Die folgenden ES 6-Methoden für Zahlen werden unterstützt:

  • 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

Integrierte Objekte

Die folgenden integrierten Objekte von ES werden unterstützt.

Math-Knoten

Alle Mathematikmethoden von ES 5.1 werden unterstützt.

Anmerkung

In der CloudFront Functions-Laufzeitumgebung verwendet die Math.random() Implementierung Open BSDarc4random, das mit dem Zeitstempel versehen ist, wann die Funktion ausgeführt wird.

Die folgenden ES 6-Mathematikmethoden werden unterstützt:

  • 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

Datum

Alle Date-Features von ES 5.1 werden unterstützt.

Anmerkung

Aus Sicherheitsgründen gibt Date immer den gleichen Wert – die Startzeit der Funktion – während der Lebensdauer einer einzelnen Funktionsausführung zurück. Weitere Informationen finden Sie unter Eingeschränkte Funktionen.

Funktion

Die Methoden apply, bind und call werden unterstützt.

Funktionskonstruktoren werden nicht unterstützt.

Reguläre Ausdrücke

Alle Features für reguläre Ausdrücke von ES 5.1 werden unterstützt. Die Sprache für reguläre Ausdrücke ist Perl-kompatibel. ES 9 benannte Aufnahmegruppen werden unterstützt.

JSON

Alle ES JSON 5.1-Funktionen werden unterstützt, einschließlich parse und. stringify

Array

Die folgenden ES 5.1-Methoden für Arrays werden unterstützt:

  • 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

Die folgenden ES 6-Methoden für Arrays werden unterstützt:

  • of

  • prototype.copyWithin

  • prototype.fill

  • prototype.find

  • prototype.findIndex

Die folgenden ES 7-Methoden für Arrays werden unterstützt:

  • prototype.includes

Eingegebene Arrays

Die folgenden von ES 6 eingegebenen Arrays werden unterstützt:

  • Int8Array

  • Uint8Array

  • Uint8ClampedArray

  • Int16Array

  • Uint16Array

  • Int32Array

  • Uint32Array

  • Float32Array

  • Float64Array

  • prototype.copyWithin

  • prototype.fill

  • prototype.join

  • prototype.set

  • prototype.slice

  • prototype.subarray

  • prototype.toString

ArrayBuffer

Die folgenden Methoden für ArrayBuffer werden unterstützt:

  • prototype.isView

  • prototype.slice

Promise

Die folgenden Methoden für Versprechen werden unterstützt:

  • reject

  • resolve

  • prototype.catch

  • prototype.finally

  • prototype.then

Crypto

Das kryptografische Modul bietet Standardwerkzeuge für Hashing und Hash-basierte Nachrichtenauthentifizierung (HMACCode). Sie können das Modul mit require('crypto') laden. Das Modul stellt die folgenden Methoden bereit, die sich genau wie ihre Gegenstücke von Node.js verhalten:

  • createHash(algorithm)

  • hash.update(data)

  • hash.digest([encoding])

  • createHmac(algorithm, secret key)

  • hmac.update(data)

  • hmac.digest([encoding])

Weitere Informationen finden Sie unter Krypto (Hash undHMAC) im Abschnitt über integrierte Module.

Konsole

Dies ist ein Hilfsobjekt zum Debuggen. Es unterstützt nur die log()-Methode, um Protokollnachrichten aufzuzeichnen.

Anmerkung

CloudFront Functions unterstützt keine Kommasyntax, wie z. console.log('a', 'b') Verwenden Sie stattdessen das console.log('a' + ' ' + 'b') Format.

Fehlertypen

Die folgenden Fehlerobjekte werden unterstützt:

  • Error

  • EvalError

  • InternalError

  • MemoryError

  • RangeError

  • ReferenceError

  • SyntaxError

  • TypeError

  • URIError

Globale

Das globalThis-Objekt wird unterstützt.

Die folgenden globalen Funktionen von ES 5.1 werden unterstützt:

  • decodeURI

  • decodeURIComponent

  • encodeURI

  • encodeURIComponent

  • isFinite

  • isNaN

  • parseFloat

  • parseInt

Die folgenden globalen Konstanten werden unterstützt:

  • NaN

  • Infinity

  • undefined

Integrierten Module

Die folgenden integrierten Module werden unterstützt.

Krypto (Hash undHMAC)

Das kryptografische Modul (crypto) bietet Standardwerkzeuge für Hashing und Hash-basierten Nachrichtenauthentifizierungscode (HMAC). Sie können das Modul mit require('crypto') laden. Das Modul bietet die folgenden Methoden, die sich genau wie ihre Gegenstücke von Node.js verhalten.

Hashing-Methoden

crypto.createHash(algorithm)

Erstellt und gibt ein Hash-Objekt zurück, mit dem Sie Hash-Digests mit dem angegebenen Algorithmus generieren können: md5, sha1 oder sha256.

hash.update(data)

Aktualisiert den Hash-Inhalt mit dem angegebenen data.

hash.digest([encoding])

Berechnet den Digest aller mit hash.update() übergebenen Daten. Die Codierung kann hex, base64 oder base64url sein.

HMACMethoden

crypto.createHmac(algorithm, secret key)

Erzeugt und gibt ein HMAC Objekt zurück, das das angegebene algorithm und verwendetsecret key. Der Algorithmus kann md5, sha1 oder sha256 sein.

hmac.update(data)

Aktualisiert den HMAC Inhalt mit dem angegebenendata.

hmac.digest([encoding])

Berechnet den Digest aller mit hmac.update() übergebenen Daten. Die Codierung kann hex, base64 oder base64url sein.

Abfragezeichenfolge

Anmerkung

Das CloudFront Functions-Ereignisobjekt analysiert automatisch URL Abfragezeichenfolgen für Sie. Das bedeutet, dass Sie dieses Modul in den meisten Fällen nicht verwenden müssen.

Das Abfragezeichenfolgenmodul (querystring) bietet Methoden zum Analysieren und Formatieren von URL Abfragezeichenfolgen. Sie können das Modul mit require('querystring') laden. Das Modul bietet die folgenden Methoden.

querystring.escape(string)

URL-kodiert die angegebene Zeichenfolge und gibt eine string maskierte Abfragezeichenfolge zurück. Die Methode wird von querystring.stringify() verwendet und sollte nicht direkt verwendet werden.

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

Analysiert eine Abfragezeichenfolge (string) und gibt ein Objekt zurück.

Der separator-Parameter ist eine Teilzeichenfolge zum Abgrenzen von Schlüssel- und Wertepaaren in der Abfragezeichenfolge. Standardmäßig ist dies &.

Der equal-Parameter ist eine Teilzeichenfolge zum Abgrenzen von Schlüsseln und Werten in der Abfragezeichenfolge. Standardmäßig ist dies =.

Der options-Parameter ist ein Objekt mit den folgenden Schlüsseln:

decodeURIComponent function

Eine Funktion zum Entschlüsseln von prozentkodierten Zeichen in der Abfragezeichenfolge. Standardmäßig ist dies querystring.unescape().

maxKeys number

Die maximale Anzahl der Schlüssel zum Parsen. Standardmäßig ist dies 1000. Verwenden Sie den Wert 0, um die Beschränkungen für das Zählen von Schlüsseln aufzuheben.

Standardmäßig wird davon ausgegangen, dass prozentkodierte Zeichen innerhalb der Abfragezeichenfolge die Kodierung -8 verwenden. UTF Ungültige UTF -8-Sequenzen werden durch das Ersatzzeichen ersetzt. U+FFFD

Zum Beispiel für die folgende Abfragezeichenfolge:

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

Der Rückgabewert von querystring.parse() ist:

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

querystring.decode() ist ein Alias für querystring.parse().

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

Serialisiert ein object und gibt eine Abfragezeichenfolge zurück.

Der separator-Parameter ist eine Teilzeichenfolge zum Abgrenzen von Schlüssel- und Wertepaaren in der Abfragezeichenfolge. Standardmäßig ist dies &.

Der equal-Parameter ist eine Teilzeichenfolge zum Abgrenzen von Schlüsseln und Werten in der Abfragezeichenfolge. Standardmäßig ist dies =.

Der options-Parameter ist ein Objekt mit den folgenden Schlüsseln:

encodeURIComponent function

Die Funktion, die für die Konvertierung von URL -unsicheren Zeichen in die Prozentkodierung in der Abfragezeichenfolge verwendet werden soll. Standardmäßig ist dies querystring.escape().

Standardmäßig werden Zeichen, die eine prozentuale Kodierung innerhalb der Abfragezeichenfolge erfordern, als -8 codiert. UTF Um eine andere Codierung zu verwenden, geben Sie die Option encodeURIComponent an.

Zum Beispiel für den folgenden Code:

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

Der Rückgabewert ist:

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

querystring.encode() ist ein Alias für querystring.stringify().

querystring.unescape(string)

Dekodiert URL prozentual kodierte Zeichen in der angegebenen Zeichenfolge und gibt eine Abfragezeichenfolge ohne Escape-Code zurück. string Diese Methode wird von querystring.parse() verwendet und sollte nicht direkt verwendet werden.

Eingeschränkte Funktionen

Die folgenden JavaScript Sprachfunktionen werden entweder nicht unterstützt oder sind aus Sicherheitsgründen eingeschränkt.

Dynamische Codeauswertung

Die dynamische Codeauswertung wird nicht unterstützt. Sowohl eval()- als auch Function-Konstruktoren geben einen Fehler aus, wenn sie versucht werden. Zum Beispiel gibt const sum = new Function('a', 'b', 'return a + b') einen Fehler aus.

Timer

Die Funktionen setTimeout(), setImmediate() und clearTimeout() werden nicht unterstützt. Es gibt keine Bestimmung, innerhalb einer Funktionsausführung zu verschieben oder zu ergeben. Ihre Funktion muss synchron bis zum Abschluss ausgeführt werden.

Datum und Zeitstempel

Aus Sicherheitsgründen besteht kein Zugang zu hochauflösenden Timern. Alle Date-Methoden zum Abfragen der aktuellen Uhrzeit geben während der Lebensdauer einer einzelnen Funktionsausführung immer den gleichen Wert zurück. Der zurückgegebene Zeitstempel ist die Zeit, zu der die Funktion gestartet wurde. Folglich können Sie die verstrichene Zeit in Ihrer Funktion nicht messen.

Zugriff auf das Dateisystem

Es gibt keinen Zugriff auf das Dateisystem. Zum Beispiel gibt es kein fs-Modul für den Dateisystemzugriff wie in Node.js.

Zugriff verarbeiten

Es gibt keinen Prozesszugriff. Beispielsweise gibt es kein process globales Objekt für die Verarbeitung von Informationszugriffen wie in Node.js.

Umgebungsvariablen

Es gibt keinen Zugriff auf Umgebungsvariablen.

Stattdessen können Sie verwenden, CloudFront KeyValueStore um einen zentralen Datenspeicher mit Schlüssel-Wert-Paaren für Ihre Funktionen zu erstellen. CloudFront CloudFront KeyValueStore ermöglicht dynamische Aktualisierungen Ihrer Konfigurationsdaten, ohne dass Codeänderungen vorgenommen werden müssen. Sie müssen JavaScript Runtime 2.0 verwenden, um es zu verwenden CloudFront KeyValueStore. Weitere Informationen finden Sie unter Amazon CloudFront KeyValueStore.

Netzwerkzugriff

Es gibt keine Unterstützung für Netzwerkaufrufe. Beispielsweise XHR werden HTTP (S) und Socket nicht unterstützt.