0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CloudFrontとS3を使った静的サイトの公開方法

Posted at

この記事でやること

  • 静的ウェブサイトホスティングを使用せずにCloudFrontからS3上に配置した静的ページをを表示する方法について。
  • ドメインの紐付けまではしない。

自己紹介

  • 都内のDevOps系の企業でエンジニアをやっています。
  • 主にAWSとTerraformを扱っております。
  • フルリモートで勤務しております。
  • 大阪在住、年齢は27歳、趣味は古着屋巡りと映画鑑賞です。

静的ページの準備

静的サイトについては以下ページのサンプルページを使いたいと思います。
https://code-step.com/portfolio1-menu/

S3バケットの作成

まずは以下設定で作成します。

ごく普通のバケットの作成です。

Screenshot 2023-06-28 at 12.21.38.png
Screenshot 2023-06-28 at 12.19.36.png
Screenshot 2023-06-28 at 12.20.29.png

次に作成した静的コンテンツをS3バケット上にアップロードします。

Screenshot 2023-06-28 at 12.23.51.png

アップロードが完了しました。

Screenshot 2023-06-28 at 12.24.24.png

※現段階において静的コンテンツは公開されていません。

CloudFrontの設定

引き続きCloudFrontの設定をやっていきます。

[ディストリビューション]の作成を押下します。

Screenshot 2023-06-28 at 13.18.13.png

OAIを作成してCloudFrontからファイルアクセスできるようにします。

Screenshot 2023-06-28 at 13.18.41.png

ディストリビューション作成後、

S3のバケットポリシーを変更してCloudFrontディストリビューションからのアクセスを許可する必要があります。

CloudFront側でポリシーステートメントが用意されているのでそちらを使用していきます。

[ディストリビューション]→[オリジン]→[編集]

Screenshot 2023-06-28 at 14.10.32.png

編集画面の[ポリシーをコピー]を押下してください。

Screenshot 2023-06-28 at 14.12.40.png

バケットポリシーの更新

コピーしたポリシーステートメントをバケットポリシーに貼り付けてバケットポリシーを更新します。
以下がバケットポリシーです。

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "AllowCloudFrontServicePrincipal",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::static-sample-2023-0628/*",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceArn": "arn:aws:cloudfront::AccountID:distribution/DistributionID"
                }
            }
        }
    ]
}

CloudFrontからアクセス

ではCloudFrontのディストリビューションドメイン名からアクセスしてみましょう。

ドメイン名そのままアクセスしたらエラーがでました。

Screenshot 2023-06-28 at 14.37.13.png

/index.htmlを付ける必要がありました。。
Screenshot 2023-06-28 at 14.37.35.png

AWSではデフォルトルートパスを設定することが推奨されています。

[一般]→[編集]から

[デフォルトルートオブジェクト]に

index.htmlとします。

/index.htmlではないので要注意です。

Screenshot 2023-06-28 at 14.39.59.png

設定できました。

再度ドメイン名から確認してみましょう。

Screenshot 2023-06-28 at 14.40.40.png

ドメイン名だけでアクセスできることが確認できました。

以上がS3に格納した静的ファイルをCloudFront経由で閲覧する方法になります。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?