CloudFront ディストリビューションとオリジン
CloudFront ディストリビューションを作成し、S3 とカスタム HTTP オリジンを設定して、S3 のセキュリティにおける Origin Access Control を理解します。
「CloudFront ディストリビューションとオリジン」はCoddyKit上の無料Cloud & IT Cert Prepレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCloud & IT Cert Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
Amazon CloudFrontとは
Amazon CloudFrontは、90か国以上、400以上の都市に分散したエッジロケーションからコンテンツをキャッシュして配信する、AWSのグローバルContent Delivery Network(CDN)です。ユーザーがコンテンツをリクエストすると、CloudFrontは最寄りのエッジロケーションから配信するため、オリジンサーバーから取得する場合と比べてレイテンシーを大幅に削減できます。
CloudFrontは静的ファイル専用ではなく、動的コンテンツ、API、動画ストリーミングも高速化できます。S3、ALB、Lambda@Edge、WAF、ShieldなどのAWSサービスと統合できるため、最新のAWSアーキテクチャにおける標準的な配信レイヤーとなっています。
CloudFrontディストリビューション
CloudFrontディストリビューションは、主要な設定単位です。1つ以上のオリジン(コンテンツの保存場所)、キャッシュビヘイビア(異なるURLパスをどのようにキャッシュするか)、セキュリティ設定、料金クラスを定義します。コンテンツには、ディストリビューションのドメイン名(例:d1234abcdef.cloudfront.net)またはCNAMEレコードやALIASレコードを使用したカスタムドメイン(例:cdn.example.com)からアクセスします。
作成後、ディストリビューションがすべてのエッジロケーションにグローバル展開されるまで、10~15分かかります。既存のディストリビューションへの変更が反映されるまでにも数分かかります。従来は2種類のディストリビューションタイプがありましたが、現在はすべてのディストリビューションで統合された設定インターフェイスを使用します。
# Create a CloudFront distribution backed by S3
aws cloudfront create-distribution \
--distribution-config '{
"Origins": {
"Quantity": 1,
"Items": [{
"Id": "S3Origin",
"DomainName": "my-bucket.s3.amazonaws.com",
"S3OriginConfig": {"OriginAccessIdentity": ""}
}]
},
"DefaultCacheBehavior": {
"TargetOriginId": "S3Origin",
"ViewerProtocolPolicy": "redirect-to-https",
"CachePolicyId": "658327ea-f89d-4fab-a63d-7e88639e58f6"
},
"Enabled": true,
"Comment": "My S3 distribution",
"CallerReference": "2026-06-20-unique"
}'CloudFrontのオリジンとしてのS3
S3バケットをCloudFrontのオリジンとして使用することは、最も一般的なパターンの1つです。CloudFrontはS3からオブジェクトを取得してエッジロケーションにキャッシュし、以降のリクエストにはS3へ再度アクセスせずにキャッシュから応答します。これにより、S3のリクエスト料金を削減し、グローバルユーザーのレイテンシーを改善するとともに、S3からの帯域幅をオフロードできます。
S3をバックエンドとするサイトを配信するために、バケットをパブリックにする必要はありません。代わりに、Origin Access Identity(OAI)に代わる最新の仕組みであるOrigin Access Control(OAC)を使用します。OACにより、CloudFrontディストリビューションだけにバケットの読み取り権限を付与できるため、S3をプライベートに保ったまま、CloudFrontからコンテンツをパブリックに配信できます。
# S3 bucket policy granting OAC access to CloudFront
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': {
'Service': 'cloudfront.amazonaws.com'
},
'Action': 's3:GetObject',
'Resource': 'arn:aws:s3:::my-bucket/*',
'Condition': {
'StringEquals': {
'AWS:SourceArn': 'arn:aws:cloudfront::123456789:distribution/EDFDVBD6EXAMPLE'
}
}
}]
}カスタムHTTP/HTTPSオリジン
CloudFrontはカスタムオリジンにも対応しています。カスタムオリジンとは、インターネットからアクセスできる任意のHTTPまたはHTTPSサーバーで、EC2インスタンス、Application Load Balancer、API Gatewayエンドポイント、オンプレミスサーバーなどが該当します。カスタムオリジンを使用すると、静的ファイルだけでなく、動的アプリケーションやAPIもCloudFrontでキャッシュして高速化できます。
ALBをカスタムオリジンとして使用する場合は、セキュリティグループでCloudFrontのIP範囲からの接続だけを受け入れるようにALBを設定します。これにより、すべての外部トラフィックをCloudFront経由にでき、エッジでWAFルールの適用とTLS終端を行いながら、ALBをAWS内部に保てます。
Origin Access Control(OAC)とOAIの比較
Origin Access Identity(OAI)は、S3バケットへのアクセスをCloudFrontだけに制限するための従来の方法です。S3バケットポリシーで権限を付与する、CloudFront専用のユーザーIDです。OAIは現在も機能しますが、レガシーとみなされています。
Origin Access Control(OAC)は、その最新の代替機能です。OACはすべてのS3バケットタイプ(AWS ChinaリージョンのS3やSSE-KMSで暗号化されたバケットを含む)に対応し、IAMサービスプリンシパルによってより細かな制御を行えます。また、SigV4を使用してS3へのリクエストに自動署名します。新しいディストリビューションでは、必ずOAIではなくOACを使用してください。
ビューワープロトコルポリシー
ビューワープロトコルポリシーは、ユーザー(ビューワー)とエッジロケーション間の接続をCloudFrontがどのように処理するかを制御します。
- HTTP and HTTPS:両方を許可します。機密性の高いコンテンツには推奨されません
- Redirect HTTP to HTTPS:HTTPリクエストをHTTPSへ透過的にリダイレクトします。最も一般的な設定です
- HTTPS Only:HTTP接続を完全に拒否します。TLSを厳格に適用する場合に使用します
これとは別に、オリジンプロトコルポリシーは、CloudFrontからオリジンへの通信方法を制御します。HTTPのみ、HTTPSのみ、またはビューワーに一致のいずれかを指定できます。OACを使用するS3オリジンの場合、CloudFrontは常にHTTPSを使用します。
カスタムドメインと SSL/TLS 証明書
cdn.example.comからコンテンツを配信し、CloudFront のドメインを使用しない場合は、ディストリビューションに代替ドメイン名(CNAME)を設定し、AWS Certificate Manager(ACM)のSSL/TLS 証明書を関連付けます。ACM 証明書は、ディストリビューションがトラフィックを配信する場所に関係なく、us-east-1 リージョンに配置する必要があります。これは、CloudFront が us-east-1 から管理されるグローバルサービスであるためです。
Route 53 レコードは、CloudFront ディストリビューションのドメイン名を参照する ALIAS レコードとして作成します。CloudFront は、一致する SNI リクエストに対して証明書を自動的に提供します。
# Request a certificate in us-east-1 for CloudFront
aws acm request-certificate \
--domain-name cdn.example.com \
--validation-method DNS \
--region us-east-1料金クラス
CloudFront の料金クラスは、ディストリビューションの配信に使用するエッジロケーションを制御します。料金クラスが高いほど、より高コストのエッジロケーション(通常、帯域幅コストの高いリージョン)が含まれます。
- Price Class 100: 北米とヨーロッパのみ(最低コスト)
- Price Class 200: 北米、ヨーロッパ、アジア、中東、アフリカ
- Price Class All: 世界中のすべてのエッジロケーション(最高パフォーマンス、最高コスト)
社内ツールや、対象ユーザーが北米・ヨーロッパに限定されるサービスには Price Class 100 を使用します。世界中の消費者を対象とするアプリケーションには Price Class All を使用します。
オリジングループとフェイルオーバー
オリジングループを使用すると、CloudFront でオリジンのフェイルオーバーを実現できます。グループ内にプライマリオリジンとセカンダリオリジンを定義します。プライマリオリジンが特定の HTTP エラーコード(例: 500、502、503、504)を返した場合、CloudFront はセカンダリオリジンに対してリクエストを自動的に再試行します。
オリジンフェイルオーバーは、災害復旧に役立ちます。us-east-1 にプライマリ S3 バケットを保持し、us-west-2 にレプリケートされたバックアップをセカンダリオリジンとして配置します。S3 に障害が発生しても、DNS の変更なしで CloudFront が透過的にフェイルオーバーします。このパターンは、S3 Cross-Region Replication を補完します。
CloudFront アクセスログ
CloudFront はアクセスログを S3 バケットに配信できます。アクセスログには、すべてのビューワーリクエストについて、タイムスタンプ、エッジロケーション、ステータスコード、転送バイト数、キャッシュヒット/ミス、ユーザーエージェントなどの詳細が記録されます。ログは数分おきにまとめて配信されます。
アクセスログを使用すると、トラフィックパターンの分析、ホットスポットコンテンツの特定、セキュリティに関係するフィールド(IP、リファラー、ユーザーエージェント)の監査、キャッシュヒット率の測定ができます。x-edge-result-typeフィールドから、エッジでリクエストが Hit、Miss、RefreshHit のいずれであったかを確認できます。
# Enable access logging on a distribution
aws cloudfront update-distribution \
--id EDFDVBD6EXAMPLE \
--distribution-config '{
...existing config...
"Logging": {
"Enabled": true,
"Bucket": "my-logs-bucket.s3.amazonaws.com",
"Prefix": "cloudfront-logs/",
"IncludeCookies": false
}
}' \
--if-match ETVPDKIKX0DERエッジロケーションとリージョン別エッジキャッシュの比較
CloudFront には、2 層のキャッシュインフラストラクチャがあります。
- エッジロケーション: エンドユーザーの近くにある世界各地の数百の PoP。最小限のレイテンシーでキャッシュコンテンツを配信します
- Regional Edge Caches(REC): エッジロケーションとオリジンの間にある、13 個の大規模で長期間保持されるキャッシュ。小規模なエッジロケーションのキャッシュに保持されるほど人気のないコンテンツを配信します
エッジロケーションのキャッシュでミスが発生すると、CloudFront はオリジンまで直接アクセスする前に REC を確認します。REC は透過的に動作するため、直接設定する必要はありませんが、ロングテールコンテンツのキャッシュヒット率を大幅に向上させ、オリジンの負荷を軽減します。
クイックチェック
このレッスンで扱った AWS Solutions Architect(SAA-C03)の概念について、理解度を確認しましょう。
レッスンのまとめ
このレッスンでは、CloudFront ディストリビューションが世界各地のエッジロケーションでコンテンツをキャッシュすること、OAC によって S3 バケットを非公開にしたまま CloudFront からのアクセスを許可できること、そしてカスタムオリジンによって ALB、API Gateway、および任意の HTTP サーバーをサポートできることを学びました。CloudFront 用の ACM 証明書は us-east-1 でプロビジョニングする必要があります。次は、キャッシュビヘイビアと TTL 設定について学びます。
よくある質問
「CloudFront ディストリビューションとオリジン」レッスンは無料ですか?
はい。「CloudFront ディストリビューションとオリジン」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cloud & IT Cert Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cloud & IT Cert Prepコースには全4レッスンが含まれています。
「CloudFront ディストリビューションとオリジン」で何を学びますか?
CloudFront ディストリビューションを作成し、S3 とカスタム HTTP オリジンを設定して、S3 のセキュリティにおける Origin Access Control を理解します。 ブラウザで直接実行するハンズオンコードでCloud & IT Cert Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Cloud & IT Cert Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCloud & IT Cert Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「CloudFront ディストリビューションとオリジン」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCloud & IT Cert Prepレッスンでコードを書いて実行できますか?
はい。すべてのCloud & IT Cert Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- CloudFront ディストリビューションとオリジン
- キャッシュビヘイビアと TTL 設定
- 署名付き URL、署名付き Cookie、地理的制限
- WAF と Lambda@Edge を組み合わせた CloudFront