LoginSignup
6

posted at

S3とCloudFrontを使ってWEBサイトを公開する

目的

  1. 自分用の手順書として、とりあえず設定内容だけ記載していく
  2. 後々「なぜその設定にしたか」など、加筆して知識を深める

流れ

  1. S3でとりあえず静的WEBホスティングを使ってHello Worldする
  2. S3の設定を変更し、CloudFrontを使ってCDN配信する

1. S3でとりあえず静的WEBホスティングを使ってHello Worldする

バケットを作成し、オブジェクトにindex.htmlをアップロードする

バケット(フォルダ)を作ってオブジェクト(ファイル)を格納するような流れです。

AWSアカウントの作成などは終えているものとします。

① バケットの作成

  • S3と検索し「バケットを作成」をクリック。
  • バケット名:全世界で被ってはいけないのでユニークなものを入れましょう。
    私は"sample-qiita-220502"というものを作りました。
  • AWSリージョン:私は東京リージョンを指定します。

スクリーンショット 2022-05-02 9.50.29.png

  • その他の設定は一旦無視し、一番下までスクロールして「バケットを作成」をクリック。

これでバケットができました。

②オブジェクトの作成

  • 事前に、オブジェクトとしてアップロードしておきたい"index.html"というファイルを作っておきます。
    Hello Worldするだけのもの↓

<html><h1>hello world!</h1></html>

  • バケットに戻り、バケット名をクリックします。
  • オブジェクトメニューの「アップロード」をクリック。
    スクリーンショット 2022-05-02 9.54.50.png
  • 「ファイルを追加」をクリックし、先ほど作った"index.html"を選択してアップしましょう。

これでバケットにオブジェクトのアップロードができました。
まだInternetに公開されていませんので、公開していきましょう!

静的ウェブホスティングを有効化する
  • 「バケット」の「オブジェクト」メニュー横の「プロパティ」をクリック
    スクリーンショット 2022-05-02 10.09.37.png

  • 下までスクロールすると「静的ウェブサイトホスティング」があるので「編集」をクリック
    スクリーンショット 2022-05-02 10.09.14.png

  • 以下設定にする

    • 静的ウェブサイトホスティング:有効にする
    • ホスティングタイプ:静的ウェブサイトをホストする
    • インデックスドキュメント:index.htmlと入力
  • 変更の保存をクリック

アクセス権限を変更する(①ブロックパブリックアクセス、②バケットポリシー)

最後に、アクセス権限を変更していきます。

S3はデフォルトではURL公開されないようになっています。

①ブロックパブリックアクセスの変更

  • バケットを選択した状態で「アクセス許可」メニューを選びます。
    スクリーンショット 2022-05-02 10.19.42.png

  • 「ブロックパブリックアクセス」の編集ボタンをクリックします。

  • 以下のように設定内容を変更し「変更を保存」をクリックします。
    スクリーンショット 2022-05-02 10.21.01.png

これで①ブロックパブリックアクセスの変更は完了です。

②バケットポリシーの変更

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::Bucket-Name/*"
            ]
        }
    ]
}
  • その上で、"Resource"内のBucket-Nameと書いてある箇所を自分で作ったバケット名に書き換えましょう。
    スクリーンショット 2022-05-02 10.35.30.png

  • 「変更の保存」をクリック。

以上で、バケットポリシーの設定変更は完了です。
うまくいけば、以下のようにバケットが公開されている状態になります。
スクリーンショット 2022-05-02 10.37.47.png

確認してみましょう!
  • バケットからオブジェクト"index.html"をクリック
  • オブジェクトURLを別タブでクリックするとhelloworldされているはずです!
    スクリーンショット 2022-05-02 10.49.03.png

2. CloudFrontを使ってCDN配信する

S3を設定する
  • 先ほど行った公開設定やらスタティックWEBホスティング設定やらをOFFに変えていきます
    • ブロックパブリックアクセスを以下設定に変更。
      スクリーンショット 2022-05-02 10.40.05.png

    • バケットポリシーを吹っ飛ばす。
      スクリーンショット 2022-05-02 10.40.28.png

    • スタティックウェブホスティングをOFFにする。

      • 静的スタティックウェブホスティング:無効にする
      • スクリーンショット 2022-05-02 10.44.11.png

これでS3にアクセスできなくなりました。オブジェクトURLを開き、確認してみましょう。

CloudFrontを設定する
  • "CloudFront"に移動し、「cloudfrontディストリビューションを作成する」をクリック。各種設定をしていきましょう。

  • まずは"オリジン"の設定から。

    • オリジンドメイン:選択式なので、先ほど作ったS3バケット名を指定しましょう
    • S3バケットアクセス: 「はい、OAIを使用します」を選択
      • オリジンアクセスアイデンティティ:「新しいOAIを作成」をクリックすると自動的に作成されます。
        スクリーンショット 2022-05-02 10.58.10.png
      • バケットポリシー:「はい、バケットポリシーを自動で更新します」を選択
        • これをやると、CloudFrontのデストリビューションを作った後、S3側でバケットポリシーを勝手に変更してくれます。
    • 上記設定を完了すると以下のようになります。
      スクリーンショット 2022-05-02 10.58.39.png
  • 続いて、 "デフォルトのキャッシュビヘイビア"について設定します!

    • ビューワープロトコルポリシー:Redirect HTTP to HTTPS
      ※ httpでアクセスされたらhttpsでリダイレクトする
      スクリーンショット 2022-05-02 11.04.40.png
  • 最後に"設定"項目について一つ設定します。

    • デフォルトルートオブジェクト:index.htmlと入力
      スクリーンショット 2022-05-02 11.05.00.png

「ディストリビューションを作成」をクリックすると作成が開始されま...できました。早かった。
スクリーンショット 2022-05-02 11.08.55.png

アクセスできるか試す

cloudFrontのドメイン名をブラウザに入力します
これです
スクリーンショット 2022-05-02 11.12.39.png

無事helloworldできました!
スクリーンショット 2022-05-02 11.13.35.png

一応、S3側で公開設定がOFFになっていることと、バケットポリシーがちゃんと更新されていることを確認しました!
(時間の都合上割愛します)

以上です。ご覧いただきありがとうございました。

参考

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
What you can do with signing up
6