6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS】ハマりどころ CloudFront + VPCオリジンの組み合わせではWebSocketは使えない

6
Last updated at Posted at 2026-03-14

CloudFront + VPCオリジンでは WebSocket が使えないという制約

AWS の CloudFront で VPCオリジンを利用していた際に、WebSocket 接続のみ失敗するという事象に遭遇しました。
結論として、CloudFront の VPCオリジンは WebSocket をサポートしていない ということが分かりました。


VPCオリジンとは

VPCオリジンとは、CloudFront から VPC 内のプライベートリソース(internal ALB / EC2 など)へ直接接続する仕組みです。
通常の CloudFront は以下のような構成になります。

Client
↓
CloudFront
↓
ALB / EC2 / S3

一方、VPCオリジンを使うと以下のように VPC 内のリソースをオリジンとして利用できます。

Client
↓
CloudFront
↓
VPCオリジン
↓
internal ALB
↓
EC2

この構成のメリットは、ALB などのオリジンを インターネットに公開しなくてよい点です。


発生した問題

VPCオリジン構成では

  • 通常の HTTP 通信 → 正常
  • WebSocket 通信 → 502 エラー

という挙動になりました。

CloudFront のログを確認すると、WebSocket リクエストで以下のような記録が残っていました。


原因

CloudFront の VPCオリジンは WebSocket をサポートしていない ことが分かり、
そのため以下の構成では WebSocket 接続が確立できません。

Client
↓
CloudFront
↓
VPCオリジン
↓
internal ALB

対応方法

WebSocket を利用する場合は、VPCオリジンを使用せず
CloudFront のオリジンとしてインターネット向け ALB を指定する構成に変更する必要がありそうです。

Client
↓
CloudFront
↓
ALB(internet-facing)
↓
EC2

CloudFront のオリジン設定には ALB のパブリック DNS 名を指定します。


まとめ

CloudFront の VPCオリジンは WebSocket 非対応です。
そのため WebSocket を利用するシステムでは、

CloudFront
↓
ALB(internet-facing)

という構成を選ぶ必要があります。

VPCオリジンを利用する場合は、この制約に注意が必要です。


注意事項

本ブログに掲載している内容は、私個人の見解であり、所属する組織の立場や戦略、意見を代表するものではありません。あくまでエンジニアとしての経験や考えを発信していますので、ご了承ください。

6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?