AstroCloudflareJavaScriptSaaS / FaaS

AstroでmicroCMSのコンテンツを利用したサイトを静的ビルド + Cloudflare Pagesにデプロイした話

最近Astroをよく使っている人に向けて、microCMSのデータを取得する方法を簡単にまとめました。まず、microCMSのAPIキーを取得し、環境変数に設定します。次に、microCMSのJS SDKを使って記事情報を取得するためのライブラリをインストールし、APIクライアントを作成します。作成したクライアントを使用して情報を取得して表示する処理を追加しましょう。また、Astroでのビルド・デプロイには、環境変数の扱いに注意が必要です。

広告ここから
広告ここまで

最近Astroをちょくちょく触っているので、microCMSのデータを使いたい時のやり方を簡単にまとめました。

microCMSのAPIキーを取得する

microCMSのAPIにアクセスするため、APIキーを取得しましょう。

取得はmicroCMSの管理画面から行えます。

取得後、環境変数に設定します。

.env

MICROCMS_API_KEY=XXXX

microCMSのJS SDKで記事情報を取得する

JS SDKと、環境変数に保存したAPIキーで記事情報を取得します。

まずはライブラリをインストールしましょう。

% npm i microcms-js-sdk

その後、APIクライアントを作成・exportするファイルを用意します。SSRやHybrid Renderingを利用する場合、すこし書き方が変わることに注意しましょう。SSRなどでの書き方は後日紹介します。

import { createClient } from 'microcms-js-sdk'

export const microCMSClient = process.env.MICROCMS_API_KEY
  ? createClient({
      serviceDomain: 'YOUR_DOMAIN_NAME',
      apiKey: process.env.MICROCMS_API_KEY as string,
    })
  : undefined

あとは作成したクライアントを利用して、情報を取得します。

ビルド時にだけ実行して欲しいので、—-のブロック内に書きましょう。

---
const { contents: events } = await microCMSClient.get({
    endpoint: 'events',
    queries: {
      limit: 20,
    },
})
---
<ul>
    {events.map(event => (
        <li>
            <span>{event.title}</span>    
        </li>
    ))}
</ul>

上手くいけば、npm run devnpm run buildで記事情報が取得できていることを確認できます。

GitHub Actionsでビルド・デプロイする場合、環境変数に注意しよう

Astroにはビルド・デプロイ用のGitHub Actionが公開されています。

https://github.com/withastro/action

が、環境変数の読み込みに対応していない様子のため、microCMSなどのAPIキーを安全に扱うには自前でコマンドを用意した方が良さそうです。

name: Deploy

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    name: Deploy
    steps:
      - uses: actions/checkout@v2

      - name: Setup Node
        uses: actions/setup-node@v3
        with:
          node-version: 16
          cache: yarn
      - name: Install
        shell: "bash"
        run: yarn install
      - name: Build
        shell: "bash"
        run: |
          MICROCMS_API_KEY=${{ secrets.MICROCMS_API_KEY }} yarn run build  
      - name: Publish
        uses: cloudflare/wrangler-action@2.0.0
        with:
          apiToken: ${{ secrets.CF_API_TOKEN }}
          accountId: ${{ secrets.CF_ACCOUNT_ID }}
          command: pages publish --project-name=${{ secrets.CF_PROJECT_NAME }} ./dist

Ref

  • https://docs.astro.build/en/guides/environment-variables/

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts