使用 gRPC 搭配 CloudFront 分佈 - Amazon CloudFront

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 gRPC 搭配 CloudFront 分佈

Amazon CloudFront 支援 gRPC,這是建置在 HTTP/2 上的開放原始碼遠端程序呼叫 (RPC) 架構。gRPC 提供雙向串流和二進位通訊協定,可緩衝承載,因此適合需要低延遲通訊的應用程式。

CloudFront 會接收您的 gRPC 請求,並將其直接代理到您的原始伺服器。您可以使用 CloudFront 來代理四種類型的 gRPC 服務:

  • 一元 RPC

  • 伺服器串流 RPC

  • 用戶端串流 RPC

  • 雙向串流 RPC

gRPC 如何在 CloudFront 中運作

若要在 CloudFront 中設定 gRPC,請將提供 gRPC 服務的原始伺服器設定為分佈的原始伺服器。您可以使用同時提供非 gRPC 和 gRPC 服務的原始伺服器。CloudFront 會根據 Content-Type 標頭判斷傳入請求是 gRPC 請求還是 HTTP/HTTPS 請求。如果請求的 Content-Type 標頭值為 application/grpc,則該請求會被視為 gRPC 請求,且 CloudFront 會將請求代理到您的原始伺服器。

注意

若要讓分佈處理 gRPC 請求,請包含 HTTP/2 作為其中一個支援的 HTTP 版本,並允許 HTTP 方法,包括 POST。您的 gRPC 原始端點必須設定為支援 HTTPS,因為 CloudFront 僅支援安全 (HTTPS 型) gRPC 連線。gRPC 僅支援end-to-end HTTPS。如果您使用的是自訂原始伺服器,請確認您的通訊協定設定支援 HTTPS。

若要為您的分佈啟用 gRPC 支援,請完成下列步驟:

  1. 更新分佈的快取行為以允許 HTTP 方法,包括 POST方法。

  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 可能值的清單,請參閱狀態碼及其在 gRPC 中的使用

備註

gRPC 不支援下列 CloudFront 功能:

  • 持續部署

  • 自訂錯誤回應

  • gRPC 不支援原始伺服器容錯移轉,因為 gRPC 使用 POST方法。只有當檢視器請求的 HTTP 方法為 GETHEADOPTIONS 時,CloudFront 才會容錯移轉至次要原始伺服器。

  • CloudFront 會將 gRPC 請求直接代理到原始伺服器,並略過區域邊緣快取 (REC)。由於 gRPC 略過 REC,gRPC 不支援 Lambda@EdgeOrigin Shield

  • gRPC 不支援 AWS WAF 請求內文檢查規則。如果您在 Web ACL 上為分佈啟用這些規則,任何使用 gRPC 的請求都會忽略請求內文檢查規則。所有其他 AWS WAF 規則仍將適用。如需詳細資訊,請參閱AWS WAF 為分佈啟用