LoginSignup
9
5

More than 3 years have passed since last update.

はじめてのcloudfront

Posted at

勉強前のイメージ

サーバなしにwebサーバを表示するもの
オリジンサーバとかナントカあった気がするけど忘れた

調査

cloudfrontとは

Amazon CloudFrontとは、データや動画などwebコンテンツを配信するCDN(コンテンツデリバリーネットワーク)です。
全世界にあるエッジロケーションのネットワークを通じてコンテンツの配信が行われます。
世界にあるので、エッジロケーションのレイテンシーは確保され配信に関する遅延は少ない状態にあります。

cloudfrontを作ってみよう

構成

ユーザはcloudfrontを経由して、s3の静的コンテンツを見ることができます。

Untitled Diagram.drawio - diagrams.net 2020-12-12 13-16-47.png

s3にファイルを設置

  • S3バケットを作成

s3にバケットを作成します

S3 Management Console 2020-12-12 13-22-16.png

バケット名を適切に入力します。
ブロックパブリックアクセスのバケット設定はデフォルトのパブリックアクセスをすべてブロックにしておきます。
ほかの設定かもすべてデフォルトでバケットを作成します。

S3 Management Console 2020-12-12 13-24-05.png

バケットが作成できました

S3 Management Console 2020-12-12 13-27-19.png

  • ソースコードをアップロード

この、test-cloudfront-webserver-202012バケットに、以下のソースコードをアップロードします

index.html
<!doctype html>
<html lang="ja">
  <head>
  <meta charset="UTF-8">
  <title>Hello World</title>
</head>
<body>
  <p>Hello World</p>
</body>
</html>

アップロードされました

1S3 Management Console - Google Chrome 2020-12-12 1.png

cloudfrontのディストリビューションの設定

  • ディストリビューションを作成します

cloudfrontに移動しまして、Create Distribution でディストリビューションを作成します

1AWS CloudFront Management Console - Google Chrome .png

  • コンテンツの配信方法

今回はs3の静的ファイルを表示させるので、webで進めます。
下のRTMPは動画などに適しているらしいです

2AWS CloudFront Management Console - Google Chrome .png

  • ディストリビューションの設定

ディストリビューションの設定をします
はまらないように、Origin Domain Name だけきちんと記載します。
Origin Domain Name をクリックするといくつか選択肢が出てきます。
その中に、先ほど作成したs3のバケットも出てくるのでこちらをクリックします。
このままこれを適応してもよいのですが、CloudFrontのURLにアクセスしてもS3のURLにリダイレクトされる現象が起きたので(待てば解決するらしいです)、
デフォルトの選択肢では s3.amazonaws.com になるのですが、リージョン名を指定して書き換えることですぐにアクセスできるようになりました。

test-cloudfront-webserver-202012.s3.amazonaws.com

test-cloudfront-webserver-202012.s3 -ap-northeast-1 .amazonaws.com

6AWS CloudFront Management Console - Google Chrome .png

変更する箇所は

  • Origin Domain Name (詳細は上記に記載)
  • Restric Bucket Access : S3のURLではなくCloudFrontのURLを使用してコンテンツにアクセスさせる
  • Origin Access Identity : 上記の際にオリジンアクセスIDをオリジンに割り当てます
  • Comment (デフォルトで入る)
  • Grant Read Permissions on Bucket : cloudfrontがアクセスするs3バケットに自動的にアクセス許可を付与します

これでディストリビューションを作成します。

3AWS CloudFront Management Console - Google Chrome .png

Grant Read Permissions on Bucket を行うことで、
s3バケットのアクセス許可に以下のようなバケットポリシーが自動的に追加されます

7S3 Management Console - Google Chrome 2020-12-12 1.png

  • 作成完了

作ったばっかりでは status が In Progress となっていますが、 Deployed に変更されると準備が完了しました

14AWS CloudFront Management Console - Google Chrome.png

アクセスを行う

  • cloudfrontのドメイン名を確認

Domain Name に記載されてる xxxx.cloudfront.net がドメイン名です
この後ろに、s3バケットのファイル名、今回でいうと index.html を記載します。

54AWS CloudFront Management Console - Google Chrome.png

  • ブラウザでアクセス

無事、hello worldが表示されました。

44AWS CloudFront Management Console - Google Chrome.png

勉強後のイメージ

思ったより大変だった
s3のURLにリダイレクトされるところがめちゃくちゃハマった。
でも、はじめてのcloudfront表示できてよかった!!!
次は自分のドメインにcname書いて表示できたらもっといいね

参考

9
5
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
9
5