将 gRPC 与 CloudFront 分配结合使用 - Amazon CloudFront
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

将 gRPC 与 CloudFront 分配结合使用

注意

此功能在中国区域不可用。

Amazon CloudFront 支持 gRPC,这是一种基于 HTTP/2 的开源远程过程调用(RPC,Remote Procedure Call)框架。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 仅支持端到端 HTTPS。如果您使用自定义源,请验证您的协议设置是否支持 HTTPS。

要为您的分配启用 gRPC 支持,请完成以下步骤:

  1. 更新分配的缓存行为来允许 HTTP 方法,包括 POST 方法。

  2. 选择 POST 方法后,选中显示的 gRPC 复选框。

  3. HTTP/2 指定为支持的 HTTP 版本之一。

有关更多信息,请参阅以下主题:

由于 gRPC 仅用于不可缓存的 API 流量,因此您的缓存配置不会影响 gRPC 请求。您可以使用源请求策略,将自定义标头添加到发送到您的 gRPC 来源的 gRPC 请求中。您可以 Amazon WAF 与 CloudFront 配合使用来管理对 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@Edge源护盾

  • gRPC 不支持 Amazon WAF 请求正文检查规则。如果您在分配的 Web ACL 上启用了这些规则,则任何使用 gRPC 的请求都将忽略请求正文检查规则。所有其他 Amazon WAF 规则仍将适用。有关更多信息,请参阅 为分配启用 Amazon WAF