MaxCompute 项目管理

管理阿里云 MaxCompute(ODPS)项目,包括创建、查询和列出操作。

前置条件

前置检查:需要 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-project-manage

[必须] AI-Mode 命令 —— 使用 aliyun CLI 时,声明 AI-Mode 生命周期:

  1. 命令前启用 AI-Mode:
   aliyun configure ai-mode enable
  1. 为 AI-Mode 设置 User-Agent:
   aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage"
  1. 工作流结束后禁用 AI-Mode:
   aliyun configure ai-mode disable

快速开始

当用户询问 MaxCompute 项目时,遵循以下步骤:

  1. 识别意图:创建 / 列出 / 获取
  2. 获取 RegionId:询问用户哪个地域(例如 cn-hangzhou、cn-shanghai)
  3. 执行:用 --region {REGION_ID}--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage 运行相应命令
  4. 验证:确认结果并报告给用户

预检清单(每条命令前执行)

运行任何命令前,你必须验证以下所有项:

  • [ ] 我已询问用户 RegionId(未使用默认值)
  • [ ] 我有来自用户的实际 RegionId 值(非占位符)
  • [ ] 我的命令包含 --region {ACTUAL_REGION_ID}
  • [ ] 我的命令包含 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  • [ ] 我没有读取或回显任何 AK/SK 值
  • [ ] 我没有对用户提供的参数使用硬编码值

如果任何检查失败,停止并在继续前修复。

任务完成清单

关键:你必须按顺序完成所有步骤。不要提前停止。

列出项目:

  1. [ ] 询问用户:"你想查询哪个地域?(例如 cn-hangzhou、cn-shanghai)"
  2. [ ] 询问用户:"按哪个 quota 昵称过滤?(例如 os_PayAsYouGoQuota,或直接回车使用默认)"
  3. [ ] 必须使用 quota-nick-name 参数:
  • 若用户指定了 quota:使用 --quota-nick-name={USER_QUOTA}
  • 若用户未指定:使用 --quota-nick-name=os_PayAsYouGo
  1. [ ] 用必需参数执行:
   aliyun maxcompute list-projects --region {REGION_ID} --quota-nick-name={QUOTA_NICKNAME} --max-item=20 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  1. [ ] 等待命令输出
  2. [ ] 若 400 错误(quota 未找到):
  • 调用 aliyun maxcompute list-quotas --billing-type ALL --region {REGION_ID} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  • 向用户呈现可用 quota 供选择
  • 用用户选择的 quota 重新运行 list-projects
  1. [ ] 解析响应并呈现结果
  2. [ ] 向用户确认任务完成

禁止:

  • ❌ 用 --marker 分页
  • ❌ 获取所有项目后用 Python/jq 本地过滤
  • ❌ 不带 --quota-nick-name 参数调用 API

必需:

  • ✅ 始终使用 --quota-nick-name 配用户 quota 或默认值
  • ✅ 始终使用 --max-item=20
  • ✅ 让 API 做服务端过滤

获取项目:

  1. [ ] 询问用户:"哪个地域?(例如 cn-hangzhou)"
  2. [ ] 询问用户:"项目名是什么?"
  3. [ ] 执行:aliyun maxcompute get-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  4. [ ] 等待命令输出
  5. [ ] 解析 JSON 响应——查找 data.namedata.statusdata.owner
  6. [ ] 以清晰格式向用户呈现项目详情
  7. [ ] 向用户确认任务完成

创建项目:

  1. [ ] 询问用户:"在哪个地域创建?(例如 cn-hangzhou)"
  2. [ ] 询问用户:"项目名是什么?"
  3. [ ] 强制校验: 若项目名为空或仅空白,停止并再次询问用户:"项目名不能为空。请提供有效的项目名。"
  4. [ ] 关键: 存储用户的精确项目名——不要用占位符文本
  5. [ ] 必须调用 list-quotas: 执行:aliyun maxcompute list-quotas --billing-type ALL --region {REGION_ID} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  6. [ ] 等待命令输出
  7. [ ] 解析 list-quotas 响应: 找到含 nickName 的 quota 及其二级 quota(查找 data.quotas[].subQuotas 或类似字段)
  8. [ ] 严格校验: 从 list-quotas 响应中选择二级 quota 的 nickName(不是主 quota)
  9. [ ] 去除空白: 删除 quota nickName 的任何前导 / 尾随空格。若 nickName 含内部空格,修剪它们或选择其他 quota
  10. [ ] 预检: 验证你有 REGION_ID、PROJECT_NAME 和 SECONDARY_QUOTA_NICKNAME 的实际值(已修剪,无空格)
  11. [ ] 询问 typeSystem(可选): "用哪个 typeSystem?(1=MaxCompute,2=MaxCompute2,hive=Hive 兼容;默认:2)"
  12. [ ] 校验 typeSystem: 必须是 "1"、"2" 或 "hive"。若未指定或无效,使用默认 "2"
  13. [ ] 用实际值执行创建命令:
    aliyun maxcompute create-project --region {ACTUAL_REGION} --body '{"name":"ACTUAL_PROJECT_NAME","defaultQuota":"SECONDARY_QUOTA_NICKNAME","productType":"payasyougo","typeSystem":"TYPE_SYSTEM_VALUE"}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage

