CloudFront 배포에 gRPC 사용
Amazon CloudFront는 HTTP/2를 기반으로 구축된 오픈 소스 원격 프로시저 호출(RPC) 프레임워크인 gRPC를 지원합니다. gRPC는 양방향 스트리밍 및 바이너리 프로토콜 버퍼 페이로드를 제공하므로 지연 시간이 짧은 통신이 필요한 애플리케이션에 적합합니다.
CloudFront는 gRPC 요청을 수신하여 오리진에 직접 프록시 처리합니다. CloudFront를 사용하여 다음 4가지 유형의 gRPC 서비스를 프록시 처리할 수 있습니다.
-
단항 RPC
-
서버 스트리밍 RPC
-
클라이언트 스트리밍 RPC
-
양방향 스트리밍 RPC
CloudFront에서 gRPC가 작동하는 방식
CloudFront에서 gRPC를 구성하려면 gRPC 서비스를 제공하는 오리진을 배포의 오리진으로 설정합니다. 비 gRPC 서비스와 gRPC 서비스를 모두 제공하는 오리진을 사용할 수 있습니다. CloudFront는 수신 요청이 gRPC 요청인지 아니면 Content-Type
헤더를 기반으로 하는 HTTP/HTTPS 요청인지 확인합니다. 요청의 Content-Type
헤더 값이 application/grpc
인 경우 요청이 gRPC 요청으로 간주되며 CloudFront는 해당 요청을 오리진으로 프록시 처리합니다.
참고
배포에서 gRPC 요청을 처리하도록 사용 설정하려면 HTTP/2를 지원되는 HTTP 버전 중 하나로 포함하고 POST
를 비롯한 HTTP 메서드를 허용해야 합니다. CloudFront는 보안(HTTPS 기반) gRPC 연결만 지원하므로 gRPC 오리진 엔드포인트는 HTTPS를 지원하도록 구성되어야 합니다. gRPC는 엔드 투 엔드 HTTPS만 지원합니다. 사용자 지정 오리진을 사용하는 경우 프로토콜 설정이 HTTPS를 지원하는지 확인합니다.
배포에서 gRPC 지원을 사용 설정하려면 다음 단계를 완료합니다.
-
배포의 캐시 동작을 업데이트하여
POST
메서드를 포함한 HTTP 메서드를 허용합니다. -
POST
메서드를 선택한 후 나타나는 gRPC 확인란을 선택합니다. -
HTTP/2를 지원되는 HTTP 버전 중 하나로 지정합니다.
자세한 정보는 다음의 주제를 참조하세요.
-
Amazon CloudFront API 참조의 GrpcConfig
gRPC는 캐시할 수 없는 API 트래픽에만 사용되므로 캐시 구성은 gRPC 요청에 영향을 주지 않습니다. gRPC 오리진으로 전송된 gRPC 요청에 사용자 지정 헤더를 추가하는 데 오리진 요청 정책을 사용할 수 있습니다. CloudFront와 함께 AWS WAF를 사용하여 gRPC 배포에 대한 액세스를 관리하고, 봇을 제어하고, 웹 익스플로잇으로부터 gRPC 애플리케이션을 보호할 수 있습니다. CloudFront gRPC는 CloudFront Functions을 지원합니다.
HTTPS 상태 외에도 gRPC 응답과 함께 grpc-status를 받게 됩니다. grpc-status에 사용할 수 있는 값 목록은 Status codes and their use in gRPC
Notes
gRPC는 다음의 CloudFront 기능을 지원하지 않습니다.
-
gRPC는
POST
메서드를 사용하므로 오리진 장애 조치는 gRPC에서 지원되지 않습니다. CloudFront는 최종 사용자 요청의 HTTP 메서드가GET
,HEAD
또는OPTIONS
인 경우에만 보조 오리진으로 장애 조치합니다. -
CloudFront는 gRPC 요청을 오리진으로 직접 프록시 처리하고 리전 엣지 캐시(REC)를 우회합니다. gRPC는 REC를 우회하기 때문에 gRPC는 Lambda@Edge 또는 Origin Shield를 지원하지 않습니다.
-
gRPC는 AWS WAF 요청 본문 검사 규칙을 지원하지 않습니다. 배포의 웹 ACL에서 이러한 규칙을 사용 설정한 경우 gRPC를 사용하는 모든 요청은 요청 본문 검사 규칙을 무시합니다. 모든 다른 AWS WAF 규칙은 계속 적용됩니다. 자세한 내용은 배포에 AWS WAF 활성화 섹션을 참조하세요.