Skip to Content

CloudflareDeployer

CloudflareDeployerは、MastraアプリケーションをCloudflare Workersにデプロイし、設定、環境変数、ルート管理を処理します。抽象Deployerクラスを拡張して、Cloudflare固有のデプロイ機能を提供します。

使用例

import { Mastra } from "@mastra/core"; import { CloudflareDeployer } from "@mastra/deployer-cloudflare"; const mastra = new Mastra({ deployer: new CloudflareDeployer({ scope: "your-account-id", projectName: "your-project-name", routes: [ { pattern: "example.com/*", zone_name: "example.com", custom_domain: true, }, ], workerNamespace: "your-namespace", auth: { apiToken: "your-api-token", apiEmail: "your-email", }, d1Databases: [ { binding: "binding-name", database_name: "database-name", database_id: "database-id", }, ], kvNamespaces: [ { binding: "binding-name", id: "namespace-id", }, ], }), // ... other Mastra configuration options });

パラメータ

コンストラクタパラメータ

scope:

string
あなたのCloudflareアカウントID。

projectName?:

string
= 'mastra'
ワーカープロジェクトの名前。

routes?:

CFRoute[]
ワーカーのルート設定の配列。

workerNamespace?:

string
ワーカーの名前空間。

env?:

Record<string, any>
ワーカー設定に含める環境変数。

auth:

object
Cloudflare認証の詳細。

d1Databases?:

D1DatabaseBinding[]
ワーカーのD1データベースバインディングの配列。

kvNamespaces?:

KVNamespaceBinding[]
ワーカーのKV名前空間バインディングの配列。

authオブジェクト

apiToken:

string
あなたのCloudflare APIトークン。

apiEmail?:

string
あなたのCloudflareアカウントのメールアドレス。

CFRouteオブジェクト

pattern:

string
マッチするURLパターン(例:'example.com/*')。

zone_name:

string
ドメインゾーン名。

custom_domain?:

boolean
= false
カスタムドメインを使用するかどうか。

D1DatabaseBindingオブジェクト

binding:

string
Workerコードで使用される名前(例:`env.testdb`)。

database_name:

string
人間が読める名前(ダッシュボード用)。

database_id:

string
Cloudflare D1データベースID。

preview_database_id?:

string
プレビューデプロイメント用。

KVNamespaceBindingオブジェクト

binding:

string
Workerコードで使用される名前(例:`env.test_namespace`)。

id:

string
Cloudflare KV名前空間ID。

環境変数

CloudflareDeployerは複数のソースからの環境変数を処理します:

  1. 環境ファイル: .env.production.envファイルからの変数。
  2. 設定: envパラメータを通じて渡される変数。

Mastraプロジェクトのリント

Mastraプロジェクトをリントして、ビルドに問題がないことを確認します

npx mastra lint

Mastraプロジェクトのビルド

Cloudflareへのデプロイ用にMastraプロジェクトをビルドするには、以下の手順を実行します:

npx mastra build

ビルドプロセスにより、.mastra/outputディレクトリに次のような出力構造が生成されます:

.mastra/output/ ├── index.mjs # メインワーカーのエントリーポイント ├── wrangler.json # Cloudflare Workerの設定ファイル └── assets/ # 静的アセットおよび依存ファイル

Wranglerの設定

CloudflareDeployerは、以下の設定を含むwrangler.json設定ファイルを自動生成します:

{ "name": "your-project-name", "main": "./output/index.mjs", "compatibility_date": "2024-12-02", "compatibility_flags": [ "nodejs_compat", "nodejs_compat_populate_process_env" ], "observability": { "logs": { "enabled": true } }, "vars": { // .envファイルや設定からの環境変数 }, "routes": [ // 指定されていればルート設定 ], "d1_databases": [ // 指定されていればD1データベースバインディング ], "kv_namespaces": [ // 指定されていればKVネームスペースバインディング ] }

互換性フラグ:

  • nodejs_compat: WorkersでNode.js互換性を有効にします。
  • nodejs_compat_populate_process_env: varsからの変数でprocess.envを設定します。

ルート設定

ルートは、URLパターンやドメインに基づいてトラフィックをワーカーに振り分けるよう設定できます:

const routes = [ { pattern: "api.example.com/*", zone_name: "example.com", custom_domain: true, }, { pattern: "example.com/api/*", zone_name: "example.com", }, ];

デプロイメントオプション

ビルド後、Mastraアプリケーションの .mastra/output をCloudflare Workersに以下のいずれかの方法でデプロイできます:

  1. Wrangler CLI: Cloudflare公式のCLIツールを使って直接デプロイ

    • CLIをインストール: npm install -g wrangler
    • 出力ディレクトリに移動: cd .mastra/output
    • Cloudflareアカウントにログイン: wrangler login
    • プレビュー環境にデプロイ: wrangler deploy
    • 本番環境へのデプロイ: wrangler deploy --env production
  2. Cloudflareダッシュボード: Cloudflareダッシュボードからビルド出力を手動でアップロード

出力ディレクトリ .mastra/outputwrangler dev を実行することで、Mastraアプリケーションをローカルでテストすることもできます。

プラットフォームドキュメント