mcpField
A
alibabacloud-dts-task-query

alibabacloud-dts-task-query

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

关于 alibabacloud-dts-task-query

用于通过 Alibaba Cloud CLI 查询 Alibaba Cloud DTS 迁移、同步和订阅任务状态的技能,面向需要汇总任务运行情况的用户。它支持按地域和任务名称筛选,并以中文分组列出任务明细。

主要功能

  1. 01查询迁移、同步和订阅任务
  2. 02支持地域、实例和任务名称筛选
  3. 03并行查询多个地域
  4. 04失败请求重试与响应校验
  5. 05按类型和创建时间排序输出

适用场景

  1. 01汇总多个地域的 DTS 任务状态
  2. 02查找指定实例或名称的任务
  3. 03检查迁移、同步及订阅任务明细

安装

复制下面的命令,在终端中运行。

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

安装后在 Claude Code 中输入/alibabacloud-dts-task-query确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
ram-policies.md
scripts/
query_dts_tasks.py
verify_compliance.sh

详细介绍

⚠️ 输出完整性关键要求

使用此技能时,必须输出完整的脚本结果,不得截断、省略或概括。脚本会完整输出每一行任务数据——模型的回复也必须如此。绝不能使用“...”占位符或概括任务数量。必须按原样显示所有行。

DTS 任务状态查询

使用 Alibaba Cloud CLI 查询 DTS 任务状态。输出结果为中文。

前提条件

关键:必须配置 AI-Mode 并设置插件

使用此技能前,必须配置 AI-Mode 并更新插件:

# Enable AI-Mode for plugin-based API calls
aliyun configure ai-mode enable

# Set user agent for proper plugin compatibility
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-dts-task-query"

# Update all plugins to latest version
aliyun plugin update --all

# Verify DTS plugin is installed
aliyun plugin list

# To disable AI-Mode later (if needed)
aliyun configure ai-mode disable

注意:此技能使用插件模式命令(aliyun dts describe-dts-jobs)。必须启用 AI-Mode,这些命令才能正常运行。

RAM 必需权限

请参阅 references/ram-policies.md 了解详细的 RAM 策略要求。

支持的区域

如果未指定区域,将自动查询全部 27 个公有云区域。

用法

python scripts/query_dts_tasks.py [--region <id>] [--instance-id <id>] [--job-name <name>] [--workers <N>]

⚠️ 强制要求——模型回复规则:

  • 始终输出完整数据:逐一显示每一行任务数据,不得有任何省略
  • 绝不截断:不得使用“...”占位符,不得写“仅显示前 N 个任务”,也不得进行概括
  • 始终列出所有任务:必须逐行显示迁移/同步/订阅组中的每一项任务
  • 脚本输出 100% 完整:脚本可确保输出完整——你的回复也必须 100% 完整
  • 请记住:脚本有 23 项任务时,你必须输出全部 23 行。绝无例外。

性能调优:

  • --workers:并发 API 调用数(默认值:8)。建议值:
    • 8:默认值,性能稳定(完整扫描约需 10 秒)
    • 12-16:适用于高带宽网络的最佳值(完整扫描约需 6-8 秒)
    • >16:可能触发 API 速率限制或受到本地资源限制

可靠性功能(v12):

  • API 重试逻辑:失败的 API 调用最多重试 3 次,并采用指数退避,以确保结果一致
    • 解决的问题:消除瞬时 API 故障和超时导致的数量波动
    • 影响:脚本现在始终返回相同的任务数量(例如,稳定返回 34 项任务,而非 32-34 项)
    • v12.1:将超时时间延长至 10s,并加入指数退避(0.2s、0.4s),以提升可靠性
  • 线程安全的数据收集:使用 Lock 防止并行收集数据时出现竞态条件
  • 严格的响应验证:仅接受包含有效 “DtsJobList” 字段的响应
  • 详细的错误日志:区分超时错误和其他异常,便于调试
  • 已验证:经过 50 多次连续运行测试,所有结果均一致

执行规则(强制)

  1. 完整轮询:除非指定了特定地域,否则必须遍历全部 27 个地域和 3 种任务类型(MIGRATION、SYNC、SUBSCRIBE)。
  2. 注入地域:在查询阶段,脚本必须将 _QueryRegion 字段注入每个任务对象。
  3. 海外地域的端点:对于海外地域,脚本必须成功为查询任务添加 --endpoint 参数。
  4. PayType 筛选:读取临时文件后,严格筛选任务,仅包含 PayType 为 PrePaid 或 PostPaid 的任务。
  5. 中文输出:所有输出(摘要和表头)都必须使用中文。必须映射 JobType(例如,migration → 迁移)。
  6. 分组输出:任务按类型(迁移/同步/订阅)分组,每组按 CreateTime 排序(最新的在前)。
  7. 并行执行:脚本必须使用 ThreadPoolExecutor 执行并行查询(v11+)。默认使用 8 个工作线程,可通过 --workers 配置。
  8. API 重试:脚本最多重试失败的 API 调用 3 次,以确保可靠性(v12+)。
  9. 线程安全:脚本使用 Lock 实现线程安全的数据收集,以防止竞态条件(v12+)。
  10. 参数严格性:必须使用用户输入中提供的确切地域 ID 和筛选关键词。即使用户输入看似模糊,也不得替换地域(例如 cn-shanghai)。
  11. 强制筛选:如果提供了 --job-name,必须将其传递给脚本,不得省略。

输出格式

