CloudFrontで S3のコンテンツを配布する

2021.07.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon CloudFrontについて

Amazon CloudFrontはコンテンツ配信ネットワーク(CDN)サービスです。コンテンツが分散してエッジにキャッシュされるため、読み取りパフォーマンスが向上します。CloudFrontはDDoS保護を提供し、ShieldとAWS Web application firewallと統合できます。データとアプリケーションとAPIを高速かつ低遅延でグローバルに配信します。

CloudFront Origins

S3 Bucket

CloudFrontは、S3のコンテンツをグローバルに配信して、エッジロケーションにキャッシュするために使用されます。S3でCloudFrontを使用 すると、S3バケットのレイテンシーとロードが軽減されます。CloudFrontは Origin Access Identity(OAI)でセキュリティを強化します。 OAIにより、S3バケットはCloudFrontを介したコミュニケーションのみを許可できます。CloudFrontを使用して、ファイルをS3にアップロードすることもできます。

 

 

カスタムオリジン(HTTP endpoint )

カスタムオリジンは、HTTPエンドポイントである必要があります。カスタムオリジンには、Application Load Balancer、EC2インスタンス、Static S3ウェブサイト、または任意のHTTPバックエンドを使用できます。下の図は、EC2とALBをオリジンとするCloudFrontを表しています。

 

 

CloudFront キャッシング

キャッシングはエッジロケーションで行われます。キャッシングは、ヘッダーバリュー、セッションクッキー、またはクエリストリングパラメータに 基づいて行うことができます。TTLとヘッダーを使用してキャッシュヒットレートを最大化することで、オリジンへのリクエスト数を最小化できます。 Static Distributionとdynamic distribution を分けることで、キャッシュヒットを最大化することができます。ダイナミックキャッシングでは、 ヘッダーとセッションキャッシングのルールを使用しますが、スタティックキャッシングでは、静的なコンテンツをキャッシングするためのルール は必要ありません。

 

OAIを使用したS3のCloudFront Distributionの作成

1. デフォルト設定で一意の名前を付けてS3バケットを作成して、ファイルをバケットにアップロードします。このS3バケットにIndex.html ファイルをアップロードしました。バケット内のファイルは公開されません。

 

 

2. CloudFront Distributionの作成

  • CloudFront Consoleを開いて、[CreateDistribution]をクリックしてください。
  • S3バケットをオリジンドメインとして選択してください
  • S3バケットアクセスに「yes use OAI」を選択して、『create new OAI』をクリックしてください。
  • Bucket policy updateには『yes』と選択してください
  • 『Create Distribution 』をクリックしてください。

 

 

3. OAIを使用してCloudFrontを作成すると、S3バケットポリシーが自動的に作成されます。このポリシーにより、S3バケットはクラウドフロント を介したコミュニケーションのみを許可できます。

 

4. CloudFront DistributionのDomain nameとS3のファイル名を使用して、S3のファイルをアクセスすることができます。

Domain-name-of-the-cloudfront-distribution/file-name

まとめ

CloudFrontとS3での実装について見てきました。CloudFrontは、edge locationsのコンテンツの配信とキャッシュのための重要なサービスです。CloudFrontはセキュリティ保護を提供し、コンテンツを高速に配信します。CloudFrontには多くの機能があり、便利なサービスと なっています。