本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 支援,請完成下列步驟:
-
更新分佈的快取行為以允許 HTTP 方法,包括
POST
方法。 -
選取
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 可能值的清單,請參閱狀態碼及其在 gRPC 中的使用
備註
gRPC 不支援下列 CloudFront 功能:
-
gRPC 不支援原始伺服器容錯移轉,因為 gRPC 使用
POST
方法。只有當檢視器請求的 HTTP 方法為GET
、HEAD
或OPTIONS
時,CloudFront 才會容錯移轉至次要原始伺服器。 -
CloudFront 會直接將 gRPC 請求代理至原始伺服器,並略過 Regional Edge 快取 (REC)。由於 gRPC 會略過 REC,因此 gRPC 不支援 Lambda@Edge 或 Origin Shield。
-
gRPC 不支援 AWS WAF 請求內文檢查規則。如果您在 Web ACL 上為分佈啟用這些規則,則任何使用 gRPC 的請求都會忽略請求內文檢查規則。所有其他 AWS WAF 規則仍然適用。如需詳細資訊,請參閱AWS WAF 為分佈啟用。