Lambda@Edge에 대한 제한 사항 - Amazon CloudFront

Lambda@Edge에 대한 제한 사항

다음 제한 사항은 Lambda@Edge에만 적용됩니다.

할당량에 대한 자세한 내용은 Lambda@Edge에 대한 할당량 단원을 참조하십시오.

DNS 확인

CloudFront는 오리진 요청 Lambda@Edge 함수를 실행하기 전에 오리진 도메인 이름에 대해 DNS 확인을 수행합니다. 도메인의 DNS 서비스에 문제가 있고 CloudFront가 도메인 이름을 확인하여 IP 주소를 가져올 수 없는 경우 Lambda@Edge 함수가 간접 호출되지 않습니다. CloudFront는 클라이언트에 HTTP 502 상태 코드(잘못된 게이트웨이)를 반환합니다. 자세한 내용은 DNS 오류(NonS3OriginDnsError) 단원을 참조하십시오.

관리에 대한 자세한 내용은 Amazon Route 53 개발자 안내서의 DNS 장애 조치 구성을 참조합니다.

HTTP 상태 코드

뷰어 응답 이벤트에 대한 Lambda@Edge 함수는 응답이 오리진에서 왔는지, CloudFront 캐시에서 왔는지와 관계없이 응답의 HTTP 상태 코드를 수정할 수 없습니다.

Lambda 함수 버전

$LATEST 또는 별칭이 아니라 번호가 매겨진 Lambda 함수 버전을 사용해야 합니다.

Lambda 리전

Lambda 함수는 미국 동부(버지니아 북부) 리전에 있어야 합니다.

Lambda 역할 권한

Lambda 함수와 연결된 IAM 실행 역할은 서비스 보안 주체 lambda.amazonaws.comedgelambda.amazonaws.com에서 역할을 수임하도록 허용해야 합니다. 자세한 내용은 Lambda@Edge에 대한 IAM 권한 및 역할 설정 단원을 참조하십시오.

Lambda 기능

다음 Lambda 함수는 Lambda@Edge에서 지원되지 않습니다.

지원되는 런타임

Lambda@Edge는 다음과 같은 실행 시간으로 Lambda 함수를 지원합니다.

Node.js

Python

  • Node.js 20

  • Node.js 18

  • Node.js 16¹

  • Node.js 14²

  • Node.js 12²

  • Node.js 10²

  • Node.js 8²

  • Node.js 6²

  • Python 3.12

  • Python 3.11

  • Python 3.10

  • Python 3.9

  • Python 3.8

  • Python 3.7

¹이 버전의 Node.js는 수명 주기가 다 되었으며 AWS Lambda에서 곧 사용 중지됩니다.

²이 버전의 Node.js는 수명 주기가 다 되었으며 AWS Lambda에서 완전히 사용 중지되었습니다.

더 이상 사용되지 않는 버전의 Node.js로는 함수를 만들거나 업데이트할 수 없습니다. 기존 함수를 이러한 버전의 CloudFront 배포에만 연결할 수 있습니다. 배포와 관련된 이러한 버전의 함수는 계속 실행됩니다. 그러나 함수를 최신 버전의 Node.js로 옮기는 것이 좋습니다. 자세한 내용은 AWS Lambda 개발자 안내서런타임 사용 중단 정책과 GitHub의 Node.js 릴리스 일정을 참조하세요.

작은 정보

성능 향상과 새로운 기능을 위해 제공된 런타임의 최신 버전을 사용하는 것이 가장 좋습니다.

CloudFront 헤더

Lambda@Edge 함수는 CloudFront 요청 헤더 추가에 나열된 CloudFront 헤더를 읽고, 편집하고, 제거하거나 추가할 수 있습니다.

참고
  • CloudFront에서 이러한 헤더를 추가하도록 하려면 캐시 정책 또는 오리진 요청 정책을 사용하여 추가하도록 CloudFront를 구성해야 합니다.

  • CloudFront는 뷰어 요청 이벤트 이후에 헤더를 추가하므로 뷰어 요청의 Lambda@Edge 함수에서 헤더를 사용할 수 없습니다. 헤더는 오리진 요청 및 오리진 응답의 Lambda@Edge 함수에만 사용할 수 있습니다.

  • 뷰어 요청에 이러한 이름을 가진 헤더가 포함되어 있으면 캐시 정책 또는 오리진 요청 정책을 사용하여 해당 헤더를 포함하도록 CloudFront를 구성해야 합니다. 그러면CloudFront는 뷰어 요청에 있었던 헤더 값을 덮어씁니다. 뷰어 방향 함수는 뷰어 요청의 헤더 값을 보는 반면, 오리진 방향 함수는 CloudFront에서 추가한 헤더 값을 확인합니다.

  • 뷰어 요청 함수가 CloudFront-Viewer-Country 헤더를 추가하면 유효성 검사에 실패하고 CloudFront는 뷰어에 HTTP 상태 코드 502(잘못된 게이트웨이)를 반환합니다.

본문 포함 옵션이 적용된 요청 본문에 대한 제한 사항

본문 포함 옵션을 선택해 Lambda@Edge 함수에 요청 본문을 노출하면 노출 또는 교체된 본문 부분에 다음 정보 및 크기 제한이 적용됩니다.

  • CloudFront는 항상 요청 본문을 base64로 인코딩한 후 Lambda@Edge에 노출합니다.

  • 요청 본문이 크면 CloudFront는 요청 본문이 Lambda@Edge에 노출되기 전에 다음과 같이 자릅니다.

    • 뷰어 요청 이벤트의 경우 본문은 40KB에서 잘립니다.

    • 오리진 요청 이벤트의 경우 본문은 1MB에서 잘립니다.

  • 요청 본문에 읽기 전용으로 액세스하는 경우 CloudFront는 전체 원본 요청 본문을 오리진으로 반환합니다.

  • Lambda@Edge 함수가 요청 본문을 교체하면 함수가 반환하는 본문에 다음 크기 제한이 적용됩니다.

    • Lambda@Edge 함수가 본문을 일반 텍스트로 반환하는 경우:

      • 뷰어 요청 이벤트의 경우 본문 제한은 40KB입니다.

      • 오리진 요청 이벤트의 경우 본문 제한은 1MB입니다.

    • Lambda@Edge 함수가 본문을 base64로 인코딩된 텍스트로 반환하는 경우:

      • 뷰어 요청 이벤트의 경우 본문 제한은 53.2KB입니다.

      • 오리진 요청 이벤트의 경우 본문 제한은 1.33MB입니다.

참고

Lambda@Edge 함수가 이러한 제한을 초과하는 본문을 반환하는 경우 HTTP 502 상태 코드(Lambda 검증 오류)와 함께 요청이 실패합니다. 본문이 이러한 제한을 초과하지 않도록 Lambda@Edge 함수를 업데이트하는 것이 좋습니다.

응답 제한 시간 및 연결 유지 제한 시간(사용자 지정 오리진만 해당)

Lambda@Edge 함수를 사용하여 배포 오리진에 대한 응답 제한 시간 또는 연결 유지 제한 시간을 설정하는 경우 오리진이 지원할 수 있는 값을 지정해야 합니다. 자세한 내용은 응답 및 연결 유지 제한 시간 할당량 단원을 참조하십시오.