mcpField
A
alibabacloud-dts-task-manager

alibabacloud-dts-task-manager

github.com/aliyunデータ・データベース281248 回インストール1 日前に更新
リポジトリ

alibabacloud-dts-task-manager について

Alibaba Cloud CLIでAlibaba Cloud DTSの移行・同期タスクを管理するスキルです。タスクの作成、監視、操作を行うユーザー向けに、設定から各操作までを対話形式で進めます。

主な機能

  1. 01移行または同期タスクの作成
  2. 02タスク一覧・状態・遅延の確認
  3. 03タスクの一時停止・開始・再開
  4. 04確認後のタスク解放
  5. 05作成失敗時のインスタンス自動解放

活用シーン

  1. 01データベース移行タスクの作成
  2. 02同期タスクの状態と遅延の確認
  3. 03実行中タスクの一時停止や再開
  4. 04確認後に不要なタスクを解放

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-dts-task-manager

インストール後、Claude Code で/alibabacloud-dts-task-managerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
create-task.md
delete-task.md
list-tasks.md
ram-policies.md
setup.md
start-task.md
suspend-task.md
task-status.md

詳細

Alibaba Cloud DTS タスクマネージャー

概要

Alibaba Cloud DTS(Data Transmission Service)のタスクを管理します。データ移行/同期タスクの作成、タスクのステータスや遅延の確認、タスクの停止/開始/解放を行います。すべての操作は、対話形式で案内されます。

パラメーターの解析

ユーザー入力に基づいて操作モードを判断し、詳細なワークフローについては対応するリファレンスファイルを読み込みます。

ユーザーの意図キーワードアクションリファレンスファイル
移行タスクの作成空欄 / "create" / "new" / "migration"対話形式で作成references/create-task.md
同期タスクの作成"sync" / "synchronization"対話形式で同期タスクを作成references/create-task.md
タスク一覧の表示"list" / "view" / "ls"すべてのタスクを一覧表示references/list-tasks.md
タスクのステータス表示"status ID"指定したタスクの詳細を表示references/task-status.md
タスクの停止"stop ID" / "suspend ID" / "pause ID"指定したタスクを一時停止references/suspend-task.md
タスクの開始/再開"start ID" / "resume ID"タスクを開始または再開references/start-task.md
タスクの解放"release ID" / "delete ID" / "remove ID"タスクを解放(削除)references/delete-task.md
環境のセットアップ"setup" / "configure" / "init"環境を確認して設定references/setup.md

パラメーターが指定されていない場合は、希望する操作をユーザーに確認します。

操作の手順

タスクの作成(移行/同期)

手順(詳細は references/create-task.md を参照):

  1. 前提条件を確認します(CLI がインストール済みか、認証が設定済みか)
  2. リージョンとタスクタイプ(MIGRATION または SYNC)を選択します
  3. ソースを設定します:エンジンタイプ、アクセス方法、接続情報、任意の SSL
  4. 宛先を設定します:エンジンタイプ、アクセス方法、接続情報、任意の SSL
  5. 移行対象を定義します:データベース全体または特定のテーブルを選び、必要に応じて名前をマッピングします
  6. 移行タイプを選択します:スキーマ/全データ/増分(デフォルト:すべて)
  7. インスタンスクラスを選択します:micro/small/medium/large
  8. 概要を確認し(パスワードは ****** と表示)、確定します
  9. 実行します:CreateDtsInstance -> ConfigureDtsJob -> StartDtsJob
  10. インスタンス作成後のいずれかの手順で失敗した場合、インスタンスを自動的に解放します

入力例:「MySQL から Kafka への同期タスクを作成」 出力例:

DTS task created successfully!
  Instance ID: <dts-instance-id>
  Job ID:      <job-id>
  Status:      Initializing

To check status:  aliyun dts DescribeDtsJobDetail --DtsJobId <job-id> --RegionId cn-hangzhou
タスク一覧の表示

手順(詳細は references/list-tasks.md を参照):

  1. 前提条件を確認します
  2. JobType ごとに(MIGRATION、SYNC、SUBSCRIBE)個別にタスクをクエリします
  3. 統合した結果を表形式で表示します

入力例:「自分の DTS タスクを一覧表示」 出力例:

