初めに
S3 Bekcet
を非公開設定でCloudFront
静的サイトをDeployしました。
その備忘録となります。
今回はNuxtを使って公開をしてみました。
開発環境
node:16.17.1
Nuxt: 3.0.0
デプロイ&Web公開手順
Nuxt3のプロジェクト準備
-
まず初めにNuxtのプロジェクトを用意する必要があります。
依存関係をインストールしたのち、Buildが完了したら、http://localhost:3000/
に接続し、動作確認をします。$ npx nuxi init sample-nuxt3 $ npm i $ npm run dev
-
動作確認が完了したのち、プロジェクトをBuildします。
今回は静的ウェブサイトホスティングを行うため、以下のコマンドを使用します。$ npm run generate
dist
フォルダと以下ファイルが生成されます。
今回はこのフォルダ直下をS3にUploadし、CloudFrontにてWeb公開します。
AWS準備
-
続いて、[ディストリビューション]を作成します。
作成後、このディストリビューションのARN情報を使用します。 -
S3の[アクセス許可]=>[バケットポリシー]を編集します。
CloudFront
からS3 Bucket
にアクセスするために、以下の設定を行います。-
Resource
は作成したバケット名を入力します。 -
AWS:SourceArn
の部分が先ほど作成したディストリビューションのARN情報になります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCloudFrontServicePrincipalReadOnly", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::sample-nuxt3-deploy/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::528397217410:distribution/E36XXXXXXXXXXX" } } } ] }
-
-
最後に、
CloudFront
のディストリビューション > デフォルトルートオブジェクトを編集します。
index.html
と入力しましょう。
最後に
CloudFront
は一定まで無料で使用できますが、リクエスト数に応じて課金されます。
簡単にWeb公開ができますが、個人で公開する際は攻撃に気を付けましょう。
(とんでもない金額になった事例もあるようです)
記事の内容に間違いがありましたら連絡ください!