CloudFront 배포에 gRPC 사용 - Amazon CloudFront

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 지원을 사용 설정하려면 다음 단계를 완료합니다.

  1. 배포의 캐시 동작을 업데이트하여 POST 메서드를 포함한 HTTP 메서드를 허용합니다.

  2. POST 메서드를 선택한 후 나타나는 gRPC 확인란을 선택합니다.

  3. HTTP/2를 지원되는 HTTP 버전 중 하나로 지정합니다.

자세한 정보는 다음의 주제를 참조하세요.

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 활성화 섹션을 참조하세요.