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 リクエストなのか HTTP/HTTPS リクエストなのかを Content-Type ヘッダーに基づいて判断します。リクエストの Content-Type ヘッダーの値が application/grpc である場合、リクエストは gRPC リクエストと見なされ、CloudFront はリクエストをオリジンにプロキシします。

注記

ディストリビューションで gRPC リクエストを処理できるようにするには、サポートされている HTTP バージョンの 1 つとして HTTP/2 を含め、HTTP メソッド (POST を含む) を許可します。CloudFront は安全な (HTTPS ベースの) gRPC 接続のみをサポートするため、gRPC オリジンエンドポイントは HTTPS をサポートするように設定する必要があります。gRPC はエンドツーエンドの HTTPS のみをサポートします。カスタムオリジンを使用している場合は、[プロトコル] 設定が HTTPS をサポートしていることを確認します。

ディストリビューションの gRPC サポートを有効にするには、次の手順を実行します。

  1. ディストリビューションのキャッシュ動作を更新して、HTTP メソッド (POST メソッドを含む) を許可します。

  2. POST メソッドを選択したら、表示される gRPC チェックボックスをオンにします。

  3. サポートされている HTTP バージョンの 1 つとして [HTTP/2] を指定します。

詳細については、以下の各トピックを参照してください。

gRPC はキャッシュできない API トラフィック専用であるため、キャッシュ設定は gRPC リクエストには影響しません。オリジンリクエストポリシーを使用して、gRPC オリジンに送信する gRPC リクエストにカスタムヘッダーを追加できます。CloudFront で AWS WAF を使用すると、gRPC ディストリビューションへのアクセスを管理し、ボットを制御して、gRPC アプリケーションをウェブエクスプロイトから保護できます。CloudFront gRPC は、CloudFront Functions をサポートしています。

HTTPS ステータスに加えて、grpc-status も gRPC レスポンスで受信します。grpc-status に指定できる値の一覧については、「Status codes and their use in gRPC」を参照してください。

メモ

gRPC は、以下の CloudFront 機能をサポートしていません。

  • 継続的デプロイ

  • カスタムエラーレスポンス

  • gRPC は POST メソッドを使用するため、gRPC ではオリジンフェイルオーバーはサポートされていません。CloudFront は、ビューワーリクエストの HTTP メソッドが GETHEAD、または OPTIONS の場合にのみ、セカンダリオリジンにフェイルオーバーします。

  • CloudFront は gRPC リクエストをオリジンに直接プロキシし、リージョナルエッジキャッシュ (REC) をバイパスします。gRPC は REC をバイパスするため、gRPC は Lambda@EdgeOrigin Shield をサポートしていません。

  • gRPC は、AWS WAF リクエスト本文の検査ルールをサポートしていません。これらのルールをディストリビューションのウェブ ACL で有効にした場合、gRPC を使用するすべてのリクエストでは、リクエスト本文の検査ルールを無視します。他のすべての AWS WAF ルールは引き続き適用されます。詳細については、「ディストリビューションで AWS WAF を有効にする」を参照してください。