0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CloudFront経由でAmplifyとS3にアクセス

Last updated at Posted at 2025-02-28

目的

CloudFrontを利用して、パスの振り分けをやる。
今回は、移行中のWebサービスがあり、一部のパスをAWSアカウントAのAmplifyに他のパスをAWSアカウントBのALBに振り分ける。
またアカウントAにおいて、画像はS3で管理しており、画像はCloudFront経由で取得する。

この記事では、CloudFrontでAmplifyへの連携とS3アクセスの部分について触れる。

大事なポイントを3つ記載する↓

ビヘイビアのオリジンリクエストのHostヘッダー

Amplifyは内部にCloudFrontを持っているめ、CloudFront→Amplifyというアクセスの際、Hostヘッダーを送ると、自身からリクエストと勘違いしてループする。

これに対して2つの対応方法がある。

方法 詳細
HostヘッダーをAmplifyに送らない これは事例としていくつか見つかる。シンプルだが、Amplifyの中でリダイレクトなどがあると問題になる可能性があるらしい。ビヘイビアのオリジンリクエストポリシーで以下を選択するとできる。Managed-AllViewerExceptHostHeader
Hostヘッダーにオジリンのドメインで送る これはあまり情報がないのでリスクがあるかも?あまり記事がないが、カスタムヘッダーを用いるとできるっぽい?

キャッシュポリシー

Amplifyにも内蔵されたCloudFrontがあり、そこでもキャッシュは働いているはずなので、Amplify用のCloudFrontは、Managed-CachingDisabled としCloudFrontではキャッシュしないようにする。実際、CloudFrontを活用することでさらに細かい制御ができると思うが、まずはシンプルにということでこの方法を選んだ。

・その他
Amplify用のキャッシュポリシーで以下がある。

  • Managed-Amplify-StaticContent

  • Managed-Amplify-ImageOptimization
    ただしこれらは、キャッシュヘッダーとして Hostヘッダーが含まれている。

そのため、Hostヘッダーをオリジンリクエストで送るなら(Hostヘッダーにオジリンのドメインで送るを選択した場合)使えるがそうでない場合は使えない。
最終的にAmplifyオリジンを持つCloudFrontビヘイビアの設定は以下のようになる

image.png

マルチオリジンとシングルオリジン

今回、CloudFront経由にするのはAmplifyとS3。それをマルチオリジンかシングルオリジンとして扱うか。

マルチオリジンのケース(今回は採用しなかった)

1つのCloudFrontでAmplifyとS3をオリジンとして登録

→ビヘイビアに問題あり。画像はNext.jsの配下に/images/publicで存在するめ単純に /*.jpeg などでS3のオリジンに振り分けてしまうと、Next.jsの画像を見に行けなくなる。S3とNext.jsでパスを事前に分けておけば良いが、現時点でS3の構成を見直すのは影響が大きくなりそうなので避けたい。

シングルオリジン(こちらを採用)

二つのCloudFrontを作成

  • Amplifyをオリジンとして持つCloudFront
  • S3をオリジンとして持つCloudFront

CloudFrontは二つになるがシンプルになる。用途としてもAmplifyをオリジンとしてもつCloudFrontはあくまで振り分け用として使うことで分ける意味はありそう。

image.png

参考にした記事
https://www.skyarch.net/blog/cloudfront-amplify-%E6%A7%8B%E6%88%90%E3%81%A7%E3%81%AF-host-%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%82%92%E8%BB%A2%E9%80%81%E3%81%97%E3%81%A6%E3%81%AF%E3%81%84%E3%81%91%E3%81%AA%E3%81%84/

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?