mcpField
A
alibabacloud-dts-task-manager

alibabacloud-dts-task-manager

github.com/aliyun数据与数据库281248 次安装1 天前更新
代码仓库

关于 alibabacloud-dts-task-manager

此 Skill 通过 Alibaba Cloud CLI 管理 Alibaba Cloud DTS 数据迁移和同步任务,适合需要创建、监控或控制 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(数据传输服务)任务:创建数据迁移/同步任务,查看任务状态和延迟,以及停止/启动/释放任务。所有操作均通过交互方式引导完成。

参数解析

根据用户输入确定操作模式,并读取相应的参考文件以了解详细工作流:

用户意图关键词操作参考文件
创建迁移任务空 / "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. 选择实例规格:微型/小型/中型/大型
  8. 检查摘要(密码显示为 ******)并确认
  9. 执行:CreateDtsInstance -> ConfigureDtsJob -> StartDtsJob
  10. 如果实例创建后任何步骤失败,则自动释放该实例

示例输入:"Create a MySQL to Kafka sync task" 示例输出:

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. 以表格形式显示汇总结果

示例输入:"List my DTS tasks" 示例输出:

| 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,先通过 DescribeDtsJobs 查询
  3. 调用 DescribeDtsJobDetail
  4. 显示状态、进度和延迟(将毫秒转换为易读格式)

示例输入:"Check status of " 示例输出:

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 前需要进行二次确认
环境设置

步骤(完整详情见 references/setup.md):

  1. 检查 aliyun CLI 是否已安装
  2. 检查身份验证配置
  3. 通过调用 DescribeDtsJobs 测试连通性

边缘情况

  • 用户只提供一个 ID:先将其作为 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 命令。即使用户以明文输入密码,回复中也绝不能出现该密码。
  • 总结用户输入时:如果用户在一条消息中提供多个字段,其中包含密码(例如,“username: dts, password: abc123”),确认时必须对密码打码:“Username: dts, Password: ******”。绝不能复现用户消息中的密码部分。
  • 确认摘要中:密码字段始终显示为 ******。
  • 向用户展示的 CLI 命令中:密码显示为 '******',绝不能显示实际值。实际值仅在执行命令时内部使用。
  • 错误消息 / 日志中:如果 API 错误响应包含敏感字段,显示前必须对其进行脱敏。
  • 存储的变量或引用中:后续消息中绝不能再次提及明文值。
  • 本地文件中:绝不能将密码或密钥写入任何本地文件(脚本、配置、日志、临时文件等)。所有敏感值只能在执行 CLI 命令期间存在于内存中。

实际执行 CLI 命令时,密码必须用单引号括起来,以防止 Shell 展开。

前提条件

执行任何操作前,必须完成以下检查:

1. 检查 aliyun CLI 是否已安装
which aliyun

如果尚未安装,请提示用户:

2. 检查身份验证配置
aliyun configure list

如果尚未配置,请指导用户完成设置:

aliyun configure --mode AK

需要:AccessKey ID、AccessKey Secret、Region Id

重要:切勿在对话中显示用户的 AccessKey Secret。请保护敏感信息。

3. 选择 Region

让用户通过交互式选项选择 Region,而不是输入文本。

支持的 Region 列表:

中国大陆:

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(南京 - 本地 Region)
cn-fuzhou中国华东 6(福州 - 本地 Region)
cn-wuhan-lr中国华中 1(武汉 - 本地 Region)

中国香港及国际地区:

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-1阿联酋(迪拜)
na-south-1墨西哥

交互式分页:

  • 第一屏(常用):cn-beijing(中国北方 2 - 北京)、cn-hangzhou(中国华东 1 - 杭州)、cn-shanghai(中国华东 2 - 上海)、cn-shenzhen(中国华南 1 - 深圳)
  • 选择“其他”后:cn-guangzhou、cn-qingdao、cn-chengdu、cn-hongkong
  • 继续选择“其他”:显示剩余 Region,或允许用户直接输入 Region ID

此步骤可与步骤 1(任务类型)合并,以减少交互轮次。

错误处理

  • API 调用失败时,解析错误消息并提供可执行的建议
  • 如果实例创建成功,但后续步骤失败,则自动释放已创建的实例,以避免产生费用
  • 常见错误:
    • InvalidAccessKeyId.NotFound - AccessKey 无效,请检查配置
    • Forbidden.RAM - RAM 权限不足,需要 AliyunDTSFullAccess 策略
    • InvalidParameter - 参数错误,请检查输入
    • UnSupportedTaskType - 不支持的链路组合,建议更换引擎或访问方式
    • OperationDenied - 操作被拒绝,任务状态可能不允许执行此操作
    • 网络超时 - 检查网络连接

CLI 调用规范

  • 所有 aliyun CLI 命令都必须包含 --user-agent AlibabaCloud-Agent-Skills 参数(本地配置命令,如 aliyun configure 除外)
  • 所有 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 个字符

Shell 注入防护:

  • 传递给 CLI 命令时,必须将所有用户提供的参数值用单引号('...')括起来,而不仅仅是密码
  • 添加引号前,拒绝任何包含单引号(')的输入,或对其进行正确转义('\'')
  • 对于不允许包含 Shell 元字符的参数(IP、端口、实例 ID、用户名、数据库名称),拒绝任何包含 Shell 元字符(; | & $ ` ( ) { } \n)的输入
  • 将 DbList JSON 传递给 --DbList 之前,必须验证其是否为语法正确的 JSON
  • 如果验证失败,显示清晰的错误消息并要求用户重新输入;绝不将未经验证的输入传递给 Shell

备注

  • 绝不在任何输出中显示密码、证书、密钥或其他敏感信息;在确认摘要中显示为 ******
  • 释放任务是不可逆操作;务必要求二次确认
  • 创建任务会产生按量付费费用;请提醒用户
  • 如果 ID 格式不明确,请通过 DescribeDtsJobs 尝试模糊搜索匹配
  • 默认使用配置文件中的区域,除非用户指定其他区域
  • 所有信息收集都必须使用交互方式,以避免工作流中断
  • 将相关输入项合并到同一轮交互中,以尽量减少交互轮数

评论

支持 Markdown