| Task ID        | Name                         | Type      | Status         | Source       | Destination  | Delay  |
|----------------|------------------------------|-----------|----------------|--------------|--------------|--------|
| <job-id-1>     | migration-mysql-mysql-0401   | MIGRATION | Migrating      | RDS MySQL    | RDS MySQL    | -      |
| <job-id-2>     | sync-mysql-kafka-0401        | SYNC      | Synchronizing  | RDS MySQL    | Kafka        | 128ms  |
タスクステータスの表示

手順(詳細は references/task-status.md を参照):

  1. 前提条件を確認します
  2. ID を特定します:ID が 1 つだけ指定されている場合は、まず DescribeDtsJobs で検索します
  3. DescribeDtsJobDetail を呼び出します
  4. ステータス、進捗、遅延を表示します(ms を読みやすい形式に変換)

入力例:「 のステータスを確認」 出力例:

Task: <job-id> (migration-mysql-mysql-0401)
Type:   MIGRATION
Status: Migrating
Progress:
  Schema migration:    Finished
  Full data migration: Finished (1,234,567 rows)
  Incremental:         Running, delay 236ms
Source:      RDS MySQL <source-instance-id> (cn-hangzhou)
Destination: RDS MySQL <dest-instance-id> (cn-hangzhou)
タスクの停止/開始/解放

停止(詳細は references/suspend-task.md を参照):

  1. ID を特定し、タスク情報を表示して確認を取り、その後 SuspendDtsJob を呼び出します

開始/再開(詳細は references/start-task.md を参照):

  1. ID を特定し、その後 StartDtsJob を呼び出します

解放/削除(詳細は references/delete-task.md を参照):

  1. ID を特定します
  2. 事前確認:DescribeDtsJobDetail を呼び出して現在のステータスを確認します
  3. タスクがアクティブ(Synchronizing/Migrating/InitializingDataLoad)の場合、ユーザーに警告し、明示的な確認を求めます
  4. DeleteDtsJob を呼び出す前に、2 回の確認が必要です
環境のセットアップ

手順(詳細は references/setup.md を参照):

  1. aliyun CLI がインストールされているか確認します
  2. 認証設定を確認します
  3. DescribeDtsJobs の呼び出しで接続をテストします

エッジケース

  • ユーザーが ID を 1 つだけ指定した場合:まず DtsJobId として試し、DescribeDtsJobs で DtsInstanceId を検索します。タスクの DtsInstanceID フィールドが空の場合は、DtsJobId のみを渡します。
  • API パラメーターの大文字と小文字の不一致:DescribeDtsJobDetail では --DtsInstanceID(D が大文字)、DeleteDtsJob/ConfigureDtsJob では --DtsInstanceId(d が小文字)を使用します。呼び出す前に、必ず aliyun dts <API> help で確認してください。
  • ID 形式が曖昧な場合:ID が DtsJobId または DtsInstanceId のパターンに明確に一致しない場合は、DescribeDtsJobs であいまい検索します。
  • 実行中のタスクを削除する場合:事前確認なしに実行中のタスクを削除しないでください。まずステータスを照会し、Synchronizing/Migrating の場合は、先に一時停止するようユーザーに促すか、強制削除について明示的な確認を求めます。
  • 作成フローの途中で失敗した場合:CreateDtsInstance が成功した後、ConfigureDtsJob または StartDtsJob が失敗した場合は、継続的な料金の発生を避けるため、作成したインスタンスを自動的に解放します。
  • タイムアウト/再試行:すべての API 呼び出しで --read-timeout 30 --connect-timeout 10 を使用します。CreateDtsInstance には、冪等な再試行のために --ClientToken(UUID)を指定します。
  • 複数リージョンのクエリ:タスクの一覧表示では、リージョンごとに MIGRATION/SYNC/SUBSCRIBE を個別に照会します。--JobType パラメーターのデフォルトは MIGRATION です。省略すると、同期/サブスクライブのタスクが通知なく除外されます。--Type は使用しないでください(InvalidParameter が発生します)。
  • MongoDB 固有の注意事項:MongoDB のエンドポイントでは、ConfigureDtsJob に --SourceEndpointDatabaseName が必要です。

対話ルール

重要:フリーテキストでの質問によるワークフローの中断を避けるため、情報収集はすべて対話式の選択肢を使用する必要があります。

選択式の情報:固定の選択肢を提示する

固定の選択肢があるシナリオに適用されます。例:タスクタイプ、エンジンタイプ、アクセス方法、インスタンスの選択、移行タイプ、仕様の選択など。

自由入力の情報:一般的なデフォルト値とカスタム入力を提示する

ユーザーの自由入力が必要なシナリオに適用されます。例:IP アドレス、ポート、ユーザー名、パスワード、データベース名、テーブル名など。 一般的なデフォルト値を選択肢として提示し、ユーザーが選択またはカスタム値を入力できるようにします。 関連する入力項目は、できるだけ少ない回数の対話にまとめます。

機密情報:平文で表示しない

重要:パスワード、AccessKey Secret、証明書、秘密鍵を、会話のどの段階でも決して平文で表示してはいけません。

  • 収集時:ユーザーがメッセージでパスワードやシークレット(例:「password: MyPass123」)を入力した場合、直ちに機密情報として扱う必要があります。返信で平文の値を引用、繰り返し、要約、参照してはいけません。「ソースデータベースのパスワードを受け取りました」のように、受領を伝えるだけにしてください。その後の CLI 実行に備えて、内部で保存します。ユーザーがパスワードを平文で入力した場合でも、返信にその値を含めてはいけません。
  • ユーザー入力の要約時:ユーザーが 1 つのメッセージでパスワードを含む複数の項目(例:「username: dts, password: abc123」)を指定した場合、受領確認ではパスワードをマスクする必要があります。「Username: dts, Password: ******」のようにします。ユーザーのメッセージに含まれるパスワード部分を再現してはいけません。
  • 確認用の要約:パスワード項目は必ず ****** と表示します。
  • ユーザーに表示する CLI コマンド:実際の値ではなく、パスワードを '******' と表示します。実際の値は、コマンドの実行時に内部でのみ使用します。
  • エラーメッセージ/ログ:API エラー応答に機密情報が含まれる場合は、表示前に伏せてください。
  • 保存した変数や参照:以降のメッセージで平文の値を繰り返してはいけません。
  • ローカルファイル:スクリプト、設定、ログ、一時ファイルなど、ローカルファイルにパスワードやシークレットを書き込んではいけません。すべての機密情報は、CLI 実行中にメモリ上にのみ保持する必要があります。

シェルによる展開を防ぐため、実際の CLI 実行時にはパスワードをシングルクォートで囲みます。

前提条件

操作を実行する前に、以下の確認を行う必要があります。

1. aliyun CLI のインストールを確認する
which aliyun

インストールされていない場合は、ユーザーに以下を案内します。

2. 認証設定を確認する
aliyun configure list

設定されていない場合は、ユーザーに以下の手順を案内します。

aliyun configure --mode AK

必要なもの:AccessKey ID、AccessKey Secret、Region Id

重要:会話中にユーザーの AccessKey Secret を絶対に表示しないでください。機密情報を保護してください。

3. リージョンを選択する

テキスト入力ではなく、インタラクティブな選択肢を使ってユーザーにリージョンを選んでもらいます。

対応リージョン一覧:

中国本土:

Region ID名前
cn-beijing中国北部 2(北京)
cn-hangzhou中国東部 1(杭州)
cn-shanghai中国東部 2(上海)
cn-shenzhen中国南部 1(深圳)
cn-guangzhou中国南部 3(広州)
cn-qingdao中国北部 1(青島)
cn-zhangjiakou中国北部 3(張家口)
cn-huhehaote中国北部 5(フフホト)
cn-wulanchabu中国北部 6(ウランチャブ)
cn-heyuan中国南部 2(河源)
cn-chengdu中国西南部 1(成都)
cn-nanjing中国東部 5(南京 - ローカルリージョン)
cn-fuzhou中国東部 6(福州 - ローカルリージョン)
cn-wuhan-lr中国中部 1(武漢 - ローカルリージョン)

香港(中国)および海外:

Region ID名前
cn-hongkong中国(香港)
ap-southeast-1シンガポール
ap-southeast-3マレーシア(クアラルンプール)
ap-southeast-5インドネシア(ジャカルタ)
ap-southeast-6フィリピン(マニラ)
ap-southeast-7タイ(バンコク)
ap-northeast-1日本(東京)
ap-northeast-2韓国(ソウル)
eu-central-1ドイツ(フランクフルト)
eu-west-1英国(ロンドン)
us-east-1米国(バージニア)
us-west-1米国(シリコンバレー)
me-east-1UAE(ドバイ)
na-south-1メキシコ

インタラクティブなページ分け:

  • 最初の画面(一般的なリージョン):cn-beijing(中国北部 2 - 北京)、cn-hangzhou(中国東部 1 - 杭州)、cn-shanghai(中国東部 2 - 上海)、cn-shenzhen(中国南部 1 - 深圳)
  • 「その他」を選択した後:cn-guangzhou、cn-qingdao、cn-chengdu、cn-hongkong
  • 続けて「その他」を選択:残りのリージョンを表示するか、ユーザーが Region ID を直接入力できるようにします

やり取りの回数を減らすため、この手順をステップ 1(タスクの種類)と組み合わせることができます。

エラー処理

  • API 呼び出しに失敗した場合は、エラーメッセージを解析し、実行可能な解決策を提示します
  • インスタンスの作成後に後続の手順が失敗した場合は、料金が発生しないよう、作成したインスタンスを自動的に解放します
  • よくあるエラー:
    • InvalidAccessKeyId.NotFound - AccessKey が無効です。設定を確認してください
    • Forbidden.RAM - RAM 権限が不足しています。AliyunDTSFullAccess ポリシーが必要です
    • InvalidParameter - パラメーターエラーです。入力を確認してください
    • UnSupportedTaskType - 対応していないリンクの組み合わせです。エンジンまたはアクセス方法の変更を提案してください
    • OperationDenied - 操作が拒否されました。タスクのステータスによって、この操作が許可されていない可能性があります
    • ネットワークタイムアウト - ネットワーク接続を確認してください

CLI 呼び出しの基準

  • aliyun CLI コマンドには、ローカル設定コマンド(aliyun configure など)を除き、必ず --user-agent AlibabaCloud-Agent-Skills パラメーターを指定します
  • aliyun CLI の API 呼び出しには、必ずタイムアウトを設定します:--read-timeout 30 --connect-timeout 10
  • aliyun CLI コマンドの応答はすべて JSON です。JSON を解析し、表示する重要な情報を抽出します
入力検証とインジェクションの防止

重大:CLI コマンドを構築する前に、コマンドインジェクションを防ぐため、ユーザーが指定したすべての入力パラメーターを検証し、サニタイズする必要があります。

パラメーターの種類ごとの検証ルール:

パラメーター検証ルール
IP アドレスIPv4 パターン(^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$)に一致し、各オクテットが 0~255 であること
ポート整数のみ、範囲は 1~65535
インスタンス ID英数字、ハイフン、アンダースコアのみ(^[a-zA-Z0-9_-]+$)
データベース名英数字、アンダースコア、ハイフンのみ(^[a-zA-Z0-9_-]+$)
テーブル名英数字、アンダースコア、ハイフン、ドットのみ(^[a-zA-Z0-9_.\-]+$)
ユーザー名英数字、アンダースコア、ハイフン、ドットのみ(^[a-zA-Z0-9_.\-]+$)
リージョン ID既知のリージョン ID リスト、またはパターン ^[a-z]{2}-[a-z]+-?\d*$ に一致すること
DtsJobName英数字、ハイフン、アンダースコア、ドットのみ、最大 128 文字

シェルインジェクションの防止:

  • CLI コマンドに渡すユーザー指定のパラメーター値は、パスワードだけでなく、すべてシングルクォート('...')で囲む必要があります
  • クォートする前に、シングルクォート(')を含む入力を拒否するか、適切にエスケープしてください('\'')
  • 入力が常に無効となるパラメーター(IP、ポート、インスタンス ID、ユーザー名、データベース名)では、シェルのメタ文字(; | & $ ` ( ) { } \n)を含む入力を拒否してください
  • --DbList に渡す前に、DbList JSON が構文的に正しい JSON であることを検証してください
  • 検証に失敗した場合は、明確なエラーメッセージを表示してユーザーに値の再入力を求めてください。検証されていない入力をシェルに渡してはいけません

注意事項

  • 出力にはパスワード、証明書、キー、その他の機密情報を決して表示しないでください。確認サマリーでは ****** と表示してください
  • タスクのリリースは取り消せない操作です。必ず二重確認を求めてください
  • タスクの作成には料金が発生します(従量課金)。ユーザーにその旨を伝えてください
  • ID 形式が曖昧な場合は、DescribeDtsJobs を使ってあいまい検索を試みてください
  • ユーザーが別のリージョンを指定しない限り、デフォルトで設定ファイルのリージョンを使用してください
  • ワークフローが中断されないよう、情報収集にはすべて対話形式を使用してください
  • 対話の回数を最小限に抑えるため、関連する入力項目は同じ対話ラウンドにまとめてください

コメント