Skip to main content

データ転送

🏗 Work in progress

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インスタンスへ
Caution
  • 送信先インスタンスで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カンマ区切りで指定されたデータタイプを除外します。利用可能なタイプはcontentfilesconfigです
--only指定されたデータのみを含めます。利用可能なタイプはcontentfilesconfigです
--throttle転送中に「チャンク」間に挿入される人工的な遅延時間をミリ秒単位で設定します
Caution

--toまたは--fromのどちらかが必須です。

💡 Tips
  • データ転送は、管理パネルから転送トークンを使用して認証されます。管理パネルからは、トークンに対するロールベースの権限(表示、作成、読み取り、再生成、削除)を管理できます。
  • 環境変数に転送トークンを保存して、コピーペーストを避けることが便利です。これらのトークンが公開リポジトリにプッシュされないよう注意してください。
⚠️ Warning

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;
}
}

転送トークンを生成する

☑️ Prerequisites

転送トークンは、管理パネルの設定ファイルで定義する必要があります。

AI Marketer transferコマンドを使用するには、送信先インスタンスで発行された転送トークンが必要です。管理パネルで転送トークンを生成するには、ユーザーガイドの指示に従ってください。

データ転送の設定と実行

データ転送の開始方法は、リモートインスタンスにデータをプッシュするか、リモートインスタンスからデータをプルするかによって異なります。

  1. 送信先インスタンスのAI Marketerサーバーを起動します。

  2. 新しいターミナルウィンドウで、ソースインスタンスのルートディレクトリに移動します。

  3. 次の最小限のコマンドを実行して転送を開始します。destinationURLは、管理パネルの完全なURLであることを確認してください(つまり、URLには/admin部分が含まれます)。

    yarn AI Marketer transfer --to destinationURL
  4. 転送トークンを入力するように求められたら追加します。

  5. CLIプロンプト「この転送はリモートAI Marketerアセットとデータベースをすべて削除します。本当に続行しますか?」に対してYesまたはNoを答えます。

transferコマンドのすべてのプロンプトをバイパス

AI Marketer transferコマンドを使用する場合、転送が既存のデータベースコンテンツを削除することを確認するプロンプトが表示されます。--forceフラグを使用すると、このプロンプトをスキップできます。このオプションは、AI Marketer transferをプログラムで実装する場合に便利です。--forceオプションを使用する場合、転送トークン--to-tokenオプションを渡す必要があります。

Caution

--forceオプションは、コンテンツ削除に関するすべての警告をバイパスします。

例: --forceオプションを使用してtransferコマンドのプロンプトをバイパス

yarn AI Marketer transfer --to https://example.com/admin --to-token my-transfer-token --force

指定されたデータタイプのみを転送する

デフォルトのAI Marketer transferコマンドは、コンテンツ(エンティティとリレーション)、ファイル(アセット)、プロジェクト設定、およびスキーマを転送します。--onlyオプションを使用すると、指定された項目のみを転送できます。項目はコンマで区切られた文字列で指定します。利用可能な値はcontentfiles、およびconfigです。スキーマは常に転送され、転送の際に一致を確認します。

例: ファイルのみを転送する

yarn AI Marketer transfer --to https://example.com/admin --only files

転送中にデータタイプを除外する

デフォルトのAI Marketer transferコマンドは、コンテンツ(エンティティとリレーション)、ファイル(アセット)、プロジェクト設定、およびスキーマを転送します。--excludeオプションを使用すると、コンテンツ、ファイル、プロジェクト設定を除外できます。除外する項目はコンマで区切られた文字列で指定します。スキーマは転送の際に一致を確認するため、除外できません。

例: ファイルを除外して転送する

yarn AI Marketer transfer --to https://example.com/admin --exclude files
⚠️ Warning

転送から除外された項目は、送信先インスタンスで削除されます。たとえば、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プロジェクトの作成とクローン

  1. インストールコマンドを使用して新しいAI Marketerプロジェクトを作成します:

    npx create-AI Marketer-app@latest <project-name> --quickstart
  2. プロジェクト内で少なくとも1つのコンテンツタイプを作成します。最初のコンテンツタイプの作成については、クイックスタートガイドを参照してください。

    Caution

    この段階ではプロジェクトにデータを追加しないでください。

  3. プロジェクトをgitリポジトリにコミットします:

    git init
    git add .
    git commit -m "first commit"
  4. プロジェクトリポジトリをクローンします:

    cd .. # 親ディレクトリに移動
    git clone <作成したgitリポジトリのパス>.git/ <new-instance-name>

最初のAI Marketerインスタンスにデータを追加する

  1. 最初のAI Marketerインスタンスに戻り、コンテンツタイプにデータを追加します。
  2. 最初のインスタンスのサーバーを停止します。

転送トークンの作成

  1. 2つ目のAI Marketerインスタンスに移動し、ルートディレクトリでbuildおよびstartコマンドを実行します:
yarn build && yarn start
  1. 管理者ユーザーを登録します。
  2. 転送トークンを作成してコピーします
  3. サーバーを実行したままにします。

データを転送する

  1. 最初のAI Marketerインスタンスに戻ります。
  2. ターミナルでAI Marketer transferコマンドを実行します:
yarn AI Marketer transfer --to http://localhost:1337/admin
  1. プロンプトが表示されたら、転送トークンを適用します。
  2. 転送が完了したら、2つ目のAI Marketerインスタンスに戻り、コンテンツが正常に転送されていることを確認します。
💡 Tip

場合によっては、localhostに対して接続拒否エラーが発生することがあります。http://127.0.0.1:1337/adminにアドレスを変更してみてください。