CloudFront VPC OriginsとgRPCの組み合わせが非サポートであることを実際にデプロイして確認してみた
こんにちは、ゲームソリューション部のsoraです。
CloudFront VPC Originsの制限事項について、英語版と日本語版のドキュメントで記載に差異があり判断に迷ったため、実際に環境を構築して確認してみました。
はじめに
CloudFrontのVPC Originsは、プライベートサブネットのALBやNLB、EC2インスタンスをCloudFront経由で公開できる機能です。
CloudFront自体はgRPCをサポートしていますが、VPC Originsと組み合わせてgRPCが使えるかどうかを調べたところ、英語版と日本語版のドキュメントで制限事項の記載が異なっていました。
英語版の記載
VPC origins do not support the following:
- WebSockets
- gRPC traffic
- Origin request and origin response triggers with Lambda@Edge
3つの制限が独立した箇条書きで記載されており、gRPCは単独で非サポートです。
日本語版の記載
CloudFront の Lambda@Edge を使用した WebSocket、gRPC トラフィック、オリジンリクエスト、オリジンレスポンストリガーは、VPC オリジンではサポートされていません。
この書き方だと「Lambda@Edgeを使用した」が全項目にかかるように読めてしまい、gRPC単体の利用が制限されるのかどうかがわかりませんでした。
ドキュメントを読むだけでは判断がつかなかったため、実際にデプロイして確認しました。
検証構成
gRPCを有効にしたCloudFrontからVPC Origins経由でプライベートサブネットのInternal ALB(HTTPS:443)に接続し、ECS Fargate上のgRPCサーバーにリクエストを送る構成を作成します。

検証結果
Terraformでの確認
terraform applyを実行したところ、CloudFront Distributionの作成時に以下のエラーが返却されました。
Error: creating CloudFront Distribution: operation error CloudFront: CreateDistributionWithTags,
https response error StatusCode: 400, RequestID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,
InvalidArgument: The parameter gRPC isn't supported if your origin is a VPC Origin.
Update your distribution to disable gRPC or change the origin.
CloudFront APIがgrpc_config { enabled = true }とvpc_origin_configの組み合わせを明示的に拒否しました。
そもそも設定自体が作成できませんでした。
なお、terraform planではこのエラーは検出されず、terraform apply時にエラーとなりました。
コンソールでの確認
マネジメントコンソールからも確認しました。
CloudFront Distributionのオリジンとして、VPC OriginとパブリックALBの2つのオリジンを設定しています。

ビヘイビア > Default (*) > Editを開き、オリジンをVPC Originに設定してgRPCを有効にします。

The parameter gRPC isn't supported if your origin is a VPC Origin. Update your distribution to disable gRPC or change the origin.

gRPCのチェックボックス自体は選択可能ですが、保存時にバリデーションで弾かれます。
TerraformのAPIエラーとコンソールのエラーメッセージは同一です。
パブリックALBの場合
ちなみに、VPC Originsを使わずInternet-facing ALBをオリジンとする構成であれば、gRPCは問題なく設定可能で動作もします。
% grpcurl -d '{"greeting": "hello"}' dXXXXXXXXXXXXX.cloudfront.net:443 hello.HelloService/SayHello
{
"reply": "hello hello"
}
CloudFront自体のgRPCサポートには問題がなく、VPC Originsとの組み合わせのみが制限されていることがわかります。
最後に
| パターン | 構成 | 結果 |
|---|---|---|
| A | CloudFront + VPC Origins + gRPC | 失敗(設定レベルで拒否) |
| B | CloudFront + パブリックALB + gRPC | 成功 |
CloudFront VPC OriginsはgRPCをサポートしていませんでした。
英語版ドキュメントの記載が正しかったです。
日本語版ドキュメントは「Lambda@Edgeを使用した」が全項目にかかるように読める記述になっていますが、VPC Originsと組み合わせてgRPCを使用することはできません。
この記事がどなたかの参考になれば幸いです。







