0
0

AWSのRoute53とCloudFrontとS3を使ってS3内の静的ページへアクセスしよう!

Posted at

概要

AWSのCloudFrontのディストリビューションまたはRoute53のドメインからアクセスする際にS3バケット内の静的ファイルが表示されるようにする設定方法について解説します

前提

  • Route53に自身のドメインを設定済み
  • ACMを発行済み(ただし、CloudFrontに設定する際はACMをバージニア北部(us-east-1)に発行する必要があります)

ドメインの設定については以下の記事がわかりやすかったのでまだ設定できていない方は以下の記事を参考にしてください

S3バケットの作成

静的ファイルを格納する用のS3バケットを作成します
今回はS3に直接アクセスしないのでバケットのブロックパブリックアクセス設定はブロックしても大丈夫です
パブリックアクセス以外の設定も今回はデフォルトのままで大丈夫です

スクリーンショット 2024-01-12 10.43.22.png

スクリーンショット 2024-01-12 10.44.03.png

バケット作成後に静的ファイルをアップロードします
今回はCloudFrontにデフォルトルートオブジェクトをindex.htmlを設定するのでindex.htmlを忘れずにアップロードします

スクリーンショット 2024-01-12 10.42.46.png

CloudFrontののディストリビューションの作成

CloudFrontを使用してコンテンツ配信する際はディストリビューションを作成します
ディストリビューションの作成方法について順番に説明します

オリジンの設定

CloudFrontがエッジロケーションを通じて配信するコンテンツのリクエストを送信するロケーションのことをオリジンといいます
今回はS3をオリジンに設定するので下記の画像のようにオリジンドメインを先ほど作成したS3バケットに設定します
次にOrigin Acccess Control(OAC)の設定を行います
OACを設定することで指定したCloudFrontのディストリビューションのみ対象のS3へのアクセスを許可することができるようになります
今回は新規でS3を作成したのでOACも新規で作成します

make_distribution.png

S3バケットの名前が入ったOAC名で作成します
オリジンタイプはS3に設定します

create_controll_settings.png

デフォルトのキャッシュビヘイビア

CloudFrontがリクエストをオリジンに対してどう扱うか(ビヘイビア)の設定を行います
今回は以下の画像のように設定します

スクリーンショット 2024-01-12 10.48.59.png

キャッシュキーとオリジンリクエスト

キャッシュポリシーはCachingOpitmizedに設定します
CloudFront がキャッシュキーに含める値を最小限に抑えることで、キャッシュ効率を最適化するように設計されているオプションです

スクリーンショット 2024-01-12 10.49.11.png

WAF

今回はWAFを作成していないので有効にしない、に設定しますが本番環境で使用する際は設定するようにしましょう

スクリーンショット 2024-01-12 10.51.18.png

SSLの設定

カスタムSSL証明書にバージニア北部リージョン(us-east-1)内に作成したSSL証明書を指定します

ssl.png

デフォルトルートオプション

デフォルトルートオプションにindex.htmlを指定します
スクリーンショット 2024-01-12 11.03.16.png

ディストリビューションの作成完了

以下のようにディストリビューションが作成されたら成功です

distribution_complete.png

また、S3バケットにCloudWatchへのアクセスを許可するためにバケットポリシーを付与する必要があります

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "AllowCloudFrontServicePrincipal",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::{バケット名}/*",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceArn": "arn:aws:cloudfront::{アカウントID}:distribution/{ディストリビューション名}"
                }
            }
        }
    ]
}

Route53の設定

Route53のAレコードのトラフィックのルーティング先に先ほど作成したCloudFrontのディストリビューションを指定します

route53.png

実際にディストリビューションとドメインからアクセスしてみよう!

以下のようにディストリビューションとドメインからアクセスした際にindex.htmlが表示されたら成功です

スクリーンショット 2024-01-12 11.02.03.png

参考

0
0
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
0
0