모든 엣지 함수에 대한 제한 사항
다음 제한 사항은 CloudFront 함수와 Lambda@Edge의 모든 엣지 함수에 적용됩니다.
주제
AWS 계정 소유권
엣지 함수를 CloudFront 배포와 연결하려면 동일한 AWS 계정에서 함수와 배포를 소유해야 합니다.
CloudFront 함수와 Lambda@Edge 조합
지정된 캐시 동작에 대해 다음과 같은 제한이 적용됩니다.
-
각 이벤트 유형(뷰어 요청, 오리진 요청, 오리진 응답 및 뷰어 응답)은 하나의 엣지 함수 연결만 가질 수 있습니다.
-
뷰어 이벤트(뷰어 요청 및 뷰어 응답)에는 CloudFront Functions와 Lambda@Edge를 조합할 수 없습니다.
엣지 함수의 다른 모든 조합이 허용됩니다. 다음 표에서는 허용되는 조합에 대해 설명합니다.
CloudFront 함수 |
|||
뷰어 요청 |
뷰어 응답 |
||
Lambda@Edge |
뷰어 요청 |
허용되지 않음 |
허용되지 않음 |
원본 요청 |
Allowed |
Allowed |
|
원본 응답 |
Allowed |
Allowed |
|
뷰어 응답 |
허용되지 않음 |
허용되지 않음 |
HTTP 상태 코드
CloudFront는 오리진이 HTTP 상태 코드 400 이상을 반환할 때 뷰어 응답 이벤트에 대해 엣지 함수를 간접적으로 호출하지 않습니다.
오리진 응답 이벤트에 대한 Lambda@Edge 함수는 오리진이 HTTP 상태 코드 400 이상의 코드를 반환하는 경우를 포함한 모든 오리진 응답에 대해 호출됩니다. 자세한 내용은 오리진 응답 트리거에서 HTTP 응답 업데이트 단원을 참조하세요.
HTTP 헤더
특정 HTTP 헤더는 허용되지 않습니다. 즉, 엣지 함수에 노출되지 않고 함수는 이를 추가할 수 없습니다. 다른 헤더는 읽기 전용이므로 함수가 읽을 수는 있지만 추가, 수정 또는 삭제할 수 없습니다.
허용되지 않는 헤더
다음 HTTP 헤더는 엣지 함수에 노출되지 않으며 함수는 이를 추가할 수 없습니다. 함수가 이러한 헤더 중 하나를 추가하면 CloudFront 유효성 검사에 실패하고 CloudFront가 HTTP 상태 코드 502(Bad Gateway)를 뷰어에게 반환합니다.
-
Connection
-
Expect
-
Keep-Alive
-
Proxy-Authenticate
-
Proxy-Authorization
-
Proxy-Connection
-
Trailer
-
Upgrade
-
X-Accel-Buffering
-
X-Accel-Charset
-
X-Accel-Limit-Rate
-
X-Accel-Redirect
-
X-Amz-Cf-*
-
X-Amzn-Auth
-
X-Amzn-Cf-Billing
-
X-Amzn-Cf-Id
-
X-Amzn-Cf-Xff
-
X-Amzn-Errortype
-
X-Amzn-Fle-Profile
-
X-Amzn-Header-Count
-
X-Amzn-Header-Order
-
X-Amzn-Lambda-Integration-Tag
-
X-Amzn-RequestId
-
X-Cache
-
X-Edge-*
-
X-Forwarded-Proto
-
X-Real-IP
읽기 전용 헤더
다음 헤더는 읽기 전용입니다. 함수는 이러한 값을 읽고 함수 논리에 대한 입력으로 사용할 수 있지만 값을 변경할 수는 없습니다. 함수가 읽기 전용 헤더를 추가 또는 편집하는 경우 요청은 CloudFront 유효성 검사에 실패하고 CloudFront는 HTTP 상태 코드 502(잘못된 게이트웨이)를 뷰어에게 반환합니다.
뷰어 요청 이벤트의 읽기 전용 헤더
다음 헤더는 뷰어 요청 이벤트의 읽기 전용 헤더입니다.
-
Content-Length
-
Host
-
Transfer-Encoding
-
Via
오리진 요청 이벤트의 읽기 전용 헤더(Lambda@Edge 전용)
다음 헤더는 Lambda@Edge에만 있는 오리진 요청 이벤트에서만 읽을 수 있습니다.
-
Accept-Encoding
-
Content-Length
-
If-Modified-Since
-
If-None-Match
-
If-Range
-
If-Unmodified-Since
-
Transfer-Encoding
-
Via
오리진 응답 이벤트의 읽기 전용 헤더(Lambda@Edge 전용)
다음 헤더는 Lambda@Edge에만 있는 오리진 응답 이벤트에서만 읽을 수 있습니다.
-
Transfer-Encoding
-
Via
뷰어 응답 이벤트의 읽기 전용 헤더
다음 헤더는 CloudFront Functions와 Lambda@Edge에 대한 뷰어 응답 이벤트에서 읽기 전용입니다.
-
Warning
-
Via
다음 헤더는 Lambda@Edge에 대한 뷰어 응답 이벤트에서 읽기 전용입니다.
-
Content-Length
-
Content-Encoding
-
Transfer-Encoding
쿼리 문자열
요청 URI에서 쿼리 문자열을 읽거나 업데이트하거나 만드는 함수에는 다음 제한 사항이 적용됩니다.
-
(Lambda@Edge 전용) 오리진 요청 또는 오리진 응답 함수에서 쿼리 문자열에 액세스하려면 캐시 정책 또는 오리진 요청 정책을 쿼리 문자열에 대해 모두(ALL)로 설정해야 합니다.
-
함수는 뷰어 요청 및 오리진 요청 이벤트에 대한 쿼리 문자열을 만들거나 업데이트할 수 있습니다(오리진 요청 이벤트는 Lambda@Edge에만 있음).
-
함수는 쿼리 문자열을 읽을 수 있지만 오리진 응답 및 뷰어 응답 이벤트에 대해 쿼리 문자열을 만들거나 업데이트할 수는 없습니다(오리진 응답 이벤트는 Lambda@Edge에만 있음).
-
함수가 쿼리 문자열을 만들거나 업데이트하는 경우 다음과 같은 제한이 적용됩니다.
-
쿼리 문자열에는 공백, 제어 문자 또는 조각 ID(
#
)가 포함될 수 없습니다. -
쿼리 문자열을 포함한 URI 및 총 크기는 8,192자 미만이어야 합니다.
-
URI 및 쿼리 문자열에 퍼센트 인코딩을 사용하는 것이 좋습니다. 자세한 내용은 URI, 쿼리 문자열 및 헤더 인코딩 단원을 참조하십시오.
-
URI
함수가 요청의 URI를 변경하는 경우 이로 인해 요청 또는 요청이 전달되는 오리진에 대한 캐시 동작이 변경되지 않습니다.
쿼리 문자열을 포함한 URI 및 총 크기는 8,192자 미만이어야 합니다.
URI, 쿼리 문자열 및 헤더 인코딩
엣지 함수에 전달된 URI, 쿼리 문자열 및 헤더 값은 UTF-8로 인코딩됩니다. 함수는 반환하는 URI, 쿼리 문자열 및 헤더 값에 대해 UTF-8 인코딩을 사용해야 합니다. 퍼센트 인코딩은 UTF-8 인코딩과 호환됩니다.
다음 목록에서는 CloudFront가 URI, 쿼리 문자열 및 헤더 값 인코딩을 처리하는 방법을 설명합니다.
-
요청의 값이 UTF-8로 인코딩되면 CloudFront는 값을 변경하지 않고 해당 함수로 바로 전달합니다.
-
요청의 값이 ISO 8859-1로 인코딩
되면 CloudFront는 값을 UTF-8 인코딩으로 변환한 후 함수에 전달합니다. -
다른 문자 인코딩을 사용하여 요청의 값이 인코딩되는 경우 CloudFront는 값이 ISO-8859-1로 인코딩된 것으로 가정하고 ISO-8859-1에서 UTF-8로 변환하려고 시도합니다.
중요
변환된 문자는 원래 요청에 있는 값의 부정확한 해석일 수 있습니다. 이 경우 해당 함수 또는 오리진에서 의도하지 않은 결과가 생성될 수 있습니다.
CloudFront가 오리진에 전달하는 URI, 쿼리 문자열 및 헤더 값은 함수가 값을 변경하는지 여부에 따라 달라집니다.
-
함수가 URI, 쿼리 문자열 또는 헤더를 변경하지 않는 경우 CloudFront는 CloudFront가 요청에서 수신한 값을 오리진으로 전달합니다.
-
함수가 URI, 쿼리 문자열 또는 헤더를 변경하는 경우 CloudFront는 UTF-8로 인코딩된 값을 전달합니다.
Microsoft Smooth Streaming
Microsoft Smooth Streaming 형식으로 변환한 미디어 파일을 스트리밍하는 데 사용하는 CloudFront 배포에는 엣지 함수를 사용할 수 없습니다.
태그 지정
엣지 함수에 태그를 추가할 수 없습니다. CloudFront의 태그 지정에 대한 자세한 내용은 배포 태깅 섹션을 참조하세요.