含实际值的示例:

    aliyun maxcompute create-project --region cn-hangzhou --body '{"name":"my-project-123","defaultQuota":"os_PayAsYouGoQuota_sub","productType":"payasyougo","typeSystem":"2"}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  1. [ ] 等待命令输出
  2. [ ] 检查创建响应: 若创建命令返回错误(非 2xx),停止并向用户报告错误。不要继续验证。
  3. [ ] 仅当创建成功: 通过执行验证:aliyun maxcompute get-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  4. [ ] 关键: 验证响应包含正确的项目名(用户请求的那个,不是其他项目)
  5. [ ] 检查状态: 验证响应包含 "status":"AVAILABLE"
  6. [ ] 若验证返回 403/Access Denied: 告知用户权限要求并停止
  7. [ ] 若项目未找到: 报告"项目创建失败——创建后未找到项目"
  8. [ ] 若返回错误项目: 报告错误——不要用其他项目作为替代
  9. [ ] 仅当所有检查通过: 向用户确认:"项目 {PROJECT_NAME} 创建成功,状态为 AVAILABLE"

若用户请求删除:

回复:"本 Skill 不支持项目删除。请使用阿里云控制台或联系管理员。"

常见错误与解决方案

错误原因解决方案
ProjectNotFound项目不存在检查项目名拼写和地域
ProjectAlreadyExist名称已占用请用户提供不同的项目名
get project default quota error无有效 quota先运行 list-quotas,确保 quota 存在
InvalidProjectName命名格式错误仅使用小写字母、数字、下划线(3-28 字符)
NoPermission403 Access DeniedRAM 权限问题告知用户:"你需要 list-quotas、create-project 和 get-project 的 odps 权限。请联系管理员。"
RegionId required缺少 --region始终给命令加 --region {REGION_ID}
ODPS-0420095: Access Denied缺少读权限告知用户所需权限并停止

禁止行为

