CloudFront Functions를 위한 JavaScript 런타임 1.0 기능 - Amazon CloudFront

CloudFront Functions를 위한 JavaScript 런타임 1.0 기능

CloudFront 함수 JavaScript 런타임 환경은 ECMAScript(ES) 버전 5.1을 준수하며, ES 버전 6에서 9까지의 일부 기능을 지원합니다. 또한 ES 사양의 일부가 아닌 일부 비표준 방법을 제공합니다.

다음 항목에는 지원되는 모든 언어 기능이 나열되어 있습니다.

핵심 기능

ES의 다음과 같은 핵심 기능이 지원됩니다.

유형

모든 ES 5.1 유형이 지원됩니다. 여기에는 부울 값, 숫자, 문자열, 객체, 배열, 함수, 함수 생성자 및 정규 표현식이 포함됩니다.

연산자

모든 ES 5.1 연산자가 지원됩니다.

ES 7 거듭제곱 연산자(**)가 지원됩니다.

Statement
참고

constlet 문은 지원되지 않습니다.

다음 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, base64base64url입니다.

  • 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() 구현은 함수가 실행될 때의 타임스탬프와 함께 시드된 OpenBSD arc4random을(를) 사용합니다.

다음 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, bindcall 메서드가 지원됩니다.

함수 생성자는 지원되지 않습니다.

정규식

모든 ES 5.1 정규 표현식 기능이 지원됩니다. 정규 표현식 언어는 Perl과 호환됩니다. ES 9 명명된 캡처 그룹이 지원됩니다.

JSON

parsestringify을(를) 포함하여 모든 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)

지정된 algorithmsecret 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 모듈이 없습니다.

네트워크 액세스

네트워크 통화에 대한 지원이 없습니다. 예를 들어 XHR, HTTP(S) 및 소켓은 지원되지 않습니다.