継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

CloudFront でカスタムオリジンとして ALB を指定した時に注意すべきこと

タダです.

CloudFront のカスタムオリジンとして ALB を指定した時に注意すべきことをまとめていきます.

本記事の前提

CloudFront のオリジンとして ALB を指定する時がありました.その際に ALB はターゲットとして ECS を設定し,ターゲットグループとして HTTP2 プロトコルを指定していました.オリジンへのリクエスト時に464 エラーが発生しました.

464 エラーの原因

464 エラーの原因は ALB がターゲットグループプロトコルのバージョン構成と互換性のない着信リクエスプロトコルを受信した時に発生する模様です.

考えられる原因:

リクエスプロトコルは HTTP/1.1 であるが、ターゲットグループのプロトコルバージョンが gRPC または HTTP/2 である。

リクエスプロトコルは gRPC であるが、ターゲットグループのプロトコルバージョンが HTTP/1.1 である。

リクエスプロトコルは HTTP/2 であり、リクエストは POST ではないが、ターゲットグループのプロトコルバージョンが gRPC である。

関連ドキュメント

docs.aws.amazon.com

CloudFront がターゲットへ転送する時の HTTP バージョン

CloudFront のターゲットへ転送するときは HTTP 1.1 で送ることがドキュメントに記載されてます.今回でいうと ALB のターゲットグループが HTTP2 に指定したことで問題で リクエストプロトコルは HTTP/1.1 であるが、ターゲットグループのプロトコルバージョンが gRPC または HTTP/2 である という状態でした.本件の場合,ターゲットグループプロトコルを HTTP1 に変更すれば CloudFront から ALB への転送リクエストを受信できました.当然ですが,ターゲットグループは作り直す必要があるためリスナーとの関連付けやターゲットグループに紐づいた ECS タスクも外す必要があるため気をつけましょう.

CloudFront は HTTP/1.1 を使用してカスタムオリジンにリクエストを転送します。

関連ドキュメント

docs.aws.amazon.com

まとめ

簡単ですが,CloudFront のカスタムオリジンとして ALB を指定した際に発生したエラーとその対処をまとめました.