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は複数のソースからの環境変数を処理します:
- 環境ファイル:
.env.production
と.env
ファイルからの変数。 - 設定:
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に以下のいずれかの方法でデプロイできます:
-
Wrangler CLI: Cloudflare公式のCLIツールを使って直接デプロイ
- CLIをインストール:
npm install -g wrangler
- 出力ディレクトリに移動:
cd .mastra/output
- Cloudflareアカウントにログイン:
wrangler login
- プレビュー環境にデプロイ:
wrangler deploy
- 本番環境へのデプロイ:
wrangler deploy --env production
- CLIをインストール:
-
Cloudflareダッシュボード: Cloudflareダッシュボードからビルド出力を手動でアップロード
出力ディレクトリ
.mastra/output
でwrangler dev
を実行することで、Mastraアプリケーションをローカルでテストすることもできます。