okuzawatsの日記

モバイルアプリケーション開発の沼💀

さくらのクラウドのウェブアクセラレータとオブジェクトストレージで静的サイトを配信する(HugoとGitHub Actionsを添えて)

書いている人

モバイルアプリケーションアーキテクトとして働いています。モバイルアプリケーションのアーキテクチャ、自動テスト、CI/CDに興味があります。


本ブログを「さくらのクラウド」のCDN、ウェブアクセラレータとストレージサービスのオブジェクトストレージを使って配信するようにしました。

元々はNetlifyを使っていて機能的には何の不満もなかったんですが、Netlifyが簡単すぎて物足りなくなってきたので、新たな環境にお引越ししました。お金はかかりますが。ついでにブログ(Hugo)の多言語化も対応しました(英語のみ。英語の記事はこれから頑張って書きます!)。また、オブジェクトストレージにファイルをアップロードするためにGitHub Actionsを使っています。

備忘を兼ねて、設定手順をメモしておきます。

オブジェクトストレージ

まずは元気にオブジェクトストレージのバケットを作成します。そんなに難しいことはないと思います。作成したら、GitHub Actionsを使ってファイルをアップロードするためのシークレットと、後述するウェブアクセラレータからオブジェクトストレージに繋ぐためのシークレットを追加しておきます。

GitHub Actionsで使う方のシークレットは、GitHubのリポジトリシークレットに入れておきます。GitHub Actionsのワークフローは、以下の記事を参考に書きました。

実際に使っているymlを一部記載するとこんな感じです。./path/to/hugo/public///your-bucket-here/ 、およびS3エンドポイントは各自の環境にあわせて修正してください。また、Hugoのセットアップには、peaceiris/actions-hugoを使用しています(いつもありがとうございます)。

jobs:
  upload:
    runs-on: ubuntu-latest
    steps:
      # 省略
      - name: setup Hugo
        uses: peaceiris/actions-hugo@v2
        with:
          hugo-version: '0.119.0'
      - name: build Hugo
        run: |
          cd ./path/to/hugo
          hugo --minify          
      - name: sync to object storage
        env:
          AWS_ACCESS_KEY_ID: ${{ secrets.SAKURA_ACCESS_KEY_ID }}
          AWS_SECRET_ACCESS_KEY: ${{ secrets.SAKURA_SECRET_ACCESS_KEY }}
          AWS_REGION: eu-west-1
        run: |
          aws --endpoint-url=https://s3.isk01.sakurastorage.jp s3 --only-show-errors --delete sync ./path/to/hugo/public/ s3://your-bucket-here/          

自分の理解が足らずにハマっていたんですが、AWS_REGION のところはオブジェクトストレージのコンソールに表示されている jp-north-1 のようなオブジェクトストレージのリージョンではないことに注意してください。

ウェブアクセラレータ

オブジェクトストレージへのアップロードができたら、次はウェブアクセラレータのサイトを作ります。ウェブアクセラレータでは、「独自ドメイン」形式と「サブドメイン」形式が選択できます。今回使いたいのは独自ドメイン形式です。本ブログはwwwなどのサブドメインのつかない、いわゆるネイキッドドメイン(APEXドメイン)で運用しているため、少し苦労しました。

ドメインの管理は他社から「さくらのドメイン」に移管しておいたのですが、「さくらのドメイン」のネームサーバではこの設定ができません(初期設定(独自ドメイン利用)を参照)。そのため、今回は「さくらのクラウドDNS」を使いました(後述)。

ウェブアクセラレータでサイトを作成後、独自ドメインの有効化をするために、移行前のNetlifyのダッシュボードからDNSにtxtレコードを追加しました。txtレコードの中身についてはウェブアクセラレータのコンソールに表示されるので、その指示に従います。これでウェブアクセラレータで独自ドメインのサイトを有効化できるようになります。

次に、ドメインの管理画面(自分の場合は「さくらのドメイン」)から、Whoisのネームサーバを「さくらのクラウド」のDNSに設定します。「さくらのクラウド」のコンソールから、グローバル > DNSと開くと設定値が書いてあります。あわせて、DNSゾーンを作成した上でリソースレコードを追加します。ここにALIASやらCNAMEやらを追加して、忘れずに「反映」します(「反映」ボタンが微妙にわかりにくいです)。

ウェブアクセラレータではLet’s Encryptを用いてSSL証明書を作ってくれるんですが、しばらく待たないと有効化できません。自分の場合は半日(12時間)ほど待つと有効化できるようになりました。「Let’s Encrypt 自動更新証明書を使用する(無料)」を選択して有効化します。

終わり

以上で完了です。体感にすると2週間くらいかけて移行作業をしていた気がするんですが、記事にすると短いですね。「さくらのクラウド」はコンソールが使いやすくて良かったです。サポートに問い合わせた時も丁寧に対応してもらえて、無事に移行が完了しました🎉

Reference

  1. ウェブアクセラレータ(最終アクセス日:2023年11月15日)
  2. オブジェクトストレージ(最終アクセス日:2023年11月15日)
  3. GitHub Actionsからさくらのクラウド オブジェクトストレージへアクセスする - Hateburo: kazeburo hatenablog(最終アクセス日:2023年11月15日)
  4. peaceiris/actions-hugo: GitHub Actions for Hugo ⚡️ Setup Hugo quickly and build your site fast. Hugo extended, Hugo Modules, Linux (Ubuntu), macOS, and Windows are supported.(最終アクセス日:2023年11月15日)
  5. 初期設定(独自ドメイン利用) | ウェブアクセラレータ | さくらのクラウド ドキュメント(最終アクセス日:2023年11月15日)
  6. DNS(アプライアンス) | さくらのクラウド ドキュメント(最終アクセス日:2023年11月15日)

Related