0
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?

個人的備忘録:Terraform で CloudFront のカスタムエラーページを設定する方法をコードで振り返る

Last updated at Posted at 2025-02-26

はじめに

AWS CloudFront を利用する際、403 や 404 エラーが発生したときにカスタムエラーページを表示したい場合があります。

本記事では、Terraform を使って CloudFront のカスタムエラーレスポンスを設定する方法を解説します。

実際に使っているコード
現在、コードの記述量が想定より多くなっているため、今後はファイルの分割などを検討する予定です。

なぜ Terraform を使うのか?

以前は、AWS マネジメントコンソールを使って手動でエラーページを設定していました。しかし、手動の設定には以下のような問題がありました。

  • 設定を変更するたびに AWS マネジメントコンソールにログインする必要がある。
  • 同じ設定を複数の環境(開発・ステージング・本番)に適用するのが面倒。
  • 設定ミスや変更履歴の管理が難しい。

Terraform を使えば、コードとしてインフラの設定を管理できるため、

  • 一度定義すれば、同じ設定を簡単に適用可能。
  • 設定の変更をバージョン管理し、履歴を追える。
  • ミスを減らし、管理を効率化できる。

といったメリットが得られます。

CloudFront のカスタムエラーレスポンスとは?

CloudFront では、S3 バケットや他のオリジンが 403 Forbidden404 Not Found を返した際に、別のページ(例えば index.html)を表示するように設定できます。これにより、静的サイトでエラーページを一貫したデザインで提供できます。

Terraform の設定方法

Terraform の aws_cloudfront_distribution リソース内で custom_error_response ブロックを追加することで、CloudFront にカスタムエラーページを設定できます。

カスタムエラーレスポンスの追加

以下のコードを CloudFront の Terraform 設定に追加してください。

  # カスタムエラーレスポンスの設定
  custom_error_response {
    error_code            = 403
    response_page_path    = "/index.html"
    response_code         = 200
    error_caching_min_ttl = 10
  }

  custom_error_response {
    error_code            = 404
    response_page_path    = "/index.html"
    response_code         = 200
    error_caching_min_ttl = 10
  }

各パラメータの説明

パラメータ 説明
error_code CloudFront で処理するエラーコード(403, 404 など)
response_page_path エラー時に表示するページのパス(例:/index.html
response_code CloudFront がクライアントに返す HTTP ステータスコード(200 に設定すると通常のページとして扱われる)
error_caching_min_ttl エラーのキャッシュ時間(秒単位、10 秒に設定)

適用方法

  1. Terraform のコードを修正し、CloudFront に custom_error_response を追加。
  2. terraform apply を実行して変更を適用。
  3. CloudFront のキャッシュをクリア(invalidate)して変更を反映。
terraform apply

キャッシュクリアを行う場合は、AWS CLI で以下のコマンドを実行してください。

aws cloudfront create-invalidation --distribution-id YOUR_DISTRIBUTION_ID --paths "/*"

まとめ

Terraform を使用して AWS CloudFront のカスタムエラーレスポンスを設定する方法を紹介しました。403 や 404 エラーが発生した際に index.html を表示することで、よりユーザーフレンドリーなエクスペリエンスを提供できます。

Terraform を活用すれば、インフラのコード管理が容易になり、再現性の高い環境を構築できます。

CloudFront のエラーページ設定を適用する際は、キャッシュのクリアも忘れずに行いましょう!

0
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
0
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?