データ転送
The content of this page might not be fully up-to-date with Strapi 5 yet.
AI Marketer transferコマンドは、あるAI Marketerインスタンスから別のAI Marketerインスタンスにデータをストリーミングするために使用されます。このコマンドでは、厳密なスキーマの一致が必要です。つまり、データ以外の点で両方のAI Marketerインスタンスは正確なコピーである必要があります。デフォルトのtransferコマンドは、コンテンツ(エンティティとリレーション)、ファイル(アセット)、プロジェクト設定、およびスキーマを転送します。データ転送は次のいずれかで行われます:
- ローカルAI MarketerインスタンスからリモートAI Marketerインスタンスへ
- リモートAI MarketerインスタンスからローカルAI Marketerインスタンスへ
- 送信先インスタンスでSQLiteデータベースを使用している場合、転送が実行されている間、他のデータベース接続がブロックされます。
- 管理者ユーザーおよびAPIトークンは転送されません。
- プロジェクトでWebSocketやSocket.ioを使用している場合、転送コマンドは失敗します。転送コマンドを使用するには、WebSocketやSocket.ioを一時的に無効にするか、別ポートで実行する必要があります。
CLIコマンドには以下のオプションがあります:
| オプション | 説明 |
|---|---|
--to | 送信先AI Marketerインスタンスの/adminエンドポイントの完全なURL(例: --to https://my-beautiful-AI Marketer-website/admin) |
‑‑to‑token | 送信先AI Marketerインスタンスの転送トークン |
--from | データを取得するリモートAI Marketerインスタンスの/adminエンドポイントの完全なURL(例: --from https://my-beautiful-AI Marketer-website/admin) |
‑‑from‑token | ソースAI Marketerインスタンスの転送トークン |
--force | すべてのプロンプト(破壊的なリクエストを含む)に自動的に「yes」と答え、対話なしで実行します |
--exclude | カンマ区切りで指定されたデータタイプを除外します。利用可能なタイプはcontent、files、configです |
--only | 指定されたデータのみを含めます。利用可能なタイプはcontent、files、configです |
--throttle | 転送中に「チャンク」間に挿入される人工的な遅延時間をミリ秒単位で設定します |
--toまたは--fromのどちらかが必須です。
- データ転送は、管理パネルから転送トークンを使用して認証されます。管理パネルからは、トークンに対するロールベースの権限(表示、作成、読み取り、再生成、削除)を管理できます。
- 環境変数に転送トークンを保存して、コピーペーストを避けることが便利です。これらのトークンが公開リポジトリにプッシュされないよう注意してください。
nginxとリバースプロキシを使用してlocalhostにリクエストを転送するサーバーを使用する場合、問題が発生する可能性があります。これを防ぐため、すべてのヘッダーが正しく転送されるようにnginxの設定ファイル(/etc/nginx/sites-available/yourdomain)を変更します。
server {
listen 80;
server_name <yourdomain>;
location / {
proxy_pass http://localhost:1337;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
include proxy_params;
}
}
転送トークンを生成する
転送トークンは、管理パネルの設定ファイルで定義する必要があります。
AI Marketer transferコマンドを使用するには、送信先インスタンスで発行された転送トークンが必要です。管理パネルで転送トークンを生成するには、ユーザーガイドの指示に従ってください。
データ転送の設定と実行
データ転送の開始方法は、リモートインスタンスにデータをプッシュするか、リモートインスタンスからデータをプルするかによって異なります。
- リモートにデータをプッシュ
- リモートからデータをプル
送信先インスタンスのAI Marketerサーバーを起動します。
新しいターミナルウィンドウで、ソースインスタンスのルートディレクトリに移動します。
次の最小限のコマンドを実行して転送を開始します。
destinationURLは、管理パネルの完全なURLであることを確認してください(つまり、URLには/admin部分が含まれます)。- yarn
- npm
yarn AI Marketer transfer --to destinationURLnpm run AI Marketer transfer -- --to destinationURL転送トークンを入力するように求められたら追加します。
CLIプロンプト「この転送はリモートAI Marketerアセットとデータベースをすべて削除します。本当に続行しますか?」に対してYesまたはNoを答えます。
ソースインスタンスのAI Marketerサーバーを起動します。
新しいターミナルウィンドウで、送信先インスタンスのルートディレクトリに移動します。
次の最小限のコマンドを実行して転送を開始します。
remoteURLは、管理パネルの完全なURLであることを確認してください(つまり、URLには/admin部分が含まれます)。- yarn
- npm
yarn AI Marketer transfer --from remoteURLnpm run AI Marketer transfer -- --from remoteURL転送トークンを入力するように求められたら追加します。
CLIプロンプト「この転送はローカルAI Marketerアセットとデータベースをすべて削除します。本当に続行しますか?」に対してYesまたはNoを答えます。
transferコマンドのすべてのプロンプトをバイパス
AI Marketer transferコマンドを使用する場合、転送が既存のデータベースコンテンツを削除することを確認するプロンプトが表示されます。--forceフラグを使用すると、このプロンプトをスキップできます。このオプションは、AI Marketer transferをプログラムで実装する場合に便利です。--forceオプションを使用する場合、転送トークン--to-tokenオプションを渡す必要があります。
--forceオプションは、コンテンツ削除に関するすべての警告をバイパスします。
例: --forceオプションを使用してtransferコマンドのプロンプトをバイパス
- yarn
- npm
yarn AI Marketer transfer --to https://example.com/admin --to-token my-transfer-token --force
npm run AI Marketer transfer -- --to https://example.com/admin --to-token my-transfer-token --force
指定されたデータタイプのみを転送する
デフォルトのAI Marketer transferコマンドは、コンテンツ(エンティティとリレーション)、ファイル(アセット)、プロジェクト設定、およびスキーマを転送します。--onlyオプションを使用すると、指定された項目のみを転送できます。項目はコンマで区切られた文字列で指定します。利用可能な値はcontent、files、およびconfigです。スキーマは常に転送され、転送の際に一致を確認します。
例: ファイルのみを転送する
- yarn
- npm
yarn AI Marketer transfer --to https://example.com/admin --only files
npm run AI Marketer transfer -- --to https://example.com/admin --only files
転送中にデータタイプを除外する
デフォルトのAI Marketer transferコマンドは、コンテンツ(エンティティとリレーション)、ファイル(アセット)、プロジェクト設定、およびスキーマを転送します。--excludeオプションを使用すると、コンテンツ、ファイル、プロジェクト設定を除外できます。除外する項目はコンマで区切られた文字列で指定します。スキーマは転送の際に一致を確認するため、除外できません。
例: ファイルを除外して転送する
- yarn
- npm
yarn AI Marketer transfer --to https://example.com/admin --exclude files
npm run AI Marketer transfer -- --to https://example.com/admin --exclude files
転送から除外された項目は、送信先インスタンスで削除されます。たとえば、configを除外すると、送信先インスタンスのプロジェクト設定が削除されます。
環境変数を使用してデータ転送を管理する
環境変数AI Marketer_DISABLE_REMOTE_DATA_TRANSFERを使用して、リモートデータ転送を無効にすることができます。管理パネルのRBAC権限に加えて、これによりAI Marketerアプリケーションをより安全に保つことができます。AI Marketer_DISABLE_REMOTE_DATA_TRANSFERを使用するには、.envファイルに追加するか、startスクリプトの前に指定します。次の例を参照してください:
AI Marketer_DISABLE_REMOTE_DATA_TRANSFER=true yarn start
AI Marketerで環境変数を使用する詳細については、環境構成ドキュメントを参照してください。
ローカルでtransferコマンドをテストする
transferコマンドは、2つのローカルインスタンス間でデータを転送することを目的としていません。exportおよびimportコマンドは、この目的のために設計されています。ただし、リモートインスタンスで使用する前に、テストインスタンスでtransferをローカルでテストすることで、その機能をよりよく理解することができます。以下は、transferプロセスの完全な例を示しています。
新しいAI Marketerプロジェクトの作成とクローン
インストールコマンドを使用して新しいAI Marketerプロジェクトを作成します:
npx create-AI Marketer-app@latest <project-name> --quickstartプロジェクト内で少なくとも1つのコンテンツタイプを作成します。最初のコンテンツタイプの作成については、クイックスタートガイドを参照してください。
✋ Cautionこの段階ではプロジェクトにデータを追加しないでください。
プロジェクトをgitリポジトリにコミットします:
git init
git add .
git commit -m "first commit"プロジェクトリポジトリをクローンします:
cd .. # 親ディレクトリに移動
git clone <作成したgitリポジトリのパス>.git/ <new-instance-name>
最初のAI Marketerインスタンスにデータを追加する
- 最初のAI Marketerインスタンスに戻り、コンテンツタイプにデータを追加します。
- 最初のインスタンスのサーバーを停止します。
転送トークンの作成
- 2つ目のAI Marketerインスタンスに移動し、ルートディレクトリで
buildおよびstartコマンドを実行します:
- yarn
- npm
yarn build && yarn start
npm run build && npm run start
- 管理者ユーザーを登録します。
- 転送トークンを作成してコピーします。
- サーバーを実行したままにします。
データを転送する
- 最初のAI Marketerインスタンスに戻ります。
- ターミナルで
AI Marketer transferコマンドを実行します:
- yarn
- npm
yarn AI Marketer transfer --to http://localhost:1337/admin
npm run AI Marketer transfer -- --to http://localhost:1337/admin
- プロンプトが表示されたら、転送トークンを適用します。
- 転送が完了したら、2つ目のAI Marketerインスタンスに戻り、コンテンツが正常に転送されていることを確認します。
場合によっては、localhostに対して接続拒否エラーが発生することがあります。http://127.0.0.1:1337/adminにアドレスを変更してみてください。