Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
JavaScript Funzionalità di runtime 1.0 per CloudFront Functions
L'ambiente JavaScript di runtime di CloudFront Functions è conforme alla versione 5.1 ECMAScript (ES)
Negli argomenti seguenti sono elencate tutte le funzionalità linguistiche supportate.
Argomenti
Caratteristiche principali
Sono supportate le seguenti caratteristiche principali di ES.
- Tipi
-
Sono supportati tutti i tipi ES 5.1. Tra questi vi sono valori booleani, numeri, stringhe, oggetti, matrici, funzioni, costruttori di funzioni ed espressioni regolari.
- Operatori
-
Sono supportati tutti gli operatori ES 5.1.
È supportato l'operatore esponenziale ES 7 (
**
). - Dichiarazioni
-
Nota
Le istruzioni
const
elet
non sono supportate.Sono supportate le seguenti istruzioni ES 5.1:
-
break
-
catch
-
continue
-
do-while
-
else
-
finally
-
for
-
for-in
-
if
-
return
-
switch
-
throw
-
try
-
var
-
while
-
Istruzioni etichettate
-
- Valori letterali
-
Sono supportati i valori letterali modello ES 6: stringhe multilinea, interpolazione di espressioni e modelli di nidificazione.
- Funzioni
-
Sono supportate tutte le funzioni ES 5.1.
Sono supportate le funzioni freccia ES 6 ed è supportata la sintassi del parametro rest ES 6.
- Unicode
-
Il testo di origine e i valori letterali stringa possono contenere caratteri codificati in Unicode. Sono supportate anche sequenze di escape dei punti di codice Unicode di sei caratteri (ad esempio,
\uXXXX
). - Modalità rigorosa
-
Le funzioni funzionano in modalità rigorosa per impostazione predefinita, quindi non è necessario aggiungere una istruzione
use strict
nel codice funzione. Non possono essere modificate.
Oggetti primitivi
Sono supportati i seguenti oggetti primitivi di ES.
- Oggetto
-
Sono supportati i seguenti metodi ES 5.1 sugli oggetti:
-
create
(senza elenco delle proprietà) -
defineProperties
-
defineProperty
-
freeze
-
getOwnPropertyDescriptor
-
getOwnPropertyNames
-
getPrototypeOf
-
hasOwnProperty
-
isExtensible
-
isFrozen
-
prototype.isPrototypeOf
-
isSealed
-
keys
-
preventExtensions
-
prototype.propertyIsEnumerable
-
seal
-
prototype.toString
-
prototype.valueOf
Sono supportati i seguenti metodi ES 6 sugli oggetti:
-
assign
-
is
-
prototype.setPrototypeOf
Sono supportati i seguenti metodi ES 8 sugli oggetti:
-
entries
-
values
-
- Stringa
-
Sono supportati i seguenti metodi ES 5.1 sulle stringhe:
-
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
Sono supportati i seguenti metodi ES 6 sulle stringhe:
-
fromCodePoint
-
prototype.codePointAt
-
prototype.endsWith
-
prototype.includes
-
prototype.repeat
-
prototype.startsWith
Sono supportati i seguenti metodi ES 8 sulle stringhe:
-
prototype.padStart
-
prototype.padEnd
Sono supportati i seguenti metodi ES 9 sulle stringhe:
-
prototype.trimStart
-
prototype.trimEnd
Sono supportati i seguenti metodi non standard sulle stringhe:
-
prototype.bytesFrom(array | string, encoding)
Crea una stringa di byte da un array di ottetti o da una stringa codificata. Le opzioni di codifica delle stringhe sono
hex
,base64
ebase64url
. -
prototype.fromBytes(start[, end])
Crea una stringa Unicode da una stringa di byte in cui ogni byte viene sostituito con il corrispondente punto di codice Unicode.
-
prototype.fromUTF8(start[, end])
Crea una stringa Unicode da una stringa di byte con codifica UTF -8. Se la codifica non è corretta, viene restituito
null
. -
prototype.toBytes(start[, end])
Crea una stringa di byte da una stringa Unicode. Tutti i caratteri devono essere compresi nell'intervallo [0,255]. In caso contrario, restituisce
null
. -
prototype.toUTF8(start[, end])
Crea una stringa di byte codificata a UTF -8 da una stringa Unicode.
-
- Numero
-
Sono supportati tutti i metodi ES 5.1 sui numeri.
Sono supportati i seguenti metodi ES 6 sui numeri:
-
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
-
Oggetti incorporati
Sono supportati i seguenti oggetti incorporati di ES.
- Math
-
Sono supportati tutti i metodi matematici ES 5.1.
Nota
Nell'ambiente di runtime di CloudFront Functions, l'
Math.random()
implementazione utilizza Open BSDarc4random
seeded con il timestamp di quando la funzione viene eseguita.Sono supportati i seguenti metodi matematici ES 6:
-
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
-
- Data
-
Sono supportate tutte le funzioni
Date
ES 5.1.Nota
Per motivi di sicurezza, restituisce
Date
sempre lo stesso valore, ovvero l'ora di inizio della funzione, durante la durata di una singola esecuzione di una funzione. Per ulteriori informazioni, consulta Funzionalità con restrizioni. - Funzione
-
Sono supportati i metodi
apply
,bind
ecall
.I costruttori di funzioni non sono supportati.
- Espressioni regolari
-
Sono supportate tutte le funzioni di espressione regolare ES 5.1. Il linguaggio delle espressioni regolari è compatibile con Perl. Sono supportati i gruppi di acquisizione denominati di ES 9.
- JSON
-
Sono supportate tutte le JSON funzionalità di ES 5.1, tra cui e.
parse
stringify
- Array
-
Sono supportati i seguenti metodi ES 5.1 sugli array:
-
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
Sono supportati i seguenti metodi ES 6 sugli array:
-
of
-
prototype.copyWithin
-
prototype.fill
-
prototype.find
-
prototype.findIndex
Sono supportati i seguenti metodi ES 7 sugli array:
-
prototype.includes
-
- Array tipizzati
-
Sono supportati i seguenti array tipizzati ES 6:
-
Int8Array
-
Uint8Array
-
Uint8ClampedArray
-
Int16Array
-
Uint16Array
-
Int32Array
-
Uint32Array
-
Float32Array
-
Float64Array
-
prototype.copyWithin
-
prototype.fill
-
prototype.join
-
prototype.set
-
prototype.slice
-
prototype.subarray
-
prototype.toString
-
- ArrayBuffer
-
Sono supportati i seguenti metodi su
ArrayBuffer
:-
prototype.isView
-
prototype.slice
-
- Promessa
-
Sono supportati i seguenti metodi sulle promesse:
-
reject
-
resolve
-
prototype.catch
-
prototype.finally
-
prototype.then
-
- Crittografia
-
Il modulo crittografico fornisce helper standard di hashing e codice di autenticazione dei messaggi (HMAC) basati su hash. È possibile caricare il modulo usando
require('crypto')
. Il modulo espone i seguenti metodi che si comportano esattamente come le loro controparti Node.js:-
createHash(algorithm)
-
hash.update(data)
-
hash.digest([encoding])
-
createHmac(algorithm, secret key)
-
hmac.update(data)
-
hmac.digest([encoding])
Per ulteriori informazioni, consulta Crypto (hash eHMAC) nella sezione dei moduli incorporati.
-
- Console
-
Questo è un oggetto helper per il debug. Supporta solo il metodo
log()
per registrare i messaggi di log.Nota
CloudFront Le funzioni non supportano la sintassi delle virgole, ad esempio.
console.log('a', 'b')
Utilizza invece ilconsole.log('a' + ' ' + 'b')
formato.
Tipi di errore
Sono supportati i seguenti oggetti di errore:
-
Error
-
EvalError
-
InternalError
-
MemoryError
-
RangeError
-
ReferenceError
-
SyntaxError
-
TypeError
-
URIError
Elementi globali
L'oggetto globalThis
è supportato.
Sono supportate le seguenti funzioni globali ES 5.1:
-
decodeURI
-
decodeURIComponent
-
encodeURI
-
encodeURIComponent
-
isFinite
-
isNaN
-
parseFloat
-
parseInt
Sono supportate le seguenti costanti globali:
-
NaN
-
Infinity
-
undefined
Moduli incorporati
Sono supportati i seguenti moduli incorporati:
Crypto (hash eHMAC)
Il modulo crittografico (crypto
) fornisce helper standard di hashing e codice di autenticazione dei messaggi basato su hash (). HMAC È possibile caricare il modulo usando require('crypto')
. Il modulo fornisce i seguenti metodi che si comportano esattamente come le controparti Node.js.
Metodi di hashing
crypto.createHash(algorithm)
-
Crea e restituisce un oggetto hash che è possibile utilizzare per generare digest hash utilizzando il dato algoritmo:
md5
,sha1
, osha256
. hash.update(data)
-
Aggiorna il contenuto hash con il dato
data
. hash.digest([encoding])
-
Calcola il digest di tutti i dati passati tramite
hash.update()
. La codifica può esserehex
,base64
obase64url
.
HMACmetodi
crypto.createHmac(algorithm, secret key)
-
Crea e restituisce un HMAC oggetto che utilizza il dato
algorithm
esecret key
. L'algoritmo può esseremd5
,sha1
osha256
. hmac.update(data)
-
Aggiorna il HMAC contenuto con quello dato
data
. hmac.digest([encoding])
-
Calcola il digest di tutti i dati passati tramite
hmac.update()
. La codifica può esserehex
,base64
obase64url
.
Stringa di query
Nota
L'oggetto evento CloudFront Functions analizza automaticamente le stringhe di URL query per voi. Ciò significa che nella maggior parte dei casi non è necessario utilizzare questo modulo.
Il modulo query string (querystring
) fornisce metodi per l'analisi e la formattazione URL delle stringhe di query. È possibile caricare il modulo usando require('querystring')
. Il modulo fornisce i metodi seguenti:
querystring.escape(string)
-
URL-codifica il dato
string
, restituendo una stringa di query con escape. Il metodo viene utilizzato daquerystring.stringify()
e non deve essere utilizzato direttamente. querystring.parse(string[, separator[, equal[, options]]])
-
Analizza una stringa di query (
string
) e restituisce un oggetto.Il parametro
separator
è una sottostringa per delimitare coppie chiave e valore nella stringa di query. Per impostazione predefinita, tale valore è&
.Il parametro
equal
è una sottostringa per la delimitazione di chiavi e valori nella stringa di query. Per impostazione predefinita, tale valore è=
.Il parametro
options
è un oggetto con le seguenti chiavi:decodeURIComponent function
-
Un funzione per decodificare i caratteri codificati in percentuale nella stringa di query. Per impostazione predefinita, tale valore è
querystring.unescape()
. maxKeys number
-
Il numero massimo di chiavi da analizzare. Per impostazione predefinita, tale valore è
1000
. Utilizza un valore0
per rimuovere le limitazioni per il conteggio delle chiavi.
Per impostazione predefinita, si presume che i caratteri con codifica percentuale all'interno della stringa di query utilizzino la codifica -8. UTF Le sequenze UTF -8 non valide vengono sostituite con il carattere sostitutivo.
U+FFFD
Ad esempio, per la seguente stringa di query:
'name=value&abc=xyz&abc=123'
Il valore restituito di
querystring.parse()
è:{ name: 'value', abc: ['xyz', '123'] }
querystring.decode()
è un alias perquerystring.parse()
. querystring.stringify(object[, separator[, equal[, options]]])
-
Serializza un
object
e restituisce una stringa di query.Il parametro
separator
è una sottostringa per delimitare coppie chiave e valore nella stringa di query. Per impostazione predefinita, tale valore è&
.Il parametro
equal
è una sottostringa per la delimitazione di chiavi e valori nella stringa di query. Per impostazione predefinita, tale valore è=
.Il parametro
options
è un oggetto con le seguenti chiavi:encodeURIComponent function
-
La funzione da usare per convertire i caratteri URL -unsafe in percent-encoding nella stringa di query. Per impostazione predefinita, tale valore è
querystring.escape()
.
Per impostazione predefinita, i caratteri che richiedono la codifica percentuale all'interno della stringa di query sono codificati come -8. UTF Per utilizzare una codifica diversa, specifica l'opzione
encodeURIComponent
.Ad esempio, per il seguente codice:
querystring.stringify({ name: 'value', abc: ['xyz', '123'], anotherName: '' });
Il valore restituito è:
'name=value&abc=xyz&abc=123&anotherName='
querystring.encode()
è un alias perquerystring.stringify()
. querystring.unescape(string)
-
Decodifica i caratteri con URL codifica percentuale nel dato dato, restituendo una stringa di query senza escape.
string
Questo metodo viene utilizzato daquerystring.parse()
e non deve essere utilizzato direttamente.
Funzionalità con restrizioni
Le seguenti funzionalità JavaScript linguistiche non sono supportate o sono limitate a causa di problemi di sicurezza.
- Valutazione dinamica del codice
-
La valutazione dinamica del codice non è supportata. Entrambi i costruttori
eval()
eFunction
generano un errore se tentato. Ad esempio,const sum = new Function('a', 'b', 'return a + b')
genera un errore. - Timer
-
Le funzioni
setTimeout()
,setImmediate()
eclearTimeout()
non sono supportate. Non vi è alcuna disposizione per differire o cedere all'interno di un'esecuzione di funzione. La funzione deve essere eseguita in modo sincrono fino al completamento. - Data e timestamp
-
Per motivi di sicurezza, non è possibile accedere ai timer ad alta risoluzione. Tutti i metodi
Date
per interrogare l'ora corrente restituiscono sempre lo stesso valore durante la durata di una singola esecuzione di funzione. Il timestamp restituito è il momento in cui la funzione ha iniziato l'esecuzione. Di conseguenza, non è possibile misurare il tempo trascorso nella vostra funzione. - Accesso al file system
-
Nessun accesso al file system. Ad esempio, non esiste un modulo
fs
per l'accesso al file system come invece è presente in Node.js. - Accesso ai processi
-
Non è disponibile alcun accesso al processo. Ad esempio, non esiste un oggetto
process
globale per l'elaborazione dell'accesso alle informazioni come in Node.js. - Variabili di ambiente
-
Non è possibile accedere alle variabili di ambiente.
Puoi invece utilizzarlo CloudFront KeyValueStore per creare un datastore centralizzato di coppie chiave-valore per le tue funzioni. CloudFront CloudFront KeyValueStore consente aggiornamenti dinamici ai dati di configurazione senza dover implementare modifiche al codice. È necessario utilizzare JavaScript runtime 2.0 per utilizzare. CloudFront KeyValueStore Per ulteriori informazioni, consulta Amazon CloudFront KeyValueStore.
- Accesso alla rete
-
Non è disponibile alcun supporto per le chiamate di rete. Ad esempioXHR, HTTP (S) e socket non sono supportati.