MaxCompute Quota 管理
使用阿里云 CLI 和 SDK 管理 MaxCompute(ODPS)Quota 资源。本 Skill 涵盖按量付费 quota 创建、quota 查询和 quota 列表操作。
限制与注意事项
| 功能 | CLI 支持 | SDK 支持 | 说明 |
|---|---|---|---|
| 创建按量付费 Quota | ✅ 支持 | ✅ 支持 | 完全支持 |
| 创建订阅 Quota | ❌ 不支持 | ❌ 不支持 | 暂不可用 |
| 查询 Quota(get-quota) | ✅ 支持 | ✅ 支持 | ⚠️ 已弃用 - 改用 query-quota |
| 查询 Quota(query-quota) | ✅ 支持 | ✅ 支持 | 推荐的 get-quota 替代 |
| 列出 Quota | ✅ 支持 | ✅ 支持 | 完全支持(按量付费和订阅均支持) |
| 删除 Quota | ❌ 无 API | ❌ 无 API | API 不可用 - 必须使用控制台 |
| 修改 Quota | ❌ 不在范围 | ❌ 不在范围 | 本解决方案未覆盖 |
重要:
- 创建订阅 Quota 在本 Skill 中暂不支持。订阅 quota 创建请使用 阿里云控制台。
- 删除 Quota 操作不能通过 CLI 或 SDK 完成。必须使用 阿里云控制台 删除 quota。
- query-quota 优先 - get-quota 已弃用,但如返回成功仍可接受
- ⚠️ 关键:检查 quota 是否存在时,始终使用 list-quotas,绝不使用 get-quota
- 🚨 强制:create-quota 之前,必须先调用 list-quotas - 绝不跳过此步骤
架构
阿里云账号 → MaxCompute 服务 → Quota 资源(CU)
├── 按量付费 Quota(后付费) ← **支持创建**
└── 订阅 Quota(预付费) ← 仅查询/列表
安装
预检查:需要 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 CLI 插件
[必须] 手动安装 maxcompute 插件:aliyun plugin install maxcompute
[必须] 更新插件到最新版本:aliyun plugin update maxcompute
验证 CLI 版本
aliyun version
安装 maxcompute 插件(提示时确认)
aliyun plugin install maxcompute
更新 maxcompute 插件到最新版本
aliyun plugin update maxcompute
**[必须] CLI User-Agent** —— 每次调用 `aliyun` CLI 命令都必须包含:
`--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-quota-manage`
在核心工作流**开始**时(任何 CLI 调用之前):
**[必须] 启用 AI-Mode** —— Agent Skill 执行需要 AI-mode。
在任何 CLI 调用之前运行以下命令:
aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-odps-quota-manage"
**[必须] 在每一个退出点禁用 AI-Mode** —— 在交付最终响应之前(无论何种原因),必须先禁用 AI-mode。这适用于所有退出路径:工作流成功、工作流失败、错误/异常、用户取消、会话结束,或任何不再执行 CLI 命令的场景。
AI-mode 仅用于 Agent Skill 调用场景,Skill 停止运行后**绝不能**保持启用状态。
aliyun configure ai-mode disable
环境变量
本 Skill 依赖 aliyun CLI 默认凭证链。无需显式配置凭证。
- 首次使用前运行
aliyun configure设置凭证 - 不要在命令中显式处理或传递凭证值
超时配置:
ALIBABA_CLOUD_CONNECT_TIMEOUT:连接超时(默认:10s)ALIBABA_CLOUD_READ_TIMEOUT:读取超时(默认:10s)- 这些默认值对 quota 操作已足够;无需显式配置
参数确认
重要:参数确认 —— 在执行任何命令或 API 调用之前,
所有用户可自定义参数(例如 RegionId、quota 昵称、计费类型等)
都必须与用户确认。未经用户明确批准,不要假设或使用默认值。
输入校验
| 参数 | 校验规则 |
|---|---|
RegionId | 必须是有效的阿里云地域 ID(例如 cn-hangzhou、cn-shanghai) |
nickname | 最多 64 字符;字母数字、连字符(-)、下划线(_);含中文字符时需 URL 编码 |
chargeType | 必须为 payasyougo(不支持订阅) |
commodityCode | 必须为 odps、odpsplus、odps_intl 或 odpsplus_intl |
billingType | 必须为 payasyougo、subscription 或 ALL |
安全注意: 所有用户输入都传递给 aliyun CLI,由它处理参数净化。不要使用原始用户输入进行字符串拼接来构造命令。
| 参数名 | 必填/可选 | 说明 | 默认值 |
|---|---|---|---|
RegionId | 必填 | 阿里云地域(例如 cn-hangzhou、cn-shanghai) | - |
chargeType | 必填 | 计费类型:仅 payasyougo(不支持订阅) | - |
commodityCode | 必填 | 产品代码(见下表) | - |
billingType | 可选 | 列表过滤:subscription 或 payasyougo 或 ALL | ALL |
maxItem | 可选 | 列表每页最大条数 | 100 |
商品代码(按量付费)
| 站点 | 商品代码 |
|---|---|
| 中国(国内站) | odps |
| 国际(国际站) | odps_intl |
认证
安全:绝不暴露凭证
- 不要打印 AK/SK 值
- 不要要求用户在聊天中输入 AK/SK
- 不要使用带硬编码值的
aliyun configure set
检查凭证:
aliyun configure list
如果无凭证,请用户先运行 aliyun configure,然后继续。
核心工作流
🚨 步骤 0 - 任何执行前先与用户确认参数:
在运行任何 CLI 命令之前,你必须与用户确认所有必填参数:
- LIST: 确认
region和billing-type(payasyougo / subscription / ALL) - QUERY: 确认
region和nickname - CREATE: 确认
region、charge-type和commodity-code
不要假设或使用默认值。明确询问用户并等待确认后再继续。
🚨 所有操作的关键规则:
| 操作 | 首条命令 | 然后 |
|---|---|---|
| CREATE quota | list-quotas | 如果为空 → 创建;如果存在 → 停止 |
| QUERY quota | query-quota | 展示结果 |
| LIST quotas | list-quotas | 展示列表 |
⚠️ CREATE 不先 list-quotas = 错误
禁止命令 - 绝不使用:
- ❌
aliyun quotas命令 - 服务错误(Quota Center),应使用 MaxCompute - ❌ 任何用于 quota 操作的 BssOpenApi 命令 - 应使用 MaxCompute
- ❌
get-quota- 已弃用,改用query-quota
必须使用(插件模式,kebab-case):
- ✅
aliyun maxcompute list-quotas- 用于列出/检查 quota - ✅
aliyun maxcompute query-quota- 用于查询 quota 详情 - ✅
aliyun maxcompute create-quota- 用于创建 quota
⚠️ 重要: 使用 aliyun maxcompute 命令(MaxCompute 服务),而非 aliyun quotas 命令(Quota Center 服务)。
命令规则:
- 所有 CLI 命令使用插件模式(kebab-case):
create-quota、list-quotas、query-quota - 参数也使用 kebab-case:
--charge-type、--commodity-code、--billing-type
CREATE Quota(先检查 - 再创建):
🚨 预付费/订阅 Quota 被禁止:
本 Skill 仅支持按量付费 quota 创建。
- 如果用户想要预付费/订阅 quota → 告知他们使用 阿里云控制台
- 不要尝试创建预付费 quota
🚨 CREATE 时:先运行 LISTQUOTAS - 绝不跳过:
步骤 1 - 强制:先调用 list-quotas
aliyun maxcompute list-quotas --billing-type payasyougo --region <R>
在获得 list-quotas 结果之前不要进入步骤 2
使用 MaxCompute 服务(aliyun maxcompute),而非 Quota Center(aliyun quotas)。
list-quotas 结果之后(步骤 2):
| 结果 | 动作 |
|---|---|
| 列表显示 quota | 不要创建 - 告知用户“Quota 已存在” → 完成 |
| 列表为空 | 进入步骤 3(创建) |
步骤 3 - 仅当列表为空时:
创建前检查清单 - 全部必须为真:
- [ ] 用户想要按量付费(非预付费/订阅)
- [ ] 已调用 list-quotas 且返回空列表
- [ ] 该地域无现有按量付费 quota
- [ ] 用户确认想要创建
aliyun maxcompute create-quota --charge-type payasyougo --commodity-code odps --region <R> --client-token <UNIQUE_TOKEN>
国际站:
aliyun maxcompute create-quota --charge-type payasyougo --commodity-code odps_intl --region <R> --client-token <UNIQUE_TOKEN>
关键:
- 使用插件模式(kebab-case):
create-quota - 使用 MaxCompute 服务,而非 BssOpenApi
- client-token: 生成唯一 token(如 UUID)用于重试幂等
- commodityCode 取值:
- 中国站:
odps或odpsplus - 国际站:
odps_intl或odpsplus_intl - 绝不要用
maxcompute作为 commodityCode - 注意:设置
chargeType=payasyougo时,commodityCode 校验不严格
⚠️ 输出处理:
- 不要将命令输出管道到文件(例如
| tee ...或> file.json)——如果目标目录不存在,即使 API 调用成功,命令也会返回非零退出码。 - 让 CLI 直接打印输出到 stdout,然后内联解析结果。
- 保存输出文件时(例如
existing_quotas.json、actions_log.txt),写入任何文件之前始终先mkdir -p <directory>确保目标目录存在。
最后:
- 解析结果
- 展示给用户
- 完成
⚠️ 绝不在 list-quotas 之前调用 create-quota。这会导致错误。
注意: 如果 quota 已存在,不要创建。仅当 list-quotas 返回空列表时才创建。
QUERY Quota(用户提供 nickname 时):
优先级: 使用 query-quota 作为按 nickname 查询特定 quota 详情的主要 API。
检查清单:
- [ ] 用户提供了 quota nickname
- [ ] 使用
query-quota(不是get-quota)
使用此命令:
aliyun maxcompute query-quota --nickname <N> --region <R>
重要: 如果 nickname 包含中文字符,先 URL 编码再传给命令。
禁止: get-quota 已弃用 - 改用 query-quota。
- 解析 JSON
- 提取:
nickName、name、id、status - 展示所有字段 → 完成
LIST Quotas:
⚠️ 列出 Quota:仅使用 MaxCompute list-quotas,不用 BssOpenApi
检查现有按量付费 quota 时(创建前):
aliyun maxcompute list-quotas --billing-type payasyougo --region <R>
必须包含 --billing-type payasyougo 以在 API 层过滤。
列出所有 quota 时(用户请求):
aliyun maxcompute list-quotas --billing-type ALL --region <R>
billingType 参数:
- 有效值:
payasyougo、subscription、ALL - 未设置时默认为
ALL - 检查现有按量付费 quota 时使用
payasyougo
- 解析 JSON
- 提取
quotaInfoList数组 - 展示列表 → 完成
响应字段 odpsSpecCode 枚举值:
| odpsSpecCode | 说明 |
|---|---|
OdpsStandard | ODPS 按量付费资源 |
OdpsSpot | ODPS 抢占/错峰资源(按量付费) |
OdpsDev | 开发者资源类型 |
OdpsPlusStandard | 订阅资源 |
OdpsPlusHa | 高可用资源 |
OdpsPlusElasticCU | ODPS 非预留弹性 CU 订阅资源 |
快速参考
完整 CLI 命令参考和响应格式详情见 references/related-apis.md。
要点:
- 创建前使用
list-quotas --billing-type payasyougo - 使用
query-quota(不是get-quota)查询 - 使用
create-quota(kebab-case 插件模式)创建 - 始终包含
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-quota-manage
任务完成
输出文件 —— 完成前必须创建:
mkdir -p outputs ran_scripts—— 先确保目录存在- 将 quota 查询/列表结果保存到
outputs/existing_quotas.json - 将所有执行动作日志保存到
ran_scripts/actions_log.txt
重要: 写入文件前始终对目标目录运行 mkdir -p。绝不要假设目录已存在。
完成时:
- 所做工作摘要
- 关键结果(nickname、region、status)
- 确认输出文件已写入(
outputs/existing_quotas.json、ran_scripts/actions_log.txt) - “✅ 完成”
错误处理
| 错误码 | 如何处理 |
|---|---|
QuotaAlreadyExists | Quota 存在 → 查询并展示详情 → 任务完成 |
QuotaNotFound | Quota 不存在 → 告知用户 |
InvalidParameter | 参数格式错误 → 与用户核对 |
Forbidden | 无权限 → 引导到控制台 |
INTERNAL_ERROR | 重试一次或联系支持 |
清理
无删除 API - 必须使用 控制台 删除 quota
API 参考
完整 API 参考、CLI 命令和响应格式见 references/related-apis.md。
最佳实践
- 任何操作前始终与用户确认地域
- 创建时:先列出检查 quota 是否存在(每地域一个限制)
- 如果 quota 存在:为用户查询它,而非尝试创建
- 使用 query-quota(不是 get-quota)查询 quota 详情
- 订阅 quota:引导用户到阿里云控制台
参考链接
| 参考 | 说明 |
|---|---|
| references/related-apis.md | 完整 CLI 命令和 API 参考 |
| references/ram-policies.md | 所需 RAM 权限 |
| references/verification-method.md | 成功验证步骤 |
| references/acceptance-criteria.md | 测试验收标准 |
| references/cli-installation-guide.md | CLI 安装指南 |
阿里云skills
◯ 评论 0