AWSのCloudFront入れたらメールフォームが動かなくなったの、なぁぜなぁぜ?

2023/07/22 (土) - 00:00 Server

AWSEC2でメールフォームを構築しており正常に動いていたのですが、コンテンツ配信の高速化とSSL導入のためにCloudFrontを導入し、正常に動くようになったところまでは良かったのですが、肝心のメールフォームが動かなくなってしまいました。

今回はその解決の備忘録。

原因は、CloudFront経由でEC2(オリジン)にデータが通らなかったため

CloudFrontを導入すると、Webブラウザ→インターネット→CloudFront→EC2インスタンス(オリジン)と介してやり取りがなされます。CloudFrontのデフォルトだとセキュリティと高速化のため、CloudFront→EC2でPOSTパラメータが通らずメールフォームで不具合が起きていました。

そこでCloudFrontの設定を変更し、POSTパラメータを通るように設定します。まず、AWS マネジメントコンソールにログインしCloudFrontにアクセス。対象のディストリビューションを選択します。

[ビヘイビア]のタブをクリックし、[ビヘイビアを作成]ボタンをクリック。

AWS CloudFront ビヘイビアの設定

  • [パスパターン]で対象のパスを入力 例:/contact/*
  • [オリジンとオリジングループ]で対象先のEC2を選択
  • [ビューワープロトコルポリシー]はRedirect HTTP to HTTPSを選択

POSTパラメータを許可する

重要だったのがここで、HTTPメソッドでPOSTパラメータ等が許可されていなかったためでした。

AWS CloudFront ビヘイビアの設定

AWS CloudFront ビヘイビアの設定

  • [許可された HTTP メソッド]でGET, HEAD, OPTIONS, PUT, POST, PATCH, DELETEを選択
  • [キャッシュキーとオリジンリクエスト]でLegacy cache settingsを選択
  • ヘッダー:[すべて]クエリ文字列:[すべて]cookie:[すべて]を選択。

以上の設定を行い[ビヘイビアを作成]ボタンをクリックで完了。これでCloudFront経由でオリジンにパラメータが通るようになります。最後に動作チェックしたら正常にメールフォームが動くようになりました。設計時に構造を考えてから作らないとだめですねぇ。

おしまい

タグ:

記事をシェアする

  • facebookでシェアする
  • twitter(X)でシェアする
  • LINEでシェアする
  • はてなブックマークでシェアする
  • Pocketでシェアする
  • Pinterestでシェアする

トラックバック & ピンバック

この記事へのトラックバックURI
https://weblog.walk-life.me/aws_cloudfront_method/trackback/

コメント

コメントは下記からどうぞ

ページの先頭へ