Mastra Cloud から Mastra platform へ移行する
Mastra platform は、Mastra Cloud を独立した Studio 製品と Server 製品、CLI 主導のデプロイ、新しい Observability システムに置き換えます。このガイドでは、各移行手順を説明します。
変更点変更点への直接リンク
| 領域 | Mastra Cloud | Mastra platform |
|---|---|---|
| 製品 | 単一プロジェクト | 独立した Studio と Server |
| デプロイ | Push 時に自動デプロイ | CLI 主導(mastra studio deploy、mastra server deploy) |
| プロジェクト作成 | GitHub から import | 初回デプロイ時に CLI がプロジェクトを作成 |
| Storage | マネージド LibSQL(Cloud Store)またはユーザー管理 | ユーザーがホストするデータベース |
| Observability | Logger ベース | Exporter を使用する Observability クラス |
| 環境変数 | プロジェクトのセットアップ時に設定 | 初回デプロイ時に .env から初期設定し、以降は Dashboard で管理 |
| URL | 単一 URL | Studio と Server で別々の URL |
始める前に始める前にへの直接リンク
CLI をインストールまたは更新します。
- npm
- pnpm
- Yarn
- Bun
npm install -g mastra@latestpnpm add -g mastra@latestyarn global add mastra@latestbun add --global mastra@latest認証します。
mastra auth loginプロジェクトをローカルでビルドできることを確認します。
mastra build
Mastra Cloud Store をホスト型データベースに置き換えるMastra Cloud Store をホスト型データベースに置き換えるへの直接リンク
Mastra Cloud は、Turso を基盤とするマネージド libSQL データベースを提供していました。Mastra platform はデータベースをホストしないため、外部でホストするインスタンスを Storage に指定する必要があります。
すでにホスト型データベースを使用していた場合は、既存のデータベース設定を維持してください。接続文字列はハードコードせず、Dashboard の環境変数として設定します。
Cloud Store を使用していた場合は、以下の手順でデータを export し、ユーザーが管理する新しい libSQL データベースへ読み込みます。
Cloud Store のデータを export するCloud Store のデータを export するへの直接リンク
Cloud Store のデータを export する方法は 2 つあります。Dashboard からダウンロードするか、Turso CLI で手動 Dump を作成します。
方法 A:Dashboard から export する(推奨)方法 A:Dashboard から export する(推奨)への直接リンク
Mastra Dashboard でプロジェクトを開き、Runtime → Settings → Storage へ移動します。Export Database ボタンをクリックします。Dashboard が Cloud Store 全体の .sql Dump を生成し、Downloads フォルダーへ直接ダウンロードします。
ダウンロードが完了したら、Dump を SQLite データベースファイルへ変換します。
sqlite3 mydb.db < ~/Downloads/mastra-cloud-dump.sql
これで、ローカルでの確認やバックアップが可能で、以降の手順で新しいデータベースのソースとして使用できる、ポータブルな mydb.db ファイルが作成されます。
方法 B:Turso CLI で export する方法 B:Turso CLI で export するへの直接リンク
コマンドラインで作業する場合や export をスクリプト化する場合は、Turso CLI でデータベースを直接 Dump できます。この方法には、Dashboard に表示されるデータベース URL と Auth Token が必要です。
Dashboard から Cloud Store の認証情報を取得します。
Mastra Dashboard でプロジェクトを開き、Runtime → Settings → Env Variables へ移動します。Cloud Store を使用するプロジェクトでは、ユーザーの変数とともに以下の 2 つが追加されています。
MASTRA_STORAGE_URL:libSQL 接続文字列(例:libsql://<db-name>-<org>.turso.io)。MASTRA_STORAGE_AUTH_TOKEN:そのデータベースに限定された、読み取り可能な Auth Token。
各行では、目のアイコンによる表示/非表示、Edit、Delete、Copy Value という標準の環境変数操作を使用できます。Copy Value で両方の値をコピーし、以下の Dump コマンドに使用します。
注記これらの変数は、Cloud Store がプロビジョニングされたプロジェクトにのみ表示されます。Mastra Cloud でユーザー管理のデータベースを使用していた場合は、すでにこれらの認証情報があるため、Mastra アプリで新しいデータベースを使用するへ進んでください。
情報変数がない、値を復号できない、または Turso CLI が Token を拒否する場合は、Mastra Cloud アカウントに関連付けられたアドレスから support@mastra.ai へメールを送り、export するプロジェクトの libSQL URL と Auth Token を依頼してください。プロジェクト名/ID も記載します。ネットワーク上で CLI アクセスがブロックされる場合は、Support に Dump の実行を依頼することもできます。
Turso CLI をインストールします。
macOSbrew install tursodatabase/tap/tursoLinux / WSLcurl -sSfL https://get.tur.so/install.sh | bashWindows と Headless Install のオプションについては、Turso CLI の概要を参照してください。
データベースを SQL Dump へ export します。
Support から提供された認証情報(または先ほど Dashboard からコピーした値)を環境変数として設定し、データベースをローカルファイルへ Dump します。Dashboard から URL をコピーした場合は、
libsql://Scheme をhttps://に置き換えてください。Auth Token とともに URL を渡す場合、Turso CLI は HTTPS 形式を要求します。export MASTRA_STORAGE_URL="https://<db-name>-<org>.turso.io"export MASTRA_STORAGE_AUTH_TOKEN="<token-from-dashboard-or-support>"turso db shell "$MASTRA_STORAGE_URL?authToken=$MASTRA_STORAGE_AUTH_TOKEN" ".dump" > mastra-cloud-dump.sql警告Auth Token を接続文字列に埋め込む方法は、Turso が推奨するパターンより安全性が低くなります。Token を含む完全な URL が Shell History、Process List、Terminal Log に残る可能性があります。Turso は、
turso auth loginを実行してから、データベース名のみでturso db shell <database-name> ".dump" > mastra-cloud-dump.sqlを実行する方法を公式に推奨しています。この手順ではユーザー所有の Turso アカウントにデータベースが存在する必要がありますが、Cloud Store は該当しないため、上記の環境変数を使う例を今回限りの export 手段として示しています。Token の展開自体を避ける場合は、Support に Dump の実行を依頼し、生成された SQL ファイルを送付してもらってください。生成された
mastra-cloud-dump.sqlには、Thread と Message の履歴、Workflow Snapshot、Trace、Eval Score など、完全なスキーマとデータが含まれます。続行する前に安全な場所へ保管してください。
Dump を新しい libSQL データベースへ読み込むDump を新しい libSQL データベースへ読み込むへの直接リンク
Dump は標準の SQL ファイルで、libSQL 互換の任意のデータベースへ読み込めます。以下の例では、新しい Turso ホスト型データベースを使用します。移行前後の構成を同等に保ち、スキーマ変換を避けられます。
ユーザー自身の Turso アカウントで Turso CLI を認証します。
turso auth loginTurso アカウントがない場合は、CLI に作成を求められます。プランの詳細は Turso の料金を参照してください。
新しいデータベースを作成し、1 回の操作で Dump を読み込みます。
turso db create mastra-migrated --from-dump ./mastra-cloud-dump.sql--from-dumpは作成時にローカルの SQLite/libSQL Dump を復元します。後からturso db shellへ Statement を Pipe するより高速で安全です。Latency を最小限に抑えるため、Mastra Server の実行場所に近い Region を選択してください。利用可能な Region はturso db locationsで一覧表示できます。複数の Group を管理する場合は--group <group-name>を指定します。数 GB の Dump では
--waitを追加し、データベースが完全に利用可能になるまで CLI を待機させます。新しいデータベースの接続認証情報を生成します。
turso db show mastra-migrated --urlturso db tokens create mastra-migrated最初のコマンドは libSQL URL、2 番目のコマンドは Auth Token を出力します。
LibSQLStoreには両方が必要です。
Mastra アプリで新しいデータベースを使用するMastra アプリで新しいデータベースを使用するへの直接リンク
新しい認証情報を、ローカルの .env または Mastra platform Dashboard の環境変数として設定します。
TURSO_DATABASE_URL="libsql://mastra-migrated-<org>.turso.io"
TURSO_AUTH_TOKEN="<token-from-turso-db-tokens-create>"
これらの変数を読み取るよう LibSQLStore を設定します。
import { Mastra } from '@mastra/core/mastra'
import { LibSQLStore } from '@mastra/libsql'
export const mastra = new Mastra({
storage: new LibSQLStore({
id: 'libsql-storage',
url: process.env.TURSO_DATABASE_URL!,
authToken: process.env.TURSO_AUTH_TOKEN,
}),
})
すべてのオプションについては、libSQL Storage リファレンスを参照してください。
移行を確認する移行を確認するへの直接リンク
Cloud プロジェクトを停止する前に、新しいデータベースからアプリが必要とするデータを取得できることを確認します。
turso db shell mastra-migrated "SELECT name FROM sqlite_master WHERE type='table';"を実行してテーブルを一覧表示します。出力には Mastra 管理のテーブル(mastra_threads、mastra_messages、mastra_workflow_snapshot、mastra_tracesなど)が含まれている必要があります。- データが存在する既知のテーブルで行数を取得します。たとえば
turso db shell mastra-migrated "SELECT COUNT(*) FROM mastra_messages;"を実行し、Cloud Store URL に対して同じクエリを実行した結果と比較します。 - 新しい認証情報で Mastra アプリを起動し、既存の Thread または Workflow Run が Studio で想定どおり読み込まれることを確認します。
Observability 設定を更新するObservability 設定を更新するへの直接リンク
Mastra Cloud は Logger ベースの Tracing を使用していました。Mastra platform は、明示的な Exporter を指定する Observability クラスを使用します。
Observability パッケージをインストールします。
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/observability
pnpm add @mastra/observability
yarn add @mastra/observability
bun add @mastra/observability
変更前(Mastra Cloud):
import { Mastra } from '@mastra/core/mastra'
import { PinoLogger } from '@mastra/loggers'
export const mastra = new Mastra({
logger: new PinoLogger({ name: 'my-app', level: 'info' }),
// traces appear in Cloud dashboard automatically
})
変更後(Mastra platform):
import { Mastra } from '@mastra/core/mastra'
import {
Observability,
MastraStorageExporter,
MastraPlatformExporter,
SensitiveDataFilter,
} from '@mastra/observability'
export const mastra = new Mastra({
observability: new Observability({
configs: {
default: {
serviceName: 'my-app',
exporters: [new MastraStorageExporter(), new MastraPlatformExporter()],
spanOutputProcessors: [new SensitiveDataFilter()],
},
},
}),
})
MastraStorageExporterは Observability Event を Mastra Storage に永続化し、Studio で利用できるようにします。MastraPlatformExporterは、MASTRA_PLATFORM_ACCESS_TOKENが設定されている場合に Observability Event を Mastra platform へ送信します。SensitiveDataFilterは、export 前に Span データから Password、Token、Key をマスクします。
DuckDB を使用した Metric 向けの Composite Storage など、すべての設定については、Observability の概要を参照してください。
Studio をデプロイするStudio をデプロイするへの直接リンク
ホスト型 Studio インスタンスをデプロイします。
mastra studio deploy
CLI はプロジェクトをビルドし、Artifact をアップロードしてからデプロイします。初回デプロイ時に、ローカルプロジェクトを Platform に関連付ける .mastra-project.json ファイルが作成されます。このファイルをリポジトリへ Commit してください。
ローカルの Env ファイルは任意です。プロジェクトディレクトリに .env または .env.* ファイルがある場合、デプロイ時にその環境変数がバンドルされます。
mastra studio projects create を別途実行せず、非対話形式の 1 Step で新しい Platform プロジェクトを作成するには、--project で名前を渡し、--yes でデフォルトを受け入れます。
mastra studio deploy --project "my-new-project" --yes
詳しくは、Studio のデプロイを参照してください。
複数の環境複数の環境への直接リンク
1 つの Mastra platform プロジェクトでは、production や staging など、複数の環境で同じコードベースを実行します。統一された mastra deploy コマンドで各環境へデプロイします。
mastra deploy --env production --yes
mastra deploy --env staging --env-file .env.staging --yes
各環境には専用の URL と環境変数があり、デプロイ履歴も分かれています。
Server をデプロイする(任意)Server をデプロイする(任意)への直接リンク
本番 API エンドポイントが必要な場合は、Server をデプロイします。
mastra server deploy
これにより、安定した API URL、環境変数管理、カスタムドメイン対応を備えた独立したデプロイが作成されます。すべての手順については、Server デプロイガイドを参照してください。
.env、.env.local、.env.production の環境変数は、初回デプロイ時に自動的に含まれます。以降は Web Dashboard で環境変数を管理します。
開発専用または個人の Secret をアップロードしないよう、初回デプロイ前にこれらのファイルを確認し、不要な値を削除してください。
CI を設定する(任意)CI を設定する(任意)への直接リンク
Mastra Cloud は Push 時に自動デプロイしていました。Mastra platform は CLI 主導のデプロイを使用し、任意の CI Provider から実行できます。
前提条件前提条件への直接リンク
-
API Token を作成します。
mastra auth tokens create ci-deploy -
Token を GitHub Actions の Secret(
MASTRA_API_TOKENなど)として保存します。 -
最初の手動デプロイで生成された
.mastra-project.jsonをリポジトリへ Commit します。
MASTRA_API_TOKEN が設定されている場合、CLI は Headless Mode で実行され、すべての対話 Prompt を省略します。
main への Push 時に Server をデプロイするmain への Push 時に Server をデプロイするへの直接リンク
Server のデプロイは .mastra-project.json から Organization と Project を取得するため、Token 以外の環境変数は不要です。
name: Deploy to Mastra Server
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- run: pnpm install
- run: pnpm mastra server deploy --yes --config .mastra-project.json
env:
MASTRA_API_TOKEN: ${{ secrets.MASTRA_API_TOKEN }}
main への Push 時に Studio をデプロイするmain への Push 時に Studio をデプロイするへの直接リンク
Studio のデプロイでは、--config を指定していても、Headless Mode で MASTRA_ORG_ID と MASTRA_PROJECT_ID の環境変数が必要です。
name: Deploy to Mastra Studio
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- run: pnpm install
- run: pnpm mastra studio deploy --yes --config .mastra-project.json
env:
MASTRA_API_TOKEN: ${{ secrets.MASTRA_API_TOKEN }}
MASTRA_ORG_ID: ${{ secrets.MASTRA_ORG_ID }}
MASTRA_PROJECT_ID: ${{ secrets.MASTRA_PROJECT_ID }}
以前の Cloud プロジェクトを停止する以前の Cloud プロジェクトを停止するへの直接リンク
以前の Mastra Cloud URL を参照する Client を、新しい Server URL または Studio URL へ更新します。Studio の Observability Dashboardで Trace を確認し、新しい Platform に表示されることを確認します。すべてが正常に動作することを確認したら、以前の Mastra Cloud プロジェクトを削除してください。