关键:绝不做这些:
1. 绝不读取 / 回显 AK/SK 值(例如 echo $ALIBABA_CLOUD_ACCESS_KEY_ID
2. 绝不使用硬编码值——始终询问用户参数,然后用他们的实际答案(非占位符文本)
3. 绝不使用字面凭证值运行 aliyun configure set
4. 绝不运行 aliyun ram 命令
5. 绝不执行任何不带 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage 的命令
6. 绝不跳过询问 RegionId——这始终是必需的
7. 绝不假设默认地域——始终询问用户
8. 绝不用大写 API action 格式作为 CLI 命令——始终使用小写加连字符的插件格式(例如 create-project
9. 绝不执行 aliyun maxcompute delete-project——本 Skill 不支持项目删除

反面示例

❌ 错误✅ 正确
用大写 API action 名作为 CLI 命令aliyun maxcompute create-project(插件格式,小写加连字符)
'{"name":"{PROJECT_NAME}"}'(占位符)'{"name":"actual-name"}'(实际值)
--region cn-hangzhou(硬编码)先询问用户,然后用他们的答案
缺少 --user-agent必须包含 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
echo $ALIBABA_CLOUD_ACCESS_KEY_ID绝不读取 / 显示凭证
aliyun ram ... 命令RAM 命令超出范围
aliyun maxcompute delete-project不支持项目删除
失败时验证另一个项目报告失败,不要替代

架构

MaxCompute 服务
    └── Project(工作空间)
          ├── defaultQuota(计算资源——项目创建前必须存在)
          ├── productType(payasyougo/subscription)
          └── typeSystem("1"、"2" 或 "hive";默认:"2")

依赖

前置条件:创建项目前 quota 必须存在。
每个 MaxCompute 项目都需要一个计算 quota(defaultQuota)。quota 必须已在你的账号中存在——如果没有,create-project 调用会失败并报 get project default quota error
使用 alibabacloud-odps-quota-manage skill 创建或查询 quota:
- 按量付费aliyun maxcompute create-quota --charge-type payasyougo --commodity-code odps --region <region> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
- 包年包月:见 alibabacloud-odps-quota-manage skill 获取完整参数(partNickName、CU、ord_time 等)
- 列出现有 quotaaliyun maxcompute list-quotas --billing-type ALL --region <region> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
创建或确认 quota 存在后,用其 nickName 作为创建项目时的 defaultQuota 参数。

安装

前置检查:需要 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 插件

[必须] 运行 aliyun configure set --auto-plugin-install true 启用插件自动安装。
[必须] 运行 aliyun plugin update 确保已有插件始终为最新版本。

安装 / 更新阿里云 CLI

curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash

验证版本(必须 >= 3.3.3)

aliyun version

启用插件自动安装

aliyun configure set --auto-plugin-install true

更新插件

aliyun plugin update

环境变量

除标准阿里云凭证外无需额外环境变量。

鉴权

关键:任何操作前必须检查凭证。

允许的凭证检查(仅此命令):

aliyun configure list

要查找什么:

  • 输出显示至少一个 mode: AKmode: StsToken 的 profile
  • Profile 显示 access_key_id: ********(掩码即可)

如果没有有效 profile:

  • 告知用户:"请先运行 aliyun configure 设置凭证。"
  • 停止 —— 不要继续任何 MaxCompute 命令

禁止——绝不做这些:

  • echo $ALIBABA_CLOUD_ACCESS_KEY_ID
  • echo $ALIBABA_CLOUD_ACCESS_KEY_SECRET
  • aliyun configure get | grep access-key
  • ❌ 任何显示实际凭证值的命令

RAM 策略

[必须] RAM 权限预检: 执行工作流前,验证当前用户具有所需权限。
所需权限列在 references/ram-policies.md
注意:不需要通过 CLI 命令验证 RAM 权限。ram-policies.md 中列出的权限仅供用户参考。假设用户已配置适当权限继续工作流。

参数

始终询问用户这些值——绝不假设默认值:

参数必填说明
RegionId地域 ID(cn-hangzhou、cn-shanghai 等)
projectName项目名
quotaNickName创建时Quota 别名(从 list-quotas 获取)

示例对话

列出: 用户询问 → Agent 请求 RegionId → Agent 执行 list-projects → Agent 呈现结果

创建: 用户询问 → Agent 请求 RegionId → Agent 请求 projectName → Agent 调用 list-quotas → Agent 创建项目 → Agent 验证 → Agent 确认成功

命令

列出项目

先询问用户 quota 昵称,然后:

aliyun maxcompute list-projects --region {REGION_ID} --quota-nick-name={QUOTA_NICKNAME} --max-item=20 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage

**必须:** 始终使用 `--quota-nick-name` 参数(用户指定或默认)。绝不获取全部后本地过滤。

### 获取项目

aliyun maxcompute get-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage


### 创建项目

1. 先列出 quota:

aliyun maxcompute list-quotas --billing-type ALL --region {REGION_ID} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage


2. 用响应中的 quota nickName 创建:

aliyun maxcompute create-project --region {REGION_ID} --body '{"name":"{PROJECT_NAME}","defaultQuota":"{QUOTA_NICKNAME}","productType":"payasyougo"}' --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage

成功验证方法

详细验证步骤见 references/verification-method.md

验证命令:

aliyun maxcompute get-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage

成功标准:

  • 响应包含 "status":"AVAILABLE"
  • 响应包含与所创建项目匹配的正确 "name"
  • 响应包含与指定 quota 匹配的正确 "defaultQuota"

若验证失败:

  1. 检查错误消息了解具体问题
  2. 向用户报告失败原因
  3. 根据错误类型建议纠正措施

限制

以下操作无法通过 CLI/API 执行,需要控制台访问:

操作原因替代
查看账单详情需要控制台访问使用费用控制台
可视化 IAM 策略管理仅控制台功能用 RAM CLI 管理策略
实时资源监控需要控制台仪表板用 CloudMonitor API

API 与命令表

完整 API 参考见 references/related-apis.md

操作CLI 命令(插件模式)API Action 名
创建项目aliyun maxcompute create-projectcreate-project
获取项目aliyun maxcompute get-projectget-project
列出项目aliyun maxcompute list-projectslist-projects
列出 Quotaaliyun maxcompute list-quotaslist-quotas

Skill 完成标准(skill_pass 必需)

skill_pass_rate 成功需要以下全部为真:

通用要求(所有操作):

  1. ✅ 已询问用户 RegionId 并得到答案
  2. ✅ 所有命令使用 --region {USER_PROVIDED_VALUE}(非硬编码)
  3. ✅ 所有命令包含 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  4. ✅ 未执行禁止行为(无凭证回显、无 ram 命令)
  5. ✅ 任务结果已清晰报告给用户

操作特定要求:

列出:

  • 已执行命令:aliyun maxcompute list-projects --region {REGION} --quota-nick-name=os_PayAsYouGo --max-item=20 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  • 首次尝试必须包含 --quota-nick-name=os_PayAsYouGo 参数
  • 必须包含 --max-item=20 参数
  • 若首次尝试因 400 错误失败,用 --quota-nick-name=os_PayAsYouGoQuota 重试
  • 结果已呈现给用户(项目列表或"未找到项目")

获取:

  • 已执行命令:aliyun maxcompute get-project --region {REGION} --project-name {NAME} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  • 项目详情已呈现给用户

创建:

  • 已询问用户 RegionId 和 projectName(获取实际值)
  • 已先列出 quota:aliyun maxcompute list-quotas --billing-type ALL --region {REGION} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  • body 中必须使用实际值——不是 {PROJECT_NAME} 等占位符
  • 创建命令格式:--body '{"name":"ACTUAL_NAME","defaultQuota":"ACTUAL_QUOTA","productType":"payasyougo"}'
  • 继续前必须检查创建响应是否有错误
  • 已执行验证命令:aliyun maxcompute get-project --region {REGION} --project-name {NAME} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  • 必须验证响应中的项目名与请求的项目匹配
  • 必须验证状态为 AVAILABLE
  • 若验证因权限(403)失败,告知用户并停止
  • 若项目未找到或返回错误项目,报告失败
  • 若验证成功(status=AVAILABLE),向用户确认成功
  • 若用户请求删除,告知他们使用阿里云控制台

最终 Skill 通过检查:

回复用户前,验证:
□ 我遵循了操作类型的正确工作流
□ 我询问了用户所有必需参数
□ 我在命令中使用了用户的实际值(非占位符或默认值)
□ 我在每条命令中都包含了 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
□ 我未执行任何禁止行为
□ 我向用户报告了最终结果

若所有检查通过 → Skill 执行成功
若任何检查失败 → Skill 执行不完整

最终验证(标记任务完成前)

告诉用户任务完成前,你必须验证以下所有项:

列出:

  • [ ] 我询问了 RegionId 并得到用户答案
  • [ ] 我用 --region {USER_ANSWER}--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage 执行了 list-projects
  • [ ] 我清晰地呈现了结果给用户

获取:

  • [ ] 我询问了 RegionId 并得到用户答案
  • [ ] 我询问了 projectName 并得到用户答案
  • [ ] 我用用户的值和 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage 执行了 get-project
  • [ ] 我清晰地呈现了项目详情给用户

创建:

  • [ ] 我询问了 RegionId 并得到用户答案
  • [ ] 我询问了 projectName 并得到用户答案
  • [ ] 我执行了 list-quotas 获取有效 quota
  • [ ] 我用用户的值和 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage 执行了 create-project
  • [ ] 我通过调用 get-project 验证了创建
  • [ ] 我向用户确认了成功

删除:

  • [ ] 告知用户不支持删除并建议使用阿里云控制台

如果任何检查失败,任务未完成。

最佳实践

  1. 命名约定:项目名使用小写字母、数字和下划线
  2. Quota 选择:根据工作负载需求选择合适的 quota
  3. 产品类型:开发 / 测试用 payasyougo,生产用 subscription 以确保可预测的工作负载
  4. 类型系统:除非需要 Hive 兼容,新项目用 2(MaxCompute)
  5. 资源清理:始终清理测试项目以避免不必要的成本

参考链接

文档说明
references/related-apis.md完整 API 参考
references/ram-policies.md所需 RAM 权限
references/verification-method.md验证步骤
references/cli-installation-guide.mdCLI 安装指南
MaxCompute 产品页官方产品文档
create-project APIAPI 参考
get-project APIAPI 参考
list-projects APIAPI 参考