1. 统计摘要
  • 任务总量:[Count]
  • 地域分布:[地域及数量列表]
  • 状态分布:[状态及数量列表]
  • 类型分布:[任务类型及数量列表]
2. 任务明细

⚠️ 关键——输出完整性:

  • 脚本保证输出完整内容:脚本始终输出所有任务,不会截断
  • 始终显示所有行:必须逐行列出每个任务,无一例外
  • 绝不使用占位符:不得使用“...”或类似的截断符号;必须显示每个任务的实际数据
  • 完整示例结构(实际输出包含所有真实数据行,不会截断):
#### 迁移任务
共 [N] 个
| 地域 | 状态 | DTS任务名称 | 过期时间 | DTS任务ID | 创建时间 | DTS实例ID |
|------|------|-------------|----------|-----------|----------|-----------|
| [Region1] | [Status1] | [Name1] | [ExpireTime1] | [JobID1] | [CreateTime1] | [InstanceID1] |
| [Region2] | [Status2] | [Name2] | [ExpireTime2] | [JobID2] | [CreateTime2] | [InstanceID2] |
| [Region3] | [Status3] | [Name3] | [ExpireTime3] | [JobID3] | [CreateTime3] | [InstanceID3] |

脚本会输出所有行,包含每个任务的实际数据——不会截断。

迁移任务

共 [N] 个

地域状态DTS任务名称过期时间DTS任务ID创建时间DTS实例ID
[Region][Status][Name][ExpireTime][JobID][CreateTime][InstanceID]
同步任务

共 [N] 个

地域状态DTS任务名称过期时间DTS任务ID创建时间DTS实例ID
[Region][Status][Name][ExpireTime][JobID][CreateTime][InstanceID]
订阅任务

共 [N] 个

地域状态DTS任务名称过期时间DTS任务ID创建时间DTS实例ID
[Region][Status][Name][ExpireTime][JobID][CreateTime][InstanceID]

字段定义:

  • 地域:任务所在的地域(中文,例如:华东1(杭州))。
  • 状态:任务状态(例如:Synchronizing、Completed)。
  • 任务类型:映射为中文(迁移、同步、订阅)。
  • 过期时间:仅预付费实例有此字段。
  • DTS任务ID:唯一任务标识符(DtsJobId)。
  • DTS实例ID:DTS 实例标识符(DtsInstanceID/DtsInstanceId)。
  • 创建时间:任务创建时间戳(CreateTime)。

工作流

  1. 解析参数。
  2. 安全与验证:
    • 区域验证:必须根据 SUPPORTED_REGIONS 白名单验证 --region 参数。区域无效时立即退出并报错。
    • Workers 验证:--workers 参数必须在 [1, 32] 范围内。超出此范围的值会导致立即退出并报错。
    • API 验证:尝试调用 describe-dts-jobs 进行初步验证。如果返回 403 或 400,立即停止并报告 RAM 权限问题。
    • 服务限制:严格禁止为查询 DTS 任务而调用非 DTS 服务(例如 SchedulerX、ECS、FC);所有调用仅限 DTS API 端点。
  3. 性能:使用 --workers 创建 ThreadPoolExecutor(默认值为 8)。
  4. 并行查询每个区域/类型组合的 API,注入 _QueryRegion,并为海外区域添加 --endpoint。
  5. 可靠性(回退逻辑):如果针对某个特定目标的 describe-dts-jobs 连续失败 3 次,立即终止执行,不再尝试该目标的其他 DTS 接口或区域。
  6. 性能:如果第 1 页返回空结果,则跳过分页(提前退出优化)。
  7. 性能:使用 PageSize=200,以尽量减少 API 调用(与 v10 相比减少 50%)。
  8. 性能:将每次 API 调用的超时时间增加至 10s,以提高可靠性(v12.1 - 速度与可靠性之间的平衡)。
  9. 可靠性:API 调用失败时,使用指数退避策略重试,最多 3 次(0.2s、0.4s),以更好地处理超时(v12+)。
  10. 可靠性:使用 Lock 确保线程安全的数据收集(v12)。
  11. 可靠性:验证 API 响应——仅接受包含有效 "DtsJobList" 字段的响应(v12)。
  12. 将原始 JSON 保存到 /tmp/dts_raw_*.json。
  13. 读取临时文件,按 PayType(PrePaid/PostPaid)筛选,然后应用用户筛选条件。
  14. 按类型(Migration/Sync/Subscribe)分组任务,并按 CreateTime 排序(最新的在前)。
  15. 格式化并打印完整的中文报告,包含完整任务列表(不截断)。
  16. 删除临时文件。

输出完整性保证:

  • ✅ 脚本输出 100% 的任务:脚本始终输出所有任务,不会截断
  • ✅ 格式就绪:输出采用 Markdown 表格,可直接用于模型回复
  • ✅ 零遗漏:任何情况下都不会隐藏、概述或省略任务
  • ✅ 必须显示所有行:使用此技能时,必须原样输出每一条任务记录
  • ✅ 禁止截断:绝不截断、概述或使用“...”占位符
  • ✅ 保留完整性:脚本输出是完整的——你的回复也必须完整
  • ✅ 每个任务均可见:脚本会输出每个任务——你的模型回复也必须显示每个任务
  • ✅ 无一例外:脚本输出 = 完整数据。你的输出必须 = 完整数据。始终如此。

请记住:脚本输出完整且有保证。你的模型回复必须 100% 保留输出,不得以任何方式截断、概述或省略。原样显示每一条任务记录。

评论

支持 Markdown