关于 alibabacloud-dts-task-query
用于通过 Alibaba Cloud CLI 查询 Alibaba Cloud DTS 迁移、同步和订阅任务状态的技能,面向需要汇总任务运行情况的用户。它支持按地域和任务名称筛选,并以中文分组列出任务明细。
主要功能
- 01查询迁移、同步和订阅任务
- 02支持地域、实例和任务名称筛选
- 03并行查询多个地域
- 04失败请求重试与响应校验
- 05按类型和创建时间排序输出
适用场景
- 01汇总多个地域的 DTS 任务状态
- 02查找指定实例或名称的任务
- 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.mdscripts/query_dts_tasks.pyverify_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 多次连续运行测试,所有结果均一致
执行规则(强制)
- 完整轮询:除非指定了特定地域,否则必须遍历全部 27 个地域和 3 种任务类型(
MIGRATION、SYNC、SUBSCRIBE)。 - 注入地域:在查询阶段,脚本必须将
_QueryRegion字段注入每个任务对象。 - 海外地域的端点:对于海外地域,脚本必须成功为查询任务添加
--endpoint参数。 - PayType 筛选:读取临时文件后,严格筛选任务,仅包含
PayType为PrePaid或PostPaid的任务。 - 中文输出:所有输出(摘要和表头)都必须使用中文。必须映射 JobType(例如,migration → 迁移)。
- 分组输出:任务按类型(迁移/同步/订阅)分组,每组按 CreateTime 排序(最新的在前)。
- 并行执行:脚本必须使用 ThreadPoolExecutor 执行并行查询(v11+)。默认使用 8 个工作线程,可通过
--workers配置。 - API 重试:脚本最多重试失败的 API 调用 3 次,以确保可靠性(v12+)。
- 线程安全:脚本使用 Lock 实现线程安全的数据收集,以防止竞态条件(v12+)。
- 参数严格性:必须使用用户输入中提供的确切地域 ID 和筛选关键词。即使用户输入看似模糊,也不得替换地域(例如 cn-shanghai)。
- 强制筛选:如果提供了
--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)。
工作流
- 解析参数。
- 安全与验证:
- 区域验证:必须根据 SUPPORTED_REGIONS 白名单验证
--region参数。区域无效时立即退出并报错。 - Workers 验证:
--workers参数必须在 [1, 32] 范围内。超出此范围的值会导致立即退出并报错。 - API 验证:尝试调用
describe-dts-jobs进行初步验证。如果返回403或400,立即停止并报告 RAM 权限问题。 - 服务限制:严格禁止为查询 DTS 任务而调用非 DTS 服务(例如 SchedulerX、ECS、FC);所有调用仅限 DTS API 端点。
- 区域验证:必须根据 SUPPORTED_REGIONS 白名单验证
- 性能:使用
--workers创建 ThreadPoolExecutor(默认值为 8)。 - 并行查询每个区域/类型组合的 API,注入
_QueryRegion,并为海外区域添加--endpoint。 - 可靠性(回退逻辑):如果针对某个特定目标的
describe-dts-jobs连续失败 3 次,立即终止执行,不再尝试该目标的其他 DTS 接口或区域。 - 性能:如果第 1 页返回空结果,则跳过分页(提前退出优化)。
- 性能:使用 PageSize=200,以尽量减少 API 调用(与 v10 相比减少 50%)。
- 性能:将每次 API 调用的超时时间增加至 10s,以提高可靠性(v12.1 - 速度与可靠性之间的平衡)。
- 可靠性:API 调用失败时,使用指数退避策略重试,最多 3 次(0.2s、0.4s),以更好地处理超时(v12+)。
- 可靠性:使用 Lock 确保线程安全的数据收集(v12)。
- 可靠性:验证 API 响应——仅接受包含有效 "DtsJobList" 字段的响应(v12)。
- 将原始 JSON 保存到
/tmp/dts_raw_*.json。 - 读取临时文件,按
PayType(PrePaid/PostPaid)筛选,然后应用用户筛选条件。 - 按类型(Migration/Sync/Subscribe)分组任务,并按 CreateTime 排序(最新的在前)。
- 格式化并打印完整的中文报告,包含完整任务列表(不截断)。
- 删除临时文件。
输出完整性保证:
- ✅ 脚本输出 100% 的任务:脚本始终输出所有任务,不会截断
- ✅ 格式就绪:输出采用 Markdown 表格,可直接用于模型回复
- ✅ 零遗漏:任何情况下都不会隐藏、概述或省略任务
- ✅ 必须显示所有行:使用此技能时,必须原样输出每一条任务记录
- ✅ 禁止截断:绝不截断、概述或使用“...”占位符
- ✅ 保留完整性:脚本输出是完整的——你的回复也必须完整
- ✅ 每个任务均可见:脚本会输出每个任务——你的模型回复也必须显示每个任务
- ✅ 无一例外:脚本输出 = 完整数据。你的输出必须 = 完整数据。始终如此。
请记住:脚本输出完整且有保证。你的模型回复必须 100% 保留输出,不得以任何方式截断、概述或省略。原样显示每一条任务记录。
评论
支持 Markdown