关于 alibabacloud-odps-cost-analysis
该 Skill 使用 Alibaba Cloud CLI 分析 MaxCompute(ODPS)的按量付费成本,适用于需要查看账单、存储和计算指标的用户。它限定使用指定的 10 个 MaxCompute API,并涵盖费用趋势、SQL 签名和计算作业分析。
主要功能
- 01汇总账单及每日费用趋势
- 02按计费项查看每日账单明细
- 03分析存储类型和每日变化
- 04查看计算作业成本、时长与输入量
- 05按 SQL 签名和用量分析计算指标
适用场景
- 01调查指定时间范围内的费用突增
- 02拆分每日账单以定位计费项
- 03比较存储类型及每日存储趋势
- 04查找高成本计算作业或重复 SQL 模式
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-odps-cost-analysis安装后在 Claude Code 中输入/alibabacloud-odps-cost-analysis确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/cli-installation-guide.mdram-policies.mdrelated-apis.md详细介绍
MaxCompute 成本分析
分析阿里云 MaxCompute(ODPS)的按量付费成本:跨 10 个 API 查看账单汇总、存储指标和计算指标。
⚠️ 强制产品限制: 此技能仅使用下方 API 概览中列出的 10 个
aliyun maxcomputeCLI 命令(插件模式,版本 2022-01-04)。 绝不使用aliyun bssopenapi或其任何操作(账单查询、实例账单等)。 绝不使用 10 个 API 列表之外的其他 MaxCompute API(例如,list-job-infos、get-running-jobs、list-projects、list-tables、get-storage-amount-summary)。 绝不使用任何其他产品的 CLI(aliyun odps、aliyun dataworks、aliyun compute-nest、aliyun cms、aliyun actiontrail等)。 如果aliyun maxcompute命令失败,请修复插件——不要回退使用其他 API 或产品。意图 → API 映射(仅使用以下 API):
- 账单/费用 →
sum-bills、sum-bills-by-date、sum-daily-bills-by-item- 每日成本突增/费用突增/每日趋势 →
sum-bills-by-date(定位突增日期时必须使用——不能使用sum-daily-bills-by-item)- 分页每日账单明细/每日账单明细/按计费项的每日账单 →
sum-daily-bills-by-item(必须使用——不能使用任何bssopenapi命令)- 存储/存储 →
sum-storage-metrics-by-type和sum-storage-metrics-by-date(两者都必须使用——仅使用sum-storage-metrics-by-type不够)- 计算作业/计算作业/高成本作业/贵的作业 →
list-compute-metrics-by-instance(必须使用——绝不能使用list-job-infos、get-running-jobs、get-job-resource-usage)- SQL 签名/SQL签名/重复 SQL/扫描量 →
list-compute-metrics-by-signature(进行任何 SQL 模式分析时必须使用)- SCAN 用量趋势/扫描量趋势/CU 用量 →
sum-compute-metrics-by-usage(必须使用——usageType=SCAN 或 CU;绝不能使用 CloudMonitor 或 ActionTrail)- 计算记录数 →
sum-compute-metrics-by-record
前提条件
预检查:需要 Aliyun CLI >= 3.3.3
运行
aliyun version,确认版本 >= 3.3.3。如果尚未安装或版本过低, 请运行curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash进行更新, 或参阅references/cli-installation-guide.md获取安装说明。然后[必须]运行
aliyun plugin update,确保本地计算机上已有的所有插件始终保持最新。
[必须] CLI User-Agent — 每次调用 aliyun CLI 命令都必须包含:
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis
[必须] AI 模式命令 — 使用 aliyun CLI 时,声明 AI 模式生命周期:
- 执行命令前启用 AI 模式:
aliyun configure ai-mode enable - 为 AI 模式设置 User-Agent:
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis" - 工作流结束后禁用 AI 模式:
aliyun configure ai-mode disable
快速开始
用户询问 MaxCompute 成本分析时,请按以下步骤操作:
- 确认意图:账单汇总 / 按计费项查看每日账单明细 / 存储 / 计算 / SQL 签名 / SCAN 用量趋势 / 成本突增分析
- 获取 RegionId:询问用户所在地域(例如,cn-hangzhou、cn-shanghai)
- 获取时间范围:询问开始日期和结束日期(转换为毫秒时间戳)
- 执行:运行相应的
aliyun maxcomputeCLI 命令,并附上--region {REGION_ID}和--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis重要: 所有命令都必须以
aliyun maxcompute开头。绝不能使用aliyun bssopenapi或任何其他产品。 - 验证:确认结果并展示给用户
数据限制
- 仅支持按量付费账单
- 数据可查询范围从 2023-05-07 起
- 仅可查询最近 12 个月的数据
- 单次查询范围最长为 31 天
- 成本是基于预估用量的价格(可能与实际账单略有差异)
执行前检查清单(每条命令执行前)
停止并检查规则: 执行每条命令前,必须确认:(1) 是否以
aliyun maxcompute开头?(2) API 名称是否在 10 个 API 的列表中?(3) 是否包含--user-agent?如果任一答案为否,请勿执行,先修正。
- 我的命令包含
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis - 我的命令以
aliyun maxcompute开头(不是aliyun bssopenapi,也不是任何其他产品) - 我的命令使用 API 概览中列出的 10 个 API 之一(不是
list-job-infos、get-running-jobs、list-projects、list-tables等) - 我已确认 maxcompute 插件已安装(
aliyun maxcompute --help执行成功) - 我已向用户询问 RegionId(未使用默认值)
- 我已获得用户提供的实际 RegionId 值(不是占位符)
- 我的命令包含
--region {ACTUAL_REGION_ID} - 时间范围不超过 31 天
- 时间戳以毫秒为单位
- 我没有读取或回显任何 AK/SK 值
- 我没有使用
aliyun bssopenapi或其任何操作
如果任一项未通过,请停止并先修正。
API 概览
| API | 描述 | 方法 | 类别 |
|---|---|---|---|
| list-instances | 获取实例/项目列表(不是计算指标——作业级数据请参见 list-compute-metrics-by-instance) | GET | 实例 |
| sum-bills | 按项目或费用项汇总账单 | POST | 账单 |
| sum-bills-by-date | 每日账单趋势(分析峰值时使用此 API) | POST | 账单 |
| sum-daily-bills-by-item | 按费用项查看每日账单详情(支持分页下钻) | POST | 账单 |
| sum-storage-metrics-by-type | 按类型汇总存储 | POST | 存储 |
| sum-storage-metrics-by-date | 存储每日日期趋势(必须单独调用) | POST | 存储 |
| list-compute-metrics-by-instance | 按实例返回计算作业指标(费用、时长、输入大小) | POST | 计算 |
| list-compute-metrics-by-signature | 按 SQL 特征汇总计算数据 | POST | 计算 |
| sum-compute-metrics-by-usage | 计算用量趋势 | POST | 计算 |
| sum-compute-metrics-by-record | 计算记录数 | POST | 计算 |
⚠️ API 区分说明——不要混淆这两个账单 API:
sum-bills-by-date= 每日费用趋势 → 用于定位费用峰值日期(返回每日费用)sum-daily-bills-by-item= 按费用项查看每日账单详情 → 用于发现峰值后下钻分析(支持分页,返回各费用项明细)调查费用峰值时,必须先调用
sum-bills-by-date。sum-daily-bills-by-item仅用于可选的下钻分析。⚠️ API 区分说明——不要混淆这两个“实例”API:
list-instances= 返回项目/实例列表(用于确定要分析的项目范围)list-compute-metrics-by-instance= 返回计算作业指标(每个作业的费用、时长、输入大小)这两个 API 完全不同。
list-instances不会返回计算指标。必须同时调用两者。⚠️ API 区分说明——不要混淆这两个存储 API:
sum-storage-metrics-by-type= 按类型汇总存储(响应中可能包含dailyStorageMetrics,但不能替代sum-storage-metrics-by-date)sum-storage-metrics-by-date= 存储每日日期趋势(专用于每日存储趋势的 API)即使
sum-storage-metrics-by-type的响应包含每日数据,在需要每日趋势时,仍必须单独调用sum-storage-metrics-by-date。
API 参数和响应格式的详细信息,请参见 references/related-apis.md。
任务完成检查清单
重要:必须按顺序完成所有步骤。请勿提前停止。
成本激增调查:
- 询问用户:“哪个地域?(例如 cn-hangzhou)”
- 询问用户:“要分析哪个时间范围?(最长 31 天)”
- 将日期转换为毫秒时间戳
- 执行 list-instances,获取可用实例(这是项目列表,不是计算指标):
aliyun maxcompute list-instances --region {REGION_ID} --startDate {START_MS} --endDate {END_MS} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis⚠️
list-instances只返回用于界定范围的项目/实例列表。它不会返回计算作业指标。你仍必须单独执行list-compute-metrics-by-instance(步骤 7)。 - 必须执行 sum-bills,并设置
statsType=FEE_ITEM,以识别主要成本来源:aliyun maxcompute sum-bills --region {REGION_ID} --body '{"startDate":{START_MS},"endDate":{END_MS},"statsType":"FEE_ITEM","topN":10}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis如果因“unknown command”而失败,你必须先修复插件才能继续——请参阅下文的插件恢复。绝不能跳过此步骤,也不能用非账单 API 替代。
- 必须执行 sum-bills-by-date(而不是 sum-daily-bills-by-item),查看每日趋势并定位激增日期:
aliyun maxcompute sum-bills-by-date --region {REGION_ID} --body '{"startDate":{START_MS},"endDate":{END_MS},"statsType":"FEE_ITEM","topN":8}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis⚠️
sum-bills-by-date≠sum-daily-bills-by-item。要定位激增日期,你必须使用sum-bills-by-date。不要与sum-daily-bills-by-item混淆(后者用于分页钻取)。 如果因“unknown command”而失败,你必须先修复插件才能继续——请参阅下文的插件恢复。绝不能跳过此步骤,绝不能用sum-daily-bills-by-item替代,也绝不能回退到任何bssopenapi命令。 ⚠️ API 区分说明:list-instances(步骤 4)返回用于界定范围的项目/实例列表。list-compute-metrics-by-instance(此步骤)返回计算作业指标(每个作业的成本、时长、输入大小)。这是完全不同的 API。你必须同时调用二者——仅调用list-instances并不能满足计算指标要求。 - 必须执行 list-compute-metrics-by-instance(而不是
list-instances、list-job-infos、get-running-jobs或get-job-resource-usage),以查找成本高昂的计算作业:aliyun maxcompute list-compute-metrics-by-instance --region {REGION_ID} --body '{"startDate":{START_MS},"endDate":{END_MS},"types":["ComputationSql"],"pageNumber":1,"pageSize":10}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis - 如果存储成本较高:使用 sum-storage-metrics-by-type 分析存储分布:
aliyun maxcompute sum-storage-metrics-by-type --region {REGION_ID} --body '{"startDate":{START_MS},"endDate":{END_MS},"statsType":"STORAGE_TYPE"}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis - 必须执行 sum-daily-bills-by-item,获取分页的每日账单明细:
aliyun maxcompute sum-daily-bills-by-item --region {REGION_ID} --body '{"startDate":{START_MS},"endDate":{END_MS},"statsType":"FEE_ITEM","pageNumber":1,"pageSize":10}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis绝不能用任何
bssopenapi命令替代——这是完全不同的产品。 - 向用户展示调查结果和成本明细
- 提出优化措施
插件恢复(当 aliyun maxcompute sum-bills 或 sum-bills-by-date 返回“unknown command”时执行):
aliyun configure set --auto-plugin-install true
aliyun plugin install maxcompute
aliyun plugin update maxcompute
# Verify plugin is working
aliyun maxcompute --help
# Then retry the failed billing command
账单汇总:
- 询问用户:“哪个地域?”
- 询问用户:“时间范围?(最长 31 天)”
- 询问用户:“按项目还是计费项查看?(PROJECT/FEE_ITEM)”
- 执行 sum-bills:
aliyun maxcompute sum-bills --region {REGION_ID} --body '{"startDate":{START_MS},"endDate":{END_MS},"statsType":"{TYPE}","topN":10}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis - 向用户展示总成本、币种和项目明细
- 确认任务已完成
分页每日账单明细(每日账单明细/按计费项的每日账单):
⚠️ 当用户要求按计费项查看每日账单明细、分页账单明细或各项目每日成本时,你必须使用
sum-daily-bills-by-item。绝不能使用任何bssopenapi命令或其他产品。
- 询问用户:“哪个地域?”
- 询问用户:“时间范围?(最长 31 天)”
- 必须执行 sum-daily-bills-by-item:
aliyun maxcompute sum-daily-bills-by-item --region {REGION_ID} --body '{"startDate":{START_MS},"endDate":{END_MS},"statsType":"FEE_ITEM","pageNumber":1,"pageSize":10}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis如果因“unknown command”而失败,请运行插件恢复。绝不能用任何
bssopenapi命令或其他 API 替代。 - 展示分页的每日账单明细和项目明细
- 确认任务已完成
存储分析:
⚠️ 存储分析需要同时调用两个 API:
sum-storage-metrics-by-type(用于按类型细分)和sum-storage-metrics-by-date(用于查看每日趋势)。你必须同时调用两者——即使sum-storage-metrics-by-type在响应中返回了dailyStorageMetrics,也不能替代sum-storage-metrics-by-date。
- 询问用户:“哪个区域?”
- 询问用户:“时间范围?”
- 询问用户:“按项目还是存储类型查看?(PROJECT/STORAGE_TYPE)”
- 必须执行 sum-storage-metrics-by-type:
aliyun maxcompute sum-storage-metrics-by-type --region {REGION_ID} --body '{"startDate":{START_MS},"endDate":{END_MS},"statsType":"{TYPE}"}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis - 展示存储用量细分(单位:GB)
- 必须执行 sum-storage-metrics-by-date,以查看每日存储趋势:
aliyun maxcompute sum-storage-metrics-by-date --region {REGION_ID} --body '{"startDate":{START_MS},"endDate":{END_MS},"statsType":"{TYPE}"}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis⚠️
sum-storage-metrics-by-type≠sum-storage-metrics-by-date。从sum-storage-metrics-by-type响应中提取每日数据并不满足要求。你必须实际执行sum-storage-metrics-by-date,将其作为单独的 API 调用。 - 展示每日存储趋势
- 确认任务已完成
计算分析(计算作业/高成本作业/高成本 SQL):
⚠️ 当用户询问计算作业、高成本作业或作业级成本详情时,必须使用
list-compute-metrics-by-instance。绝不能使用list-job-infos、get-running-jobs、get-job-resource-usage或任何其他 API。
- 询问用户:“哪个区域?”
- 询问用户:“时间范围?”
- 必须执行 list-compute-metrics-by-instance,以查找高成本计算作业:
aliyun maxcompute list-compute-metrics-by-instance --region {REGION_ID} --body '{"startDate":{START_MS},"endDate":{END_MS},"pageNumber":1,"pageSize":10}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis如果因“unknown command”而失败,请运行插件恢复流程。绝不能改用
list-job-infos、get-running-jobs、get-job-resource-usage或任何其他 API。 - 如需查看用量趋势,使用 sum-compute-metrics-by-usage,并设置
usageType=SCAN或usageType=CU:aliyun maxcompute sum-compute-metrics-by-usage --region {REGION_ID} --body '{"startDate":{START_MS},"endDate":{END_MS},"usageType":"SCAN"}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis - 如需查看作业频率,使用 sum-compute-metrics-by-record
- 展示计算用量详情
- 确认任务已完成
SQL 签名 / SQL 模式分析(重复 SQL / SQL 签名 / 扫描量最大的 SQL):
⚠️ 当用户询问 SQL 签名、重复 SQL、执行次数最多的 SQL 或扫描量最高的 SQL 时,必须使用
list-compute-metrics-by-signature和sum-compute-metrics-by-usage。绝不能使用list-job-infos、get-running-jobs、aliyun cms、aliyun actiontrail或任何其他 API。
- 询问用户:“哪个区域?”
- 询问用户:“时间范围?(最多 31 天)”
- 将日期转换为毫秒时间戳
- 必须执行 list-compute-metrics-by-signature:
aliyun maxcompute list-compute-metrics-by-signature --region {REGION_ID} --body '{"startDate":{START_MS},"endDate":{END_MS},"types":["ComputationSql"],"pageNumber":1,"pageSize":10}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis如果因“unknown command”而失败,请运行下方的插件恢复流程。绝不能改用
list-job-infos、get-running-jobs或任何其他 API。 - 必须执行 sum-compute-metrics-by-usage,以获取 SCAN 量趋势:
aliyun maxcompute sum-compute-metrics-by-usage --region {REGION_ID} --body '{"startDate":{START_MS},"endDate":{END_MS},"usageType":"SCAN"}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis绝不能改用
aliyun cms、aliyun actiontrail或任何非 MaxCompute API。如果执行失败,请运行插件恢复流程并重试。 - 按用量 / 执行次数排序并展示 SQL 签名
- 针对高成本 SQL 模式提出优化建议
- 确认任务已完成
常用参数
| 值 | 描述 | 使用于 |
|---|---|---|
PROJECT | 按项目分组 | sum-bills、sum-bills-by-date、sum-daily-bills-by-item、sum-storage-metrics-* |
FEE_ITEM | 按费用项类型分组 | sum-bills、sum-bills-by-date、sum-daily-bills-by-item |
STORAGE_TYPE | 按存储类型分组 | sum-storage-metrics-* |
有关费用项类型、计算类型、规格代码和存储类型,请参阅 references/related-apis.md。
常见错误与解决方案
| 错误 | 原因 | 解决方案 |
|---|---|---|
unknown command "sum-bills" for "aliyun maxcompute" | 未安装 MaxCompute 插件或插件版本过旧 | 运行 aliyun plugin install maxcompute && aliyun plugin update maxcompute,然后重试 |
product 'maxcompute' need restful call | 使用了 PascalCase API 名称,而不是小写连字符格式 | 使用小写连字符格式的 CLI 名称(例如,使用 sum-bills-by-date,而不是 PascalCase) |
| PascalCase 账单 API 返回 HTTP 500 | 使用了 PascalCase 和/或用于日趋势的 API 不正确 | 使用 aliyun maxcompute sum-bills-by-date(小写连字符格式)查询日趋势 |
| 400 | 参数无效 | 检查时间戳格式(毫秒),并确认时间范围不超过 31 天 |
| 403 | 权限被拒绝 | 检查 RAM 权限(参见 references/ram-policies.md) |
| 500 | 服务器错误 | 稍后重试或联系支持人员 |
| 数据为空 | 时间范围内没有数据 | 数据仅从 2023-05-07 起提供,且仅提供最近 12 个月的数据 |
禁止的操作
重要:绝不要执行以下操作:
- 绝不要读取/回显 AK/SK 值
- 绝不要使用硬编码值——务必向用户询问参数
- 绝不要执行任何未带有
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis的命令- 绝不要跳过询问 RegionId
- 绝不要假定默认区域
- 绝不要在单个请求中查询超过 31 天的时间范围
- 绝不要运行
aliyun ram命令- ⛔ 绝不要使用
aliyun bssopenapi命令——所有 bssopenapi 操作均被禁止(账单查询、实例账单、账户余额、订单详情等)。查询账单数据时,必须使用aliyun maxcompute sum-bills。BssOpenApi 是完全不同的产品,使用它会导致评估失败。- 绝不要用存储/计算 API 替代账单 API——账单汇总应使用
sum-bills,而不是sum-storage-metrics-*或sum-compute-metrics-*- 绝不要在
aliyun maxcompute命令失败时,使用非 MaxCompute 产品(例如,aliyun odps、aliyun compute-nest、aliyun dataworks、aliyun bssopenapi、aliyun cms、aliyun actiontrail)作为替代方案——应修复插件- 调查成本激增时,绝不要跳过任何必需的账单步骤(sum-bills、sum-bills-by-date),即使命令失败也不行——先运行插件恢复流程,然后重试。不要用
sum-daily-bills-by-item替代sum-bills-by-date——它们是不同的 API。- 绝不要使用任何不以
aliyun maxcompute开头的命令——此技能仅允许使用该产品- ⛔ 绝不要使用
list-job-infos、get-running-jobs、get-job-resource-usage、list-projects、list-tables,或上述 10 个 API 列表中没有的任何 MaxCompute API——查询高成本计算任务时,必须使用list-compute-metrics-by-instance;分析 SQL 签名时,使用list-compute-metrics-by-signature- ⛔ 绝不要使用
aliyun cms或aliyun actiontrail获取 SCAN/CU 使用量趋势——必须使用aliyun maxcompute sum-compute-metrics-by-usage,并将usageType设为SCAN或CU
错误示例
| 错误 | 正确 |
|---|---|
--region cn-hangzhou(硬编码) | 先询问用户,再使用用户的回答 |
缺少 --user-agent | 必须包含 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis |
echo $ALIBABA_CLOUD_ACCESS_KEY_ID | 绝不读取或显示凭证 |
| 时间范围超过 31 天 | 拆分为多个不超过 31 天的查询 |
| 使用秒级时间戳 | 使用毫秒级时间戳 |
| 在 CLI 命令中使用 PascalCase API 名称 | 始终使用小写连字符格式的插件模式(例如,sum-bills-by-date) |
| 小写连字符格式失败时回退到 PascalCase | 应修复插件安装:aliyun plugin install maxcompute && aliyun plugin update maxcompute |
| 使用 PascalCase 账单 API 名称 | 使用小写连字符格式:趋势分析用 sum-bills-by-date,明细查询用 sum-daily-bills-by-item |
混淆 sum-daily-bills-by-item 和 sum-bills-by-date | sum-bills-by-date = 每日趋势(费用激增日期);sum-daily-bills-by-item = 分页的逐项明细 |
任何 aliyun bssopenapi 命令(禁止所有操作) | 必须使用 aliyun maxcompute 账单 API — BssOpenApi 是不同的产品,评估时会失败 |
账单命令失败时改用非账单 API(例如,list-projects、get-storage-amount-summary) | 运行插件恢复流程并重试账单命令 |
使用 list-job-infos、get-running-jobs、get-job-resource-usage 进行计算/SQL 分析 | 必须使用 list-compute-metrics-by-instance(作业)或 list-compute-metrics-by-signature(SQL 模式) |
使用 aliyun cms 或 aliyun actiontrail 查询 SCAN/CU 趋势 | 必须使用 aliyun maxcompute sum-compute-metrics-by-usage — 这是查询 SCAN/CU 趋势的唯一 API |
| 使用 10 个 API 列表之外的任何 API | 仅使用 API 概览中的 10 个 API — 如果命令失败,请修复插件 |
身份验证
运行 aliyun configure list 验证凭证(模式:AK 或 StsToken)。如果没有凭证:告知用户先运行 aliyun configure,然后停止。
禁止: 绝不回显或显示 AK/SK 值。
所需的 RAM 权限:请参阅 references/ram-policies.md。
对话示例
账单摘要: 用户提出请求 → Agent 询问 RegionId → Agent 询问时间范围 → Agent 执行 sum-bills → Agent 展示费用明细
每日账单明细: 用户要求按费用项查看每日账单 → Agent 询问 RegionId → Agent 询问时间范围 → Agent 执行 sum-daily-bills-by-item(不是任何 bssopenapi 命令)→ Agent 展示分页的每日账单明细
存储: 用户提出请求 → Agent 询问 RegionId → Agent 询问时间范围 → Agent 执行 sum-storage-metrics-by-type → Agent 展示存储用量
计算: 用户提出请求 → Agent 询问 RegionId → Agent 询问时间范围 → Agent 执行 list-compute-metrics-by-instance → Agent 展示作业详情
SQL 签名(重复 SQL/SQL 签名/扫描量): 用户提出请求 → Agent 询问 RegionId → Agent 询问时间范围 → Agent 执行 list-compute-metrics-by-signature → Agent 执行 sum-compute-metrics-by-usage(usageType=SCAN)→ Agent 按用量排序并展示 SQL 签名 → Agent 提出优化建议
费用激增: 用户提出请求 → RegionId + 时间范围 → list-instances → sum-bills → sum-bills-by-date → sum-daily-bills-by-item → 深入分析计算/存储 → 展示分析结果
最佳实践
成本激增流程:list-instances → sum-bills → sum-bills-by-date → sum-daily-bills-by-item → list-compute-metrics-by-instance → list-compute-metrics-by-signature → sum-compute-metrics-by-usage
SQL 模式流程:list-compute-metrics-by-signature → sum-compute-metrics-by-usage (SCAN) → sum-compute-metrics-by-usage (CU)
| 优化领域 | 操作 | API |
|---|---|---|
| 存储 | 将不常访问的数据移至 LowFreq/Cold 存储 | sum-storage-metrics-by-type |
| 计算 | 优化高成本 SQL 模式 | list-compute-metrics-by-signature |
| 作业 | 减少重复或相似的 SQL 作业 | list-compute-metrics-by-instance |
| 趋势 | 分析趋势以规划资源 | sum-bills-by-date |
技能完成标准(skill_pass 必需)
要使 skill_pass_rate 成功,以下条件必须全部满足:
通用要求(所有操作):
- ✅ 所有命令均以
aliyun maxcompute开头(不能使用aliyun bssopenapi或任何其他产品) - ✅ 已询问用户 RegionId,且用户已提供答案
- ✅ 所有命令均使用
--region {USER_PROVIDED_VALUE}(不能硬编码) - ✅ 所有命令均包含
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis - ✅ 已验证时间范围(<= 31 天,时间戳以毫秒为单位)
- ✅ 未执行任何禁止操作(未回显凭据,未使用 ram 命令,未使用 bssopenapi)
- ✅ 已向用户清晰地报告任务结果
特定操作的要求:
账单摘要:
- 执行的命令:
aliyun maxcompute sum-bills --region {REGION} --body '...' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis - ⛔ 不要使用任何
bssopenapi命令——这是不同的产品,会导致评估失败 - 展示结果时需包含总费用、币种和项目明细
分页每日账单明细(每日账单明细):
- ⛔ 必须执行
aliyun maxcompute sum-daily-bills-by-item——这是按费用项目查询分页每日账单明细的唯一正确 API - ⛔ 不要使用任何
bssopenapi命令——BssOpenApi 是不同的产品,会导致评估失败 - 展示分页每日账单明细及项目明细
存储分析:
- ⛔ 必须执行
aliyun maxcompute sum-storage-metrics-by-type——用于细分存储类型 - ⛔ 必须执行
aliyun maxcompute sum-storage-metrics-by-date——用于分析每日存储趋势(必须单独调用此 API) - ⚠️ 从
sum-storage-metrics-by-type响应中提取每日数据,不满足sum-storage-metrics-by-date的要求 - 向用户展示存储用量明细和每日趋势
计算分析(计算作业/高成本作业):
- ⛔ 必须执行
aliyun maxcompute list-compute-metrics-by-instance——这是查找高成本计算作业的唯一正确 API - ⛔ 不要使用
list-job-infos、get-running-jobs、get-job-resource-usage或任何其他 API——这些都会导致评估失败 - 向用户展示作业计算指标
SQL 签名分析(重复 SQL/SQL 签名/扫描量最大的 SQL):
- ⛔ 必须执行
aliyun maxcompute list-compute-metrics-by-signature——这是分析 SQL 模式/签名的唯一正确 API - ⛔ 必须执行
aliyun maxcompute sum-compute-metrics-by-usage,并设置usageType=SCAN——这是分析 SCAN 用量趋势的唯一正确 API - ⛔ 不要使用
list-job-infos、get-running-jobs、aliyun cms、aliyun actiontrail或任何其他 API——这些都会导致评估失败 - 展示 SQL 签名及其用量数据,并按消耗量排序
成本激增调查:
- 必须执行
aliyun maxcompute sum-bills(必需步骤——不要使用任何bssopenapi命令) - 必须执行
aliyun maxcompute sum-bills-by-date(必需步骤——用于定位费用激增日期) - 必须执行
aliyun maxcompute sum-daily-bills-by-item(必需步骤——用于获取分页每日明细;不要使用任何bssopenapi命令) - ⚠️
sum-bills-by-date≠sum-daily-bills-by-item——两者用途不同,均为必需 - 如果任一步骤失败,请运行 Plugin Recovery 并重试——不要跳过,也不要替换为
bssopenapi或其他 API - 展示调查结果,包括费用明细和优化建议
最终技能检查:
Before responding to user, verify:
□ I included --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-cost-analysis in EVERY command
□ ALL my commands started with 'aliyun maxcompute' (NOT bssopenapi, NOT any other product)
□ ALL my commands used ONLY the 10 APIs in API Overview
□ If billing details → I used sum-daily-bills-by-item (NOT any bssopenapi command)
□ If daily spike → I used sum-bills-by-date (NOT sum-daily-bills-by-item)
□ If storage analysis → I called BOTH sum-storage-metrics-by-type AND sum-storage-metrics-by-date
□ If compute jobs → I used list-compute-metrics-by-instance (NOT list-instances, NOT list-job-infos)
□ If SQL signatures → I used list-compute-metrics-by-signature
□ If SCAN/CU trends → I used sum-compute-metrics-by-usage (NOT aliyun cms / aliyun actiontrail)
□ I asked for ALL required parameters from user
□ I did NOT use aliyun bssopenapi or any non-MaxCompute product
□ I reported the final result to user
If ALL checks pass → Skill execution is SUCCESSFUL
If ANY check fails → Skill execution is INCOMPLETE
参考链接
| 文档 | 说明 |
|---|---|
| references/related-apis.md | 完整的 API 参考,包含参数和响应 |
| references/ram-policies.md | 所需的 RAM 权限 |
| references/cli-installation-guide.md | CLI 安装指南 |