alibabacloud-maxcompute-migration-service について
Alibaba Cloud MaxCompute Migration Service(MMS)を扱う Agent Skill です。外部データソースから MaxCompute への移行について、メタデータ、ターゲットマッピング、ジョブ、定期実行、状態確認を支援します。
主な機能
- 01データベース・テーブル・パーティション移行の計画
- 02ターゲットマッピングと移行ジョブの管理
- 03定期移行の設定
- 04タスク状態とログの確認
- 05ルールに沿った Aliyun CLI 操作
活用シーン
- 01外部データソースを MaxCompute へ移行
- 02増分移行を定期実行
- 03データベースやパーティションの進捗調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-maxcompute-migration-serviceインストール後、Claude Code で/alibabacloud-maxcompute-migration-serviceを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/acceptance-criteria.mdcli-installation-guide.mdcommands-datasource-and-metadata.mdcommands-job-timer-task.mdcommands-mapping-and-planning.mdmms-source-id-and-resolution.mdopenapi-checklist.mdram-policies.mdverification-method.mdscripts/sync_qwen_skill_default_workdir.sh詳細
MMS データ移行管理
MaxCompute Migration Service(MMS)のデータ移行エキスパートとして、外部データソースから MaxCompute へのデータ移行の全ライフサイクルをユーザーが管理できるよう支援します。
言語ポリシー:ユーザーとの会話の言語と文脈に従います。特に指定がない限り、ユーザーが最後に使用した言語に合わせます。文脈が混在しており、意図が明確でない場合は、続行する前に簡潔に確認してください。
[必須] API の製品識別子:すべての MMS API は MaxCompute 製品(バージョン
2022-01-04)に属します。CLI の形式:aliyun maxcompute <command> [params]。MMS リソースの操作に、他の製品の API を使用しないでください。
1) モデルとライフサイクル
主なオブジェクト
- データソース:ソース側の接続情報を格納し、移行中のネットワーク要求の繰り返しを減らすためにソースメタデータ(データベース/テーブル/パーティション)をキャッシュし、移行関連の設定を保持します。
- 移行ジョブ:移行範囲と戦略(単一データベース、複数テーブル、またはパーティション範囲)を定義する論理プランです。ジョブにはターゲットマッピングが含まれません。マッピングはジョブの作成前に別途設定します。
- 移行タスク:ジョブから分割された物理実行プランです。非パーティションテーブルの場合、通常、ジョブとタスクは1 対 1です。パーティションテーブルの場合、タスクはソース側のパーティショングループ化設定(1 タスクあたり N パーティション)に従ってグループ化されます。1 つのタスク内のデータは、1 つの Spark タスクで移行されます。
主な流れ
データソース → メタデータスキャン → ターゲットマッピング → 移行ジョブ/タイマー → 移行タスク → ステータス/ログ。
増分移行(簡易)
- 安定稼働時は、(1)コンソールでデータソースにメタデータの定期更新(例:毎日の取得)を設定し、続いて**(2)
create-mms-timerが、そのメタデータ更新時間帯の後に**独自のスケジュールで移行ジョブを実行します。これにより、各サイクルで最新のカタログを使用できます(初回の移行では、ステップ 2 でオンデマンドスキャンを使用する場合もあります)。
マッピングモデル(簡易)
- MMS は2 階層(プロジェクト中心)または3 階層(プロジェクト/スキーマ/テーブル)モードで動作する場合があります。更新前に既存のマッピングを確認してください。プロジェクトとスキーマのどちらを意図しているか不明確な場合は、変更を加える前にユーザーに確認してください。
ユーザーの意図に応じた対応
- 「移行を作成」「データベース/テーブル/パーティションを移行」→ ジョブレベルです。ステップ 5 の
create-mms-jobの前に、必ず**移行計画(ステップ 4)**を実施してください。 - 「管理対象の移行」「完全ホスト型の移行」「全托管迁移数据源 <name/id>」→ 管理対象移行モード(セクション 6)に進みます。単発コマンドの依頼ではなく、長時間実行される管理ワークフローの依頼として扱ってください。
- 同じ意図で、ユーザーメッセージまたはセッションに
source_idが含まれていない場合 → 範囲を定めないメタデータ作業として扱うのをやめてください。references/mms-source-id-and-resolution.mdに従ってください(範囲を限定した解決を行い、N ≥ 3 の場合はユーザーにsource_idを尋ね、N < 3 の場合は範囲を限定した読み取りのみを行います)。 - 「進捗を確認」「テーブルの移行ステータス」→ デフォルトでは、データベース → テーブル → パーティションの順に、インベントリ API(
list-mms-tables、get-mms-table、list-mms-partitions、get-mms-partition)と、返される移行関連フィールド(-h/レスポンスに記載)を使用します。オブジェクト数が多い場合は、ユーザーから詳細を求められない限り、すべての行を列挙するのではなく、ステータス別の件数(ヒストグラム)で要約してください。ジョブが INIT/DOING 状態で存在するかを確認するため、必ずlist-mms-jobsでも照合してください(該当する場合は--src-db-name/--src-table-nameで絞り込みます)。DB/テーブルレベルのステータスフィールドは実際のスケジュール状態に遅れて反映される場合があり、ジョブがすでにキューに入っているのに「開始していない」と報告すると、ユーザーに誤解を与えるためです。ユーザーがタスクの実行状況の詳細を明示的に希望する場合は、list-mms-tasks/get-mms-taskを使用してください。 - ユーザーが「失敗したものを再試行」と言った場合は、ジョブの再試行か、タスクの再試行かを確認してください。
シナリオ一覧(リンク付き)
- 移行計画/段階的移行/タイマー → ステップ 4 と ステップ 7。まず **データソースのスケジュールされたメタデータ更新(コンソール)**を行い、その後 **
create-mms-timer**を実行します(メタデータのウィンドウの後に--valueを指定します)。 - ターゲットのマッピング/2 階層と 3 階層 → ステップ 3。コマンドテンプレート:
references/commands-mapping-and-planning.md。 source_idが見つからない/テーブル優先の検索/LIKE による曖昧さの解消 →references/mms-source-id-and-resolution.md。- データソース/メタデータのコマンド →
references/commands-datasource-and-metadata.md。 - ジョブ+タイマー+タスク+非同期コマンド →
references/commands-job-timer-task.md。
2) 環境(CLI、前提条件、認証)
- Aliyun CLI(初回のみ)— バージョン
>= 3.3.3が必要:aliyun versionを実行して確認します。インストールされていない場合、またはバージョンが低い場合:/bin/bash -c "$(curl -fsSL https://aliyuncli.alicdn.com/setup.sh)"を実行してインストールまたは更新するか、aliyun upgradeを実行して自己更新する(CLI >= 3.3.5 で利用可能)か、brew install aliyun-cli/brew upgrade aliyun-cliを実行する(macOS の Homebrew)か、- インストール手順の詳細については
references/cli-installation-guide.mdを参照します。 次に、MaxCompute プラグインを最新の状態に保つため、[MUST]aliyun configure set --auto-plugin-install trueとaliyun plugin updateを実行します。通常の移行ワークフローでは、セットアップ手順を繰り返さないでください。
- 前提条件:MaxCompute MMS のサービスリンクロール
AliyunServiceRoleForMaxComputeMMSを作成します(コンソールを使用するのが最も簡単です)。ターゲットの MaxCompute プロジェクトが存在し、サービスロールによる操作が許可されている必要があります(references/ram-policies.mdを参照)。ほとんどのソースでは、ソース環境への VPC ネットワークリンクが必要です。 - 認証:プレーンテキストの認証情報を出力または保存しないでください。
aliyun configure listを使用してプロファイルが存在することを確認します。存在しない場合は処理を停止し、チャットセッションの外部で認証情報を設定するようユーザーに依頼してください。
3) 可観測性(セッションの追跡)
このスキルのすべての MMS aliyun maxcompute 呼び出しは、セッションごとのユーザーエージェントを通じてトレースされるため、1 つの移行セッションに属するすべてのコマンドをバックエンドで関連付けられます。
session-id(生成ルール)
- セッションごとに 1 回生成:セッションの開始時(
aliyun maxcomputeコマンドを初めて実行する直前)にsession-idを 1 つ生成し、そのセッション内の以降すべてのコマンドで同じ値を再利用します。コマンドごと、ステップごと、または再試行ごとに再生成しないでください。 - 形式:32 文字の小文字の 16 進数(128 ビット)。生成例:
openssl rand -hex 16(正確に 32 文字の 16 進数を生成します)。 - 一貫性:計画 → 作成 → 監視の各段階、および Managed Migration Mode の各ラウンドでも値を固定します。新しい session-id を作成するのは、新しいセッションが開始したときのみです。
ユーザーエージェントのテンプレート(標準)
--user-agent AlibabaCloud-Agent-Skills/{SKILL_NAME}/{session-id}
{SKILL_NAME} は alibabacloud-maxcompute-migration-service です。したがって、具体的なフラグは次のとおりです。
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-maxcompute-migration-service/<32-char-hex-session-id>
- すべての呼び出しに適用 — 作成/一覧表示/取得/更新/トリガー/開始/停止/非同期タスクのポーリング、およびメタデータスキャンのコマンドに適用します。このフラグを省略せず、
AlibabaCloud-Agent-Skills/{SKILL_NAME}のプレフィックスを変更しないでください。 references/*.mdのコマンドテンプレートでは、UA に/{session-id}のプレースホルダーが示されています。実行時には、セッションの実際の値に置き換えてください。
4) 運用ルール
- 安全を最優先 — 作成/開始/停止/削除の前に、意図を確認してください。
- データを捏造しない — CLI/API から返されたフィールドのみを報告し、ID/名前は返されたとおりに正確に引用してください。
- 範囲を限定した
source_idの特定 — ジョブ/タイマーの作成時にsource_idが指定されていない場合は、references/mms-source-id-and-resolution.mdに記載された厳格な上限に従ってください(名前から ID を特定する場合は名前フィルターを最初に使用し、利用可能なソース名がない場合に限り、フィルターなしの単一インベントリーを使用します。N ≥ 3 の場合はメタデータから推測せず、N < 3 の場合に限り、範囲を限定した絞り込み用の読み取りを行います)。 - 名前を指定して作成 — すべての
create-mms-job/create-mms-timerコマンドに、--name "<string>"(作成前の概要で提示するものと同じ名前)を必ず含めてください。--nameを省略した作成コマンドを実行または提案してはいけません。ユーザーから名前が提示されていない場合は、確認の前に名前を尋ね、合意してください。 - CLI のユーザーエージェント — すべての MMS
aliyun maxcompute呼び出しに--user-agent AlibabaCloud-Agent-Skills/alibabacloud-maxcompute-migration-service/{session-id}を追加してください。{session-id}とその生成ルールは **セクション 3(可観測性)**で定義されています。セッションごとに一度だけ生成し、すべての呼び出しで再利用してください。 - 作成コマンドの正本 — すべての
create-mms-job/create-mms-timerコマンド行は、references/commands-job-timer-task.md(および有効なフラグについてはaliyun maxcompute ... -h)に従ってください。未対応のフラグを考案したり、--bodyによる JSON 形式に切り替えたりしないでください。 - 大量の一覧で追加ページを取得しない —
list-*API が 20 件(デフォルトのページサイズ)を超える項目を返した場合、追加ページを取得するための後続呼び出しを行わないでください。代わりに、現在のページの結果(件数、カテゴリ、主要なパターン)を要約し、レスポンスメタデータから合計件数を報告してください。特定の対象を必要とするユーザーには、全結果をページごとに取得するのではなく、フィルターまたはキーワードを尋ねてください。これにより、過剰な API 呼び出しを避け、簡潔な応答を維持できます。 - ユーザーから求められない限り
--regionを指定しない — Aliyun CLI はaliyun configureのデフォルトリージョンを使用します。コマンドに--regionを追加したり、複数のリージョンを調べたりしないでください。呼び出しに失敗した場合は、まず他の原因(名前、source_id、権限)を確認してください。リージョンの不一致がエラーに明示されている場合に限り、ユーザーにリージョンについて尋ねてください。 - オブジェクトが見つからない場合にメタデータスキャンを自動実行しない — データベース、テーブル、またはパーティションが MMS メタデータに存在しない場合(例:
list-mms-dbs/list-mms-tables/list-mms-partitionsで一致する項目が返されない場合)、メタデータスキャン(create-mms-fetch-metadata-job)を自動的に実行しないでください。見つからないオブジェクトをユーザーに報告し、メタデータを再スキャンするか尋ねてください。ユーザーが明示的に確認した後に限り、スキャンを実行してください。これはジョブ作成時の確認ゲートと同様です。操作を提案し、承認を待ってください。
ID と名前解決(概要)
このファイルに記載された簡易ルール:
- 名前 → ID:まずフィルターを使用 — ユーザーが名前を指定した場合は、
list-* --name <token>から始めてください。デフォルトですべてを一覧表示しないでください。 - LIKE は候補の抽出にのみ使用 —
--nameでヒットした項目は候補として扱い、対象フィールドが厳密に一致することを確認してください。 source_idがない場合にメタデータから広範囲に推測しない — 範囲を限定したルールに従ってください(N ≥ 3の場合はユーザーに尋ね、N < 3の場合は範囲を限定した絞り込み用の読み取りを行います)。
名前から ID への変換表全体、LIKE に関する注意、テーブルを優先する検索方法、および source_id がない場合の厳格な上限については、references/mms-source-id-and-resolution.md を参照してください。
5) 移行ワークフロー(最初から最後まで)
概要:
Console: create data source → CLI: scan metadata → CLI: target mapping (`update-mms-db` / `update-mms-table`) → migration planning (mandatory before create) → CLI: create job/timer → monitor tasks
ステップ 1 — データソース管理
[MUST] MaxCompute コンソールでデータソースを作成/更新してください(CLI では実行しません)。
コンソール:https://maxcompute.console.aliyun.com/{region}/mma/datasource
次に、CLI で確認してください(例とテンプレートは references/commands-datasource-and-metadata.md を参照してください)。
list-mms-data-sources(名前から ID を特定する場合は--name <token>を優先)get-mms-data-source --source-id <id> --with-config true
ステップ 2 — メタデータのスキャン
スキャンジョブを作成し、完了するまでポーリングしてから、データベース/テーブル/パーティションを一覧表示します。正確なコマンドについては references/commands-datasource-and-metadata.md を参照してください。
source_idがすでに判明していて、ユーザーがテーブルのみを指定している場合(DB の指定がない場合)は、references/mms-source-id-and-resolution.mdに従ってテーブルを優先して検索してください。最初にすべてのデータベースを一覧表示しないでください。
ステップ 3 — マッピングの設定
CLI を使って、各ソースデータベース/テーブルの MaxCompute での配置先を設定します(推奨)。
- データベースレベル:
update-mms-dbを--source-id、--db-id、および--dst-project-name、--dst-name(そのソース DB の対象 MaxCompute スキーマ)などの配置先フィールドとともに使用します。list-mms-dbs/get-mms-dbで--db-idを解決します。 - テーブルレベルの上書き:
update-mms-tableを--source-id、--table-id、および必要に応じて--dst-project-name、--dst-schema-name、--dst-nameとともに使用します。list-mms-tables/get-mms-tableで--table-idを解決します。
マッピングフィールドを変更する前に、現在のマッピング値を確認してからモデルの種類を判断してください。
- 2 階層モデル(プロジェクトのみ):
- DB マッピングでは通常、
dst_name = nullで、主にdst_projectを使用します。 - テーブルマッピングでは
dst_projectとdst_nameを使用し、dst_schemaはありません。
- DB マッピングでは通常、
- 3 階層モデル(プロジェクト+スキーマ+テーブル):
- DB マッピング:
dst_projectはプロジェクトに、dst_nameはスキーマに対応します。 - テーブルマッピング:プロジェクト/スキーマ/テーブルの各フィールドが 1 対 1 で対応します(スキーマフィールドを含みます)。
- DB マッピング:
検出したモデルの種類に応じて更新を適用してください。既存のマッピングが 2 階層モデルの場合、スキーマ関連のフィールドをむやみに設定しないでください。 ユーザーがプロジェクトとスキーマのどちらを変更する意図なのか、依然として判断できない場合は、更新コマンドを実行せず、ユーザーに明示的に確認してください。
[MUST] マッピング更新後に、変更前/変更後の DB スキーマ名を表示する:
update-mms-dbまたはupdate-mms-tableを実行する場合は、同じ応答内で、変更前と後の DB スキーマ名の値をユーザーに表示してください(MMS から読み取った値を使用し、推測しないでください)。DB レベルのマッピングでは通常dst_name、テーブルレベルのマッピングでは API 応答で使用されるスキーマフィールドを含めてください。値に変更がない場合やnullの場合も、両方の値を表示してください。
references/commands-mapping-and-planning.md および aliyun maxcompute update-mms-db -h/update-mms-table -h を参照してください。ユーザーが希望する場合は、引き続きコンソール UI も利用できます。
ステップ 4 — 移行計画(作成前に必須)
create-mms-job または create-mms-timer の作成を開始する前に、計画パスを実行してください。このステップは必須であり、対象がすでに特定のテーブル/パーティションに絞られている場合でも省略できません。
計画の前提条件と判断(マッピング):
create-mms-jobでは移行先のマッピングを定義または上書きしないため、計画ではマッピングをステップ 5 の前提条件として扱う必要があります。ユーザーがターゲットのマッピングフィールドを指定しない場合は、既存/デフォルトのマッピング値を維持し、同じ値を書き換えるためだけにマッピング更新 API を呼び出してはいけません。ユーザーがマッピングフィールドを指定する場合は、まず要求された値と現在のマッピングを比較し、不一致の場合に限りupdate-mms-db/update-mms-tableを実行してください。すでに一致している場合は、「mapping already consistent, no update executed.」と明示的に報告してください。計画の前提条件(
source_id):ステップ 5 に進む前に、セッションコンテキストまたは計画済みの作成引数にsource_idが存在している必要があります。不明な場合は、推測のために範囲を定めないメタデータ検索を実行せず、まずreferences/mms-source-id-and-resolution.mdに従ってください。
計画のロジック:
- まずステータスを確認する(必須):計画中(対象範囲/増分/再試行)は、MMS のインベントリ API(
list-mms-tables/get-mms-table、およびパーティション範囲が関係する場合はlist-mms-partitions/get-mms-partition)から、テーブルおよびパーティション単位の移行状態に基づいて「完了/保留中/失敗」を判断し、データベース → テーブル → パーティションの順に整理してください。計画の正本としてジョブ単位のステータス(get-mms-job、概要レベルのlist-mms-jobsステータス)を使用しないでください。実行状況の詳細確認にはlist-mms-tasks/get-mms-taskのみを使用してください。一般的なステータスは次のとおりです。テーブルINIT/DOING/FAILED/DONE/PART_DONE、パーティションINIT/DOING/FAILED/DONE(正確な表記はライブ出力に従ってください)。インベントリ件数が多い場合は、全件リストではなくステータス別件数を使用してください(references/commands-mapping-and-planning.mdを参照)。 - ユーザーへの計画出力には、次の2 つの項目のみを含めてください。
- ジョブ分割計画:ジョブの分割方法(データベース全体/テーブル単位/パーティション単位)を提案し、最初に実行する具体的な対象範囲を列挙します。
- 検証済みのベースラインがないソースでは、まず1 テーブルの E2E 実行を推奨します。
- ベースラインの検証後は、ユーザーが対象範囲を明確に絞る理由を示さない限り、データベース全体のジョブをデフォルトとします。
- デフォルトで優先順位の計画を強制しないでください。優先順位付けをユーザーが求めた場合に限り、データベース/テーブルの明示的な実行順序を追加します。
- 増分の判断:
- 日次の増分移行が必要かどうかを尋ねます。
- 必要な場合は、増分移行にはまずデータソースのスケジュール済みメタデータ更新が必要で、その後、その更新時間帯を過ぎてから実行する移行タイマー(
create-mms-timer)が必要であることを簡潔に説明します。 - タイマーのスケジュールを作成する前に、
get-mms-data-source --with-config trueでデータソース設定を取得し、返されたフィールドからメタデータ更新のスケジュール/時刻を確認します。 - データソースのメタデータスケジュールが設定されていない、または不明確な場合は、タイマーの計画を中止し、まずコンソールで設定するようユーザーに依頼します。
- データソースコンソールでデータベース単位のスケジュール済みメタデータ更新を設定するよう推奨します。
- ユーザーがこの計画を確認した後、まずタイマーを作成します。
- 次に、タイマーを今すぐ手動で実行するかどうかを尋ねます。実行する場合は
trigger-mms-timerを実行します。
計画の確認ゲート(作成前の必須要件)
計画後、CLI の--nameとして使用する専用のジョブ名フィールドを含む完全な移行ジョブ設定のサマリーテーブルを出力し、次の文を正確に尋ねてください。
Please confirm whether to create this migration job. I will execute create-mms-job only after you reply "confirm".
ユーザーが明示的に承認(yes/confirm/同等の明確な承認)しない場合は、create-mms-jobを呼び出してはいけません。重要なパラメーターが変更された場合は、サマリー全体を再度表示し、改めて確認を求めてください。
ステップ 5 — 移行ジョブの作成(3 つのモード)
ステップ 4 の計画結果に基づいて、いずれか 1 つのモードを選択してください。ステップ 5 は、ステップ 4 の計画確認が完了した後にのみ実行できます。
- データベース全体(DB 移行を計画している場合のデフォルト):
srcDbNameのみ(ブラックリスト/ホワイトリストは任意)。 - テーブル単位:
srcDbName+tables。 - パーティション単位:
srcDbName+tables+partitionFilters(パーティションの範囲を曖昧にしないでください)。
[MUST] 実行または貼り付ける最終的な
aliyun maxcompute create-mms-job/create-mms-timerには、ステップ 4 で確認したサマリーと一致する--name ...を含め、コマンドの形式とフラグはreferences/commands-job-timer-task.mdに従ってください。「--nameを指定せずに作成する」または「参照テンプレートに従わない作成コマンド」は、実行前に修正すべきエラーとして扱ってください。
重要:ジョブは作成後、自動的に開始されます。start-mms-job は stop-mms-job で停止したジョブにのみ使用します。
作成 API は
job_idではなく、非同期タスクを返します:create-mms-jobは非同期タスク ID(フィールド名は API レスポンスによります)を返します。同じsource_idを指定してget-mms-async-taskをポーリングし、非同期タスクが終端成功になるまで待ちます(多くの場合はDONEです。正確な列挙値/フィールド名は CLI の出力に従います)。完了した非同期タスクのペイロードに含まれるオブジェクト ID(または同等のフィールド)が実際のjob_idです。非同期タスクが失敗した場合はエラーを提示してください。ジョブ ID として扱ってはいけません。
create-mms-job / timer / task / 非同期制御の CLI 全文は references/commands-job-timer-task.md にあります。
ステップ 6 — 進捗の監視(デフォルトの UX とポーリング)
ユーザーがジョブ/タスク ID を指定せずに「進捗」を尋ねた場合は、まずデータベース → テーブル → パーティションの順に要約してください。求められた場合にのみ、ジョブ/タスクの詳細を掘り下げてください。
ポーリングと監視モード(同期的に timerId を返す create-mms-timer には適用されません):
- メタデータスキャンジョブ:スキャンが完了するまで、数分間、約 10 秒間隔でポーリングします。
create-mms-jobの実行後:まずget-mms-async-taskで非同期タスクを解決します(短時間で完了するため、終端状態になるまで約 2~10 秒間隔でポーリングしてかまいません)。次に、返されたオブジェクト IDをjob_idとして扱います(レスポンスを確認してください)。注:create-mms-timerはレスポンスでtimerIdを直接返すため、非同期タスクのポーリングは不要です。- 長時間実行される移行ジョブ:デフォルトでは継続的にポーリングしません。短時間のステータス確認を求められない限り、
job_idと監視のヒントをユーザーに伝えてください。 - ユーザーからジョブの積極的な監視を求められた場合:約 30 秒ごとに更新します。各回で、そのジョブ配下のタスクのステータス件数(例:実行中/成功/失敗)を要約してください。タスク数が少ない(5 件未満)場合は、各回でタスクログも取得し、新しい行があるかどうかをユーザーに伝えてください。
- 移行全体のステータス監視(新規):ユーザーから継続的な全体監視を求められた場合、N 分ごとに実行します(ユーザーが別の N を指定しない限り、デフォルトの N=5)。各回で、現在実行中のジョブ/タスクを取得し(
-hで対応している場合はステータスフィルターを使用)、毎回同じ現在のステータスレポート形式で出力します。 - 停止条件:現在の回で実行中のジョブも実行中のタスクもない場合は、監視ループを停止します。ただし、監視が完了したことを示す最終レポートを必ず 1 回出力してください。
現在のステータスレポート(固定形式。順序を変更しないでください)
Snapshot:タイムスタンプ、間隔N、スコープ(source_id/ DB スコープ)。Executing jobs:アクティブなjob_id/名前/ステータスの件数と一覧(多数ある場合は上位 K 件のみ)。Executing tasks:アクティブなタスクの合計件数 + ステータスの内訳(実行中/失敗/成功/保留など。API の値に従う)。Changes since last round:新たに開始したジョブ/タスク、新たに完了したジョブ/タスク、失敗数の変化。Risk notes:失敗/停滞/進捗なしの兆候があれば、1 行で記載します。Next action:監視を続ける/詳細の確認を提案する/介入を依頼する。
ステップ 7 — タイマー(増分/スケジュール)
タイマーでは、ジョブと同じ移行関連の CLI フラグに加えて、--schedule-type と --value を使用します。タイマーの作成は、ステップ 4 の計画と確認の後に行う必要があります。増分の場合は、最初にデータソースのコンソールでスケジュール設定されたメタデータ更新を行います。get-mms-data-source --with-config true からそのスケジュールを読み取り、更新時間帯の後にタイマーが移行ジョブを実行するよう、--value を合わせてください(ステップ 4を参照)。更新スケジュールが設定されていない場合は、タイマーを作成する前に、コンソールでデータソースのスケジュールを設定するようユーザーに依頼してください。増分形式の日次実行では、ユーザーが別の方法を選択していない限り、ベースラインのデータベース全体ジョブと同じ範囲でタイマーを設定してください。
6) マネージド移行モード(ドラフト)
ユーザーがマネージド移行/完全ホスト型移行を明示的に依頼し、範囲を確認した後に限り、このモードを使用してください。
- 開始条件:
source_id、移行範囲、許可されたアクション、およびレポート間隔N(デフォルトは 5 分、ユーザーが変更可能)を確認します。- マネージドモードの範囲は、1 つのデータソース(
source_id)に限定されます。 - ユーザーがデータソースの名前(例:「managed migration datasource mms_skill_test」)を指定した場合は、名前→ID のルールに従って、まず
source_idに解決してからマネージドモードを続行します。 - 開始条件の確認後、マネージド移行が開始したことをユーザーに明示的に伝え、同じメッセージ内に終了条件を列挙します。
- マネージドモードの範囲は、1 つのデータソース(
- 自律ループ:ラウンドごとに
Plan -> Execute -> Observe -> Adjustを実行します。 - アクションの境界:計画で承認されたアクション(作成/再試行/トリガー/監視)のみを自動実行します。範囲の拡大や破壊的なアクションには、ユーザーによる再確認が必要です。
- マネージドモード中は、宛先マッピングを固定したままにする必要があります。マネージドモードを終了するまで、マッピングの更新(
update-mms-db/update-mms-table)を実行しないでください。
- マネージドモード中は、宛先マッピングを固定したままにする必要があります。マネージドモードを終了するまで、マッピングの更新(
- ラウンドの出力:そのラウンドで行った判断とともに、固定形式のステータスレポート(
Snapshot...Next action)を必ず公開します。 - 停止条件と必須の人による介入:
- 実行中のジョブ/タスクがなくなった場合、または権限/ポリシーによって処理がブロックされた場合は停止し、最終的な引き継ぎサマリーを出力します。
- マネージドモード中に送信タスクの失敗率が 20% を超えた場合は停止し、手動での介入を依頼します。
- 失敗が続く中、30 分間成功したタスクがない場合は停止し、手動での介入を依頼します。
- 10 分以内の失敗タスクが 100 件を超えた場合は停止し、手動での介入を依頼します。
- 自動開始動作:開始条件が満たされたら、すぐに監視ループを開始します(別途「監視を開始」というメッセージを待つ必要はありません)。最初のステータスレポートは同じラウンド内で公開します。
7) トラブルシューティングと権限
呼び出しで権限エラーが発生した場合:
references/ram-policies.mdを読みますram-permission-diagnoseスキルを使用して、修正方法を案内します- ユーザーが権限を付与したことを確認するまで、一時停止します
このスキルの作成中に参照する運用上の注意については、troubleshooting-and-solutions.md を参照してください。
参考資料
references/cli-installation-guide.mdreferences/ram-policies.mdreferences/commands-datasource-and-metadata.mdreferences/commands-mapping-and-planning.mdreferences/commands-job-timer-task.mdreferences/mms-source-id-and-resolution.mdtroubleshooting-and-solutions.md(このスキルの作成中に発生した問題と、その対処方法)