サイトアイコン IT & ライフハックブログ|学びと実践のためのアイデア集

Amazon S3とCloudFrontの使い分けと連携方法

AWS S3 Image

Amazon S3とAmazon CloudFrontは、同じAWSのサービスでも役割が違います。

S3はファイルを保管する場所であり、CloudFrontはそのファイルを利用者の近くから配信するための仕組みです。

画像、CSS、JavaScript、動画、ダウンロード用ファイルのような静的コンテンツを扱う場合、この2つを組み合わせると、保管、配信、アクセス制御を分けて設計しやすくなります。

まず押さえる役割の違い

S3とCloudFrontを同じ「配信の仕組み」として捉えると、設定の目的が見えにくくなります。

先に役割を分けると、構成を判断しやすくなります。

項目 Amazon S3 Amazon CloudFront
主な役割 ファイルやデータをオブジェクトとして保管する 利用者に近い配信拠点からコンテンツを届ける
向いている用途 画像、動画、ログ、静的ファイル、バックアップの保存 Webサイトの高速化、静的コンテンツ配信、ダウンロード配信
設計で見るポイント バケット、オブジェクト、権限、暗号化、保存期間 オリジン、キャッシュ、HTTPS、アクセス制御、無効化

Amazon S3とは

Amazon S3(Simple Storage Service)は、AWSが提供するオブジェクトストレージサービスです。

オブジェクトストレージとは、ファイル本体とメタデータをひとまとまりの「オブジェクト」として保存する方式です。

S3では、オブジェクトを「バケット」と呼ばれる入れ物に保存します。

そのため、画像、動画、Webサイトの静的ファイル、ログデータなど、種類の違うデータをまとめて扱いやすいのが特徴です。

S3の主な特徴

Amazon CloudFrontとは

Amazon CloudFrontは、AWSが提供するCDN(コンテンツ配信ネットワーク)です。

CDNは、利用者に近い配信拠点からコンテンツを返すことで、Webページやファイルの読み込みを速くする仕組みです。

CloudFrontでは、S3バケットやWebサーバーなどをオリジンとして指定します。

オリジンとは、配信する元データを置く場所のことです。

利用者がCloudFrontのURLや独自ドメインにアクセスすると、CloudFrontはキャッシュがあれば近い配信拠点から返し、なければオリジンから取得して配信します。

CloudFrontの主な特徴

S3とCloudFrontを組み合わせるメリット

S3だけでも静的ファイルを保存できますが、配信までS3に直接任せると、速度、キャッシュ、公開範囲の管理が単純になりすぎる場合があります。

CloudFrontを前段に置くと、保存場所と配信経路を分けて考えられます。

基本的な連携手順

実際の設定値はドメイン、公開範囲、更新頻度、セキュリティ要件によって変わります。

ここでは、S3に置いた静的ファイルをCloudFront経由で配信する基本の流れを整理します。

  1. S3バケットを作成する
    配信したいファイルを保存するバケットを作成します。バケット名は重複しない名前にし、公開する必要がない場合はパブリックアクセスを許可しない構成にします。
  2. ファイルをアップロードする
    画像、CSS、JavaScript、ダウンロード用ファイルなどをS3に置きます。ブラウザで正しく扱えるように、必要に応じてContent-Typeなどのメタデータも確認します。
  3. CloudFrontディストリビューションを作成する
    CloudFrontのオリジンとしてS3バケットを指定します。ディストリビューションは、CloudFrontがどこから取得し、どのように配信するかを定義する設定です。
  4. S3への直接アクセスを制限する
    S3を非公開にしたい場合は、CloudFrontからのアクセスだけを許可する設定を行います。現在の構成では、OAC(Origin Access Control)を使う方法が主な選択肢です。既存環境ではOAI(Origin Access Identity)を見かけることもありますが、新しく設計する場合はOACを前提に検討します。
  5. キャッシュポリシーを決める
    更新頻度の高いファイルは短めに、変更の少ない画像やライブラリファイルは長めにするなど、ファイルの性質ごとにキャッシュ期間を調整します。
  6. 独自ドメインとHTTPSを設定する
    必要に応じて独自ドメインをCloudFrontに割り当て、HTTPSで配信します。公開サイトで使う場合は、この段階で証明書とリダイレクト方針も確認します。

キャッシュ設計で失敗しやすい点

CloudFrontの効果は、キャッシュの設計に大きく左右されます。

すべてのファイルを同じ期間でキャッシュすると、更新した内容が反映されにくくなったり、逆にキャッシュの効果が薄くなったりします。

活用例

静的コンテンツ配信

Webサイトで使う画像、CSS、JavaScriptをS3に保存し、CloudFrontで配信します。

アクセスが集中しても、CloudFrontのキャッシュが効いていればS3へのアクセスを抑えやすく、ページの表示速度も安定しやすくなります。

動画や大きなファイルの配信

動画ファイルや資料ファイルをS3に置き、CloudFrontを通じて配信します。

利用者が世界中にいる場合でも、CloudFrontの配信拠点を使うことで、オリジンに直接取りに行くよりも安定した配信を設計しやすくなります。

セキュアなファイルダウンロード

S3バケットを直接公開せず、CloudFrontを入口にしてダウンロードを提供します。

HTTPS、OAC、必要に応じた署名付きURLなどを組み合わせることで、公開範囲を絞ったファイル配信を設計できます。

導入前に確認したいこと

要点

Amazon S3は、データを保管するためのオブジェクトストレージです。

Amazon CloudFrontは、そのデータを利用者に近い場所から配信するCDNです。

2つを組み合わせると、静的コンテンツ配信、ファイルダウンロード、動画配信などで、速度、セキュリティ、運用の分担を整理できます。

特にS3を直接公開しない構成では、CloudFrontからのアクセスだけを許可する設計と、キャッシュポリシーの確認が欠かせません。

モバイルバージョンを終了