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?

さくらのクラウド オブジェクトストレージで静的Webサイトを建てる + ウェブアクセラレータ連携

0
Posted at

さくらのクラウド オブジェクトストレージでサーバーレスなWebサイトをホスティングしてみます。
おまけとしてさくらのクラウド ウェブアクセラレータ(CDN)を挟んでみます。

準備

自分のPCで準備するもの

  • 静的なWebサイト(HTML CSS JS等)

    • npmなら$ npm run builddistにファイルを生成しておく
  • awsコマンドの実行環境

    • s3 syncするため
    • バージョンに指定があるためインストール方法は後述

クラウド側に作成するリソース

  • オブジェクトストレージのバケット(月500円/1バケット ~)
  • ウェブアクセラレータ (条件付き無料)

1. バケット作成

参考)オブジェクトストレージ サービス基本情報 - Sakura Cloud Docs
  https://manual.sakura.ad.jp/cloud/objectstorage/about.html#

  • 石狩第一サイト(現在はこれしか無い)にバケットを作成してください

    • 作成時に表示されるアクセスキーとシークレットを控えておきましょう。AWS CLIセットアップで使用します
  • バケット名はWebサイトをホストするときのドメインに使用されます

    • バケット名.s3.isk01.sakurastorage.jp
  • プロジェクトを任意のディレクトリに保存したい場合はフォルダの作成でフォルダを作っておきます

今回はqiita-testというフォルダにアップロードします。

2. Webサイト作成

今回はnpmでReactを作成しました。静的なら何でも大丈夫です。
npm及びReactの使用方法は省略させていただきます。

$ npm create vite@latest qiita-test --template react

指示に従いnpm installを行いますが、ここでは紹介しません

バケットのルートディレクトリ以外に保存する予定ならパスの設定が必要です。
baseにフォルダ名を設定しておきます
この設定だとhttps://バケット名.s3.isk01.sakurastorage.jp/qiita-test/index.htmlになります

vite.config.ts
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

// https://vite.dev/config/
export default defineConfig({
  base: "/qiita-test/", //←デフォルトでは存在しないので追記
  plugins: [react()],
})

適当にWebサイトのコードを書いてビルド

$ npm run build

静的ファイルが生成されればOK

~/qiita-test$ tree dist/
dist/
├── assets
│   ├── index-BfqfN6cf.js
│   ├── index-D8b4DHJx.css
│   └── react-CHdo91hT.svg
├── index.html
└── vite.svg

作成はUbuntuで行いましたが、OSの指定はありません。

2. awsコマンドの用意

awsコマンドの実行環境を用意しオブジェクトストレージにファイルをアップロードします
ブラウザでアップロードしたりWinSCPを使ってもOK

紹介するコマンドはLinux仕様ですが、OSの指定はありません。
参考)過去にリリースされた AWS CLI バージョン 2 をインストールする - AWS
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-version.html

なお、さくらのクラウド オブジェクトストレージを操作するためには最新バージョンではなく、特定のバージョンのAWS CLIが必要です。
参考)【2025年4月17日追記】オブジェクトストレージ AWS CLI および AWS SDK ご利用できないバージョンのご案内 - さくらのクラウドニュース
https://cloud.sakura.ad.jp/news/2025/02/04/objectstorage_defectversion/

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.22.35.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install

初回のみAWS CLIのセットアップが必要です

$ aws configure
AWS Access Key ID: #オブジェクトストレージのアクセスキーを入力
AWS Secret Access Key: #オブジェクトストレージのシークレットを入力
Default region name: # 何も入力せずにEnter
Default output format: # お好みで設定 or 何もなくてもOKです

aws s3コマンドを使ってアクセスの確認をしておきます。
さくらのクラウド オブジェクトストレージをAWS CLIで操作するときの基本形は以下のとおりで、エンドポイントの指定が必要です。

$ aws --endpoint-url="https://s3.isk01.sakurastorage.jp" s3 操作

確認

# バケットの確認
$ aws --endpoint-url="https://s3.isk01.sakurastorage.jp" s3 ls s3://
# フォルダの確認
$ aws --endpoint-url="https://s3.isk01.sakurastorage.jp" s3 ls s3://バケット名/

3. 成果物をアップロード

awsコマンドを使って成果物(npmでbuildしたファイル)をアップロードします。
今回はdist/からs3://バケット名/qiita-test/です。

~/qiita-test$ aws --endpoint-url="https://s3.isk01.sakurastorage.jp" s3 sync dist/ s3://バケット名/qiita-test/ --acl public-read
upload: dist/vite.svg to s3://バケット名/qiita-test/vite.svg
upload: dist/assets/react-CHdo91hT.svg to s3://バケット名/qiita-test/assets/react-CHdo91hT.svg
upload: dist/assets/index-D8b4DHJx.css to s3://バケット名/qiita-test/assets/index-D8b4DHJx.css
upload: dist/index.html to s3://バケット名/qiita-test/index.html
upload: dist/assets/index-BfqfN6cf.js to s3://バケット名/qiita-test/assets/index-BfqfN6cf.js

--acl public-readオプションを設定すると認証なしでも外部から接続が可能になります。
オブジェクトストレージでWebサイトを公開する場合は--acl public-readが必要ですが、ウェブアクセラレータを利用する場合は必要ありません。

4. アクセスしてみよう

任意のブラウザで接続できます
URLの構成は次のとおりです。

https://バケット名.s3.isk01.sakurastorage.jp/フォルダ名/index.html

現在のところ、index.htmlの指定が必要です

おまけ ウェブアクセラレータ(CDN)を設定する

手順を紹介しようとしましたが、操作がシンプルな上に公式ドキュメントがありました。

参考)初期設定(オブジェクトストレージ・サブドメイン利用)
https://manual.sakura.ad.jp/cloud/webaccel/manual/settings-objectstorage-subdomain.html

参考サイト

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?