CloudFront 함수 JavaScript 런타임 환경은 ECMAScript(ES) 버전 5.1
다음 항목에는 지원되는 모든 언어 기능이 나열되어 있습니다.
핵심 기능
ES의 다음과 같은 핵심 기능이 지원됩니다.
- 유형
-
모든 ES 5.1 유형이 지원됩니다. 여기에는 부울 값, 숫자, 문자열, 객체, 배열, 함수, 함수 생성자 및 정규 표현식이 포함됩니다.
- 연산자
-
모든 ES 5.1 연산자가 지원됩니다.
ES 7 거듭제곱 연산자(
**
)가 지원됩니다. - Statement
-
참고
const
및let
문은 지원되지 않습니다.다음 ES 5.1 문이 지원됩니다.
-
break
-
catch
-
continue
-
do-while
-
else
-
finally
-
for
-
for-in
-
if
-
return
-
switch
-
throw
-
try
-
var
-
while
-
레이블이 지정된 명령문
-
- 리터럴
-
ES 6 템플릿 리터럴은 여러 줄 문자열, 표현식 보간 및 중첩 템플릿에 대해 지원됩니다..
- 함수
-
모든 ES 5.1 함수 기능이 지원됩니다.
ES 6 화살표 함수가 지원되며 ES 6 나머지 파라미터 구문이 지원됩니다.
- 유니코드
-
소스 텍스트 및 문자열 리터럴에는 유니코드로 인코딩된 문자가 포함될 수 있습니다. 6자의 유니코드 코드 포인트 이스케이프 시퀀스(예:
\uXXXX
)도 지원됩니다. - 엄격 모드
-
함수는 기본적으로 엄격 모드에서 작동하므로 함수 코드에
use strict
명령문을 추가할 필요가 없습니다. 이것은 변경할 수 없습니다.
기본 객체
ES의 다음과 같은 기본 객체가 지원됩니다.
- 객체
-
객체에 대해 다음과 같은 ES 5.1 메서드가 지원됩니다.
-
create
(속성 목록 제외) -
defineProperties
-
defineProperty
-
freeze
-
getOwnPropertyDescriptor
-
getOwnPropertyNames
-
getPrototypeOf
-
hasOwnProperty
-
isExtensible
-
isFrozen
-
prototype.isPrototypeOf
-
isSealed
-
keys
-
preventExtensions
-
prototype.propertyIsEnumerable
-
seal
-
prototype.toString
-
prototype.valueOf
객체에 대해 다음 ES 6 메서드가 지원됩니다.
-
assign
-
is
-
prototype.setPrototypeOf
객체에 대해 다음과 같은 ES 8 메서드가 지원됩니다.
-
entries
-
values
-
- 문자열
-
문자열에 대해 다음 ES 5.1 메서드가 지원됩니다.
-
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
문자열에 대해 다음 ES 6 메서드가 지원됩니다.
-
fromCodePoint
-
prototype.codePointAt
-
prototype.endsWith
-
prototype.includes
-
prototype.repeat
-
prototype.startsWith
문자열에 대해 다음 ES 8 메서드가 지원됩니다.
-
prototype.padStart
-
prototype.padEnd
문자열에 대해 다음 ES 9 메서드가 지원됩니다.
-
prototype.trimStart
-
prototype.trimEnd
문자열에 대해 다음과 같은 비표준 메서드가 지원됩니다.
-
prototype.bytesFrom(array | string, encoding)
옥텟 배열 또는 인코딩된 문자열에서 바이트 문자열을 만듭니다. 문자열 인코딩 옵션은
hex
,base64
및base64url
입니다. -
prototype.fromBytes(start[, end])
각 바이트가 해당 유니코드 코드 포인트로 대체되는 바이트 문자열에서 유니코드 문자열을 만듭니다.
-
prototype.fromUTF8(start[, end])
UTF-8 인코딩된 바이트 문자열에서 유니코드 문자열을 만듭니다. 인코딩이 올바르지 않으면
null
이(가) 반환됩니다. -
prototype.toBytes(start[, end])
유니코드 문자열에서 바이트 문자열을 만듭니다. 모든 문자는 [0,255] 범위에 있어야 합니다. 그렇지 않은 경우
null
이 반환됩니다. -
prototype.toUTF8(start[, end])
유니코드 문자열에서 UTF-8 인코딩된 바이트 문자열을 만듭니다.
-
- 번호
-
숫자에 대한 모든 ES 5.1 메서드가 지원됩니다.
숫자에 대해 다음 ES 6 메서드가 지원됩니다.
-
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
-
기본 제공 객체
ES의 다음 내장 객체가 지원됩니다.
- 수학 연산
-
모든 ES 5.1 수학 메서드가 지원됩니다.
참고
CloudFront 함수 런타임 환경에서
Math.random()
구현은 함수가 실행될 때의 타임스탬프와 함께 시드된 OpenBSDarc4random
을(를) 사용합니다.다음 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
-
- 날짜
-
모든 ES 5.1
Date
기능이 지원됩니다.참고
보안상의 이유로 단일 함수 실행의 수명 동안
Date
은(는) 항상 동일한 값(함수의 시작 시간)을 반환합니다. 자세한 내용은 제한된 기능 단원을 참조하세요. - 함수
-
apply
,bind
및call
메서드가 지원됩니다.함수 생성자는 지원되지 않습니다.
- 정규식
-
모든 ES 5.1 정규 표현식 기능이 지원됩니다. 정규 표현식 언어는 Perl과 호환됩니다. ES 9 명명된 캡처 그룹이 지원됩니다.
- JSON
-
parse
및stringify
을(를) 포함하여 모든 ES 5.1 JSON 기능이 지원됩니다. - 배열
-
배열에 대해 다음 ES 5.1 메서드가 지원됩니다.
-
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
배열에 대해 다음 ES 6 메서드가 지원됩니다.
-
of
-
prototype.copyWithin
-
prototype.fill
-
prototype.find
-
prototype.findIndex
배열에 대해 다음 ES 7 메서드가 지원됩니다.
-
prototype.includes
-
- 형식화된 배열
-
다음 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
에 대해 메서드가 지원됩니다.-
prototype.isView
-
prototype.slice
-
- Promise
-
Promise에 대해 다음 메서드가 지원됩니다.
-
reject
-
resolve
-
prototype.catch
-
prototype.finally
-
prototype.then
-
- crypto
-
암호화 모듈은 표준 해싱 및 HMAC(해시 기반 메시지 인증 코드) 헬퍼를 제공합니다.
require('crypto')
을(를) 사용하여 모듈을 로드할 수 있습니다. 모듈은 해당 Node.js 대응으로 정확하게 동작하는 다음과 같은 메서드를 노출합니다.-
createHash(algorithm)
-
hash.update(data)
-
hash.digest([encoding])
-
createHmac(algorithm, secret key)
-
hmac.update(data)
-
hmac.digest([encoding])
자세한 내용은 기본 제공 모듈 단원의 암호화(해시 및 HMAC)를 참조하세요.
-
- 콘솔
-
디버깅을 위한 헬퍼 객체입니다. 로그 메시지를 기록하는
log()
메서드만 지원합니다.참고
CloudFront 함수는
console.log('a', 'b')
와 같은 쉼표 구문을 지원하지 않습니다. 대신console.log('a' + ' ' + 'b')
형식을 사용합니다.
오류 유형
다음과 같은 오류 객체가 지원됩니다.
-
Error
-
EvalError
-
InternalError
-
MemoryError
-
RangeError
-
ReferenceError
-
SyntaxError
-
TypeError
-
URIError
Globals
globalThis
객체가 지원됩니다.
다음 ES 5.1 전역 함수가 지원됩니다.
-
decodeURI
-
decodeURIComponent
-
encodeURI
-
encodeURIComponent
-
isFinite
-
isNaN
-
parseFloat
-
parseInt
다음과 같은 글로벌 제약이 지원됩니다.
-
NaN
-
Infinity
-
undefined
기본 제공 모듈
다음 기본 제공 모듈이 지원됩니다.
암호화(해시 및 HMAC)
암호화 모듈(crypto
)은 표준 해싱 및 HMAC(해시 기반 메시지 인증 코드) 헬퍼를 제공합니다. require('crypto')
을(를) 사용하여 모듈을 로드할 수 있습니다. 이 모듈은 Node.js 대응물과 정확히 동일하게 동작하는 다음과 같은 메서드를 제공합니다.
해싱 메서드
crypto.createHash(algorithm)
-
지정된 알고리즘(
md5
,sha1
또는sha256
)을 사용하여 해시 다이제스트를 생성하는 데 사용할 수 있는 해시 객체를 생성하고 반환합니다. hash.update(data)
-
지정된
data
(으)로 해시 콘텐츠를 업데이트합니다. hash.digest([encoding])
-
hash.update()
을(를) 사용하여 전달된 모든 데이터의 다이제스트를 계산합니다. 인코딩은hex
,base64
또는base64url
일 수 있습니다.
HMAC 메서드
crypto.createHmac(algorithm, secret key)
-
지정된
algorithm
및secret key
을(를) 사용하는 HMAC 객체를 생성 및 반환합니다. 알고리즘은md5
,sha1
또는sha256
일 수 있습니다. hmac.update(data)
-
지정된
data
(으)로 HMAC 콘텐츠를 업데이트합니다. hmac.digest([encoding])
-
hmac.update()
을(를) 사용하여 전달된 모든 데이터의 다이제스트를 계산합니다. 인코딩은hex
,base64
또는base64url
일 수 있습니다.
쿼리 문자열
참고
CloudFront 함수 이벤트 객체는 URL 쿼리 문자열을 자동으로 구문 분석합니다. 즉, 대부분의 경우 이 모듈을 사용할 필요가 없습니다.
쿼리 문자열 모듈(querystring
)은 URL 쿼리 문자열을 구문 분석하고 서식을 지정하는 메서드를 제공합니다. require('querystring')
을 사용하여 모듈을 로드할 수 있습니다. 이 모듈은 다음과 같은 방법을 제공합니다.
querystring.escape(string)
-
지정된
string
을 URL-인코딩하여 이스케이프된 쿼리 문자열을 반환합니다. 이 방법은querystring.stringify()
에서 사용되며 직접 사용해서는 안 됩니다. querystring.parse(string[, separator[, equal[, options]]])
-
쿼리 문자열(
string
)을 구문 분석하고 객체를 반환합니다.separator
파라미터는 쿼리 문자열에서 키와 값 페어를 구분하기 위한 하위 문자열입니다. 기본 설정은&
입니다.equal
파라미터는 쿼리 문자열에서 키와 값을 구분하기 위한 하위 문자열입니다. 기본 설정은=
입니다.options
파라미터는 다음 키를 가진 객체입니다.decodeURIComponent function
-
쿼리 문자열에서 백분율로 인코딩된 문자를 디코딩하는 함수입니다. 기본 설정은
querystring.unescape()
입니다. maxKeys number
-
구문 분석할 최대 키 수입니다. 기본 설정은
1000
입니다.0
값을 사용하여 키 카운트 제한을 제거합니다.
기본적으로 쿼리 문자열 내의 백분율로 인코딩된 문자는 UTF-8 인코딩을 사용하는 것으로 간주됩니다. 잘못된 UTF-8 시퀀스는
U+FFFD
대체 문자로 대체됩니다.예를 들어 다음 쿼리 문자열의 경우:
'name=value&abc=xyz&abc=123'
querystring.parse()
의 반환 값:{ name: 'value', abc: ['xyz', '123'] }
querystring.decode()
는querystring.parse()
의 별칭입니다. querystring.stringify(object[, separator[, equal[, options]]])
-
object
를 직렬화하고 쿼리 문자열을 반환합니다.separator
파라미터는 쿼리 문자열에서 키와 값 페어를 구분하기 위한 하위 문자열입니다. 기본 설정은&
입니다.equal
파라미터는 쿼리 문자열에서 키와 값을 구분하기 위한 하위 문자열입니다. 기본 설정은=
입니다.options
파라미터는 다음 키를 가진 객체입니다.encodeURIComponent function
-
URL에 안전하지 않은 문자를 쿼리 문자열에서 백분율 인코딩으로 변환하는 데 사용할 함수입니다. 기본 설정은
querystring.escape()
입니다.
기본적으로 쿼리 문자열 내에서 백분율 인코딩이 필요한 문자는 UTF-8로 인코딩됩니다. 다른 인코딩을 사용하려면
encodeURIComponent
옵션을 지정합니다.예를 들어, 다음 코드의 경우:
querystring.stringify({ name: 'value', abc: ['xyz', '123'], anotherName: '' });
반환 값:
'name=value&abc=xyz&abc=123&anotherName='
querystring.encode()
는querystring.stringify()
의 별칭입니다. querystring.unescape(string)
-
지정된
string
의 URL 백분율로 인코딩된 문자를 디코딩하여 이스케이프되지 않은 쿼리 문자열을 반환합니다. 이 방법은querystring.parse()
에서 사용되며 직접 사용해서는 안 됩니다.
제한된 기능
다음 JavaScript 언어 기능은 보안 문제로 인해 지원되지 않거나 제한됩니다.
- 동적 코드 평가
-
동적 코드 평가는 지원되지 않습니다. 시도하면
eval()
및Function
생성자 모두 오류가 발생합니다. 예를 들어const sum = new Function('a', 'b', 'return a + b')
에서 오류가 발생합니다. - 타이머
-
setTimeout()
,setImmediate()
및clearTimeout()
함수는 지원되지 않습니다. 함수 실행 내에서 연기하거나 출력할 프로비전이 없습니다. 함수가 완료되려면 동기적으로 실행되어야 합니다. - 날짜 및 타임스탬프
-
보안상의 이유로 고해상도 타이머에 액세스할 수 없습니다. 현재 시간을 쿼리하는 모든
Date
메서드는 단일 함수 실행의 수명 동안 항상 동일한 값을 반환합니다. 반환된 타임 스탬프는 함수가 실행을 시작한 시간입니다. 따라서 함수에서 경과 시간을 측정할 수 없습니다. - 파일 시스템 액세스
-
파일 시스템 액세스가 없습니다. 예를 들어 Node.js에서처럼 파일 시스템 액세스를 위한
fs
모듈이 없습니다. - 프로세스 액세스
-
프로세스 액세스가 없습니다. 예를 들어 Node.js와는 달리 정보 액세스를 처리하기 위한
process
글로벌 객체가 없습니다. - 환경 변수
-
환경 변수에 액세스할 수 없습니다.
대신 CloudFront KeyValueStore를 사용하여 CloudFront Functions에 대한 키 값 페어의 중앙 집중식 데이터 스토어를 생성할 수 있습니다. CloudFront KeyValueStore를 사용하면 코드 변경 사항을 배포할 필요 없이 구성 데이터를 동적으로 업데이트할 수 있습니다. CloudFront KeyValueStore를 사용하려면 JavaScript 런타임 2.0을 사용해야 합니다. 자세한 내용은 Amazon CloudFront KeyValueStore 단원을 참조하십시오.
- 네트워크 액세스
-
네트워크 통화에 대한 지원이 없습니다. 예를 들어 XHR, HTTP(S) 및 소켓은 지원되지 않습니다.