3
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 3 years have passed since last update.

【AWS】S3+CloudFrontでNuxt.jsから生成した静的HTMLを公開

Last updated at Posted at 2020-09-30

はじめに

こちらの記事は
S3ってよく聞くけどどうやって使うの?
CloudFrontを試しに使ってみたい!
というAWS初心者の方が対象です

大まかな流れ

Nuxtプロジェクトを新規作成
Nuxtの静的なHTMLを生成
S3にバケットを作成し静的HTMLファイルをアップロード
CloudFront経由でS3のHTMLにアクセス

ゴール

CloudFrontを経由して固定のURLでS3のファイルにアクセスすること

事前準備

  • AWSのアカウントを作成していること
  • npm5.2.0以降がインストールされていること

Nuxtプロジェクトを新規作成

任意のフォルダ内でNuxtプロジェクト作成コマンドを実行します。

npx create-nuxt-app nuxt-example

実行すると、プロジェクト名は何にする?プロジェクト概要は?のように質問してくれるので答えながら進めます。
細かな設定はこちらの記事を参考にしてください。
【Nuxt.js】create-nuxt-appのすすめ 〜create-nuxt-appの質問に負けたくないあなたへ〜

プロジェクト作成が完了するまで数分待ちます...

完了したらローカルで画面が表示されるかテストしましょう!
以下のコマンドを実行します。

npm run dev

ローカルホストにアクセスすると以下の画面が表示されることを確認してください
http://localhost:3000/
スクリーンショット 2020-09-29 15.54.16.png

これでNuxtプロジェクトが作成できました!

Nuxtの静的なHTMLを生成

Nuxtの既存機能を利用して静的なHTMLを生成します。

以下のコマンドを実行することで、静的なホスティングサイトにデプロイする準備が整ったものが全て入ったdistフォルダを作成します。

npm run generate 

実行が完了すると/distフォルダが自動生成され、静的なHTMLが出力されました。

S3にバケットを作成し静的HTMLファイルをアップロード

続いて、S3のバケットを作成します。
AWSのサービスからS3を選択してアクセスします。

トップの一覧の左上のバケットを作成するボタンを押してください。
スクリーンショット 2020-09-30 16.40.30.png

お好きなバケット名を入力して左下の作成ボタンを押下するとバケットが作成されます。
スクリーンショット 2020-09-30 16.46.08.png

今回はnuxt-example-1という名前でバケットを作成しました。

次に作成したバケットに前章で作成したNuxtの静的なHTMLをアップロードします。

作成したバケットにアクセスしてください。
アップロードボタンを押下し、ドラッグ&ドロップで先ほど作成したdistフォルダの中のファイルを全てアップロードしてください。
スクリーンショット 2020-09-30 16.52.10.png

以上でS3にバケットを作成し、静的なHTMLファイルのアップロードが完了しました!

試しにアップロードされたindex.htmlをダブルクリックして開いてみてください。
Nuxtのトップ画面が表示されるはずです。

CloudFront経由でS3のHTMLにアクセス

前章までで、静的なHTMLファイルをS3にアップロードができました。
しかし、NuxtのトップページのURLがS3のURLになっております。
次はCloudFrontを利用してこのアップロードしたファイルを固定のURLでアクセスできるようにします。

AWSのサービスからCloudFrontを検索しアクセスします。

トップ左上のCreateDistributionをクリックし、WebのGetStartを選択して新規のCloudFrontを作成していきます。
スクリーンショット 2020-09-30 17.08.37.png

今回は細かな設定はしません。以下の項目に各値を入力して作成をしてください。

Original Domain Name: 前章で作成したS3バケットを選択
Restrict Bucket Access: Yes
Origin Access Identity: Create a New Identity
Grant Read Permissions on Bucket: Yes,Update Bucket Policy
Viewer Protocol Policy: Redirect HTTP to HTTPS
Default Root Object: index.html

これでCloudFrontが作成できました。
早速CloudFront経由でS3にアクセスしてみましょう!

CloudFrontトップから今作成したCloudFrontのDomain Nameをコピーし
https://(コピーしたDomain Name)/
にアクセスしてください。
例)https://xxxxxxxxxxxxxx.cloudfront.net/

スクリーンショット 2020-09-29 15.54.16.png

無事にNuxtのトップページが表示されました!!

参考

S3 と CloudFront を使用して AWS へデプロイするには?
S3+CloudFrondでNuxt.js(vue)のHTTPS静的サイトを構築・デプロイ
Nuxt.js で作成した静的サイトを S3 + CloudFront でホスティングするパターン

3
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
3
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?