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 生命周期:
- 命令前启用 AI-Mode:
aliyun configure ai-mode enable
- 为 AI-Mode 设置 User-Agent:
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage"
- 工作流结束后禁用 AI-Mode:
aliyun configure ai-mode disable
快速开始
当用户询问 MaxCompute 项目时,遵循以下步骤:
- 识别意图:创建 / 列出 / 获取
- 获取 RegionId:询问用户哪个地域(例如 cn-hangzhou、cn-shanghai)
- 执行:用
--region {REGION_ID}和--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage运行相应命令 - 验证:确认结果并报告给用户
预检清单(每条命令前执行)
运行任何命令前,你必须验证以下所有项:
- [ ] 我已询问用户 RegionId(未使用默认值)
- [ ] 我有来自用户的实际 RegionId 值(非占位符)
- [ ] 我的命令包含
--region {ACTUAL_REGION_ID} - [ ] 我的命令包含
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage - [ ] 我没有读取或回显任何 AK/SK 值
- [ ] 我没有对用户提供的参数使用硬编码值
如果任何检查失败,停止并在继续前修复。
任务完成清单
关键:你必须按顺序完成所有步骤。不要提前停止。
列出项目:
- [ ] 询问用户:"你想查询哪个地域?(例如 cn-hangzhou、cn-shanghai)"
- [ ] 询问用户:"按哪个 quota 昵称过滤?(例如 os_PayAsYouGoQuota,或直接回车使用默认)"
- [ ] 必须使用 quota-nick-name 参数:
- 若用户指定了 quota:使用
--quota-nick-name={USER_QUOTA} - 若用户未指定:使用
--quota-nick-name=os_PayAsYouGo
- [ ] 用必需参数执行:
aliyun maxcompute list-projects --region {REGION_ID} --quota-nick-name={QUOTA_NICKNAME} --max-item=20 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
- [ ] 等待命令输出
- [ ] 若 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
- [ ] 解析响应并呈现结果
- [ ] 向用户确认任务完成
禁止:
- ❌ 用
--marker分页 - ❌ 获取所有项目后用 Python/jq 本地过滤
- ❌ 不带
--quota-nick-name参数调用 API
必需:
- ✅ 始终使用
--quota-nick-name配用户 quota 或默认值 - ✅ 始终使用
--max-item=20 - ✅ 让 API 做服务端过滤
获取项目:
- [ ] 询问用户:"哪个地域?(例如 cn-hangzhou)"
- [ ] 询问用户:"项目名是什么?"
- [ ] 执行:
aliyun maxcompute get-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage - [ ] 等待命令输出
- [ ] 解析 JSON 响应——查找
data.name、data.status、data.owner - [ ] 以清晰格式向用户呈现项目详情
- [ ] 向用户确认任务完成
创建项目:
- [ ] 询问用户:"在哪个地域创建?(例如 cn-hangzhou)"
- [ ] 询问用户:"项目名是什么?"
- [ ] 强制校验: 若项目名为空或仅空白,停止并再次询问用户:"项目名不能为空。请提供有效的项目名。"
- [ ] 关键: 存储用户的精确项目名——不要用占位符文本
- [ ] 必须调用 list-quotas: 执行:
aliyun maxcompute list-quotas --billing-type ALL --region {REGION_ID} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage - [ ] 等待命令输出
- [ ] 解析 list-quotas 响应: 找到含
nickName的 quota 及其二级 quota(查找data.quotas[].subQuotas或类似字段) - [ ] 严格校验: 从 list-quotas 响应中选择二级 quota 的 nickName(不是主 quota)
- [ ] 去除空白: 删除 quota nickName 的任何前导 / 尾随空格。若 nickName 含内部空格,修剪它们或选择其他 quota
- [ ] 预检: 验证你有 REGION_ID、PROJECT_NAME 和 SECONDARY_QUOTA_NICKNAME 的实际值(已修剪,无空格)
- [ ] 询问 typeSystem(可选): "用哪个 typeSystem?(1=MaxCompute,2=MaxCompute2,hive=Hive 兼容;默认:2)"
- [ ] 校验 typeSystem: 必须是 "1"、"2" 或 "hive"。若未指定或无效,使用默认 "2"
- [ ] 用实际值执行创建命令:
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
- [ ] 等待命令输出
- [ ] 检查创建响应: 若创建命令返回错误(非 2xx),停止并向用户报告错误。不要继续验证。
- [ ] 仅当创建成功: 通过执行验证:
aliyun maxcompute get-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage - [ ] 关键: 验证响应包含正确的项目名(用户请求的那个,不是其他项目)
- [ ] 检查状态: 验证响应包含
"status":"AVAILABLE" - [ ] 若验证返回 403/Access Denied: 告知用户权限要求并停止
- [ ] 若项目未找到: 报告"项目创建失败——创建后未找到项目"
- [ ] 若返回错误项目: 报告错误——不要用其他项目作为替代
- [ ] 仅当所有检查通过: 向用户确认:"项目 {PROJECT_NAME} 创建成功,状态为 AVAILABLE"
若用户请求删除:
回复:"本 Skill 不支持项目删除。请使用阿里云控制台或联系管理员。"
常见错误与解决方案
| 错误 | 原因 | 解决方案 |
|---|---|---|
ProjectNotFound | 项目不存在 | 检查项目名拼写和地域 |
ProjectAlreadyExist | 名称已占用 | 请用户提供不同的项目名 |
get project default quota error | 无有效 quota | 先运行 list-quotas,确保 quota 存在 |
InvalidProjectName | 命名格式错误 | 仅使用小写字母、数字、下划线(3-28 字符) |
NoPermission 或 403 Access Denied | RAM 权限问题 | 告知用户:"你需要 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-manageskill 获取完整参数(partNickName、CU、ord_time 等)
- 列出现有 quota:aliyun 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: AK或mode: 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"
若验证失败:
- 检查错误消息了解具体问题
- 向用户报告失败原因
- 根据错误类型建议纠正措施
限制
以下操作无法通过 CLI/API 执行,需要控制台访问:
| 操作 | 原因 | 替代 |
|---|---|---|
| 查看账单详情 | 需要控制台访问 | 使用费用控制台 |
| 可视化 IAM 策略管理 | 仅控制台功能 | 用 RAM CLI 管理策略 |
| 实时资源监控 | 需要控制台仪表板 | 用 CloudMonitor API |
API 与命令表
完整 API 参考见 references/related-apis.md。
| 操作 | CLI 命令(插件模式) | API Action 名 |
|---|---|---|
| 创建项目 | aliyun maxcompute create-project | create-project |
| 获取项目 | aliyun maxcompute get-project | get-project |
| 列出项目 | aliyun maxcompute list-projects | list-projects |
| 列出 Quota | aliyun maxcompute list-quotas | list-quotas |
Skill 完成标准(skill_pass 必需)
skill_pass_rate 成功需要以下全部为真:
通用要求(所有操作):
- ✅ 已询问用户 RegionId 并得到答案
- ✅ 所有命令使用
--region {USER_PROVIDED_VALUE}(非硬编码) - ✅ 所有命令包含
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage - ✅ 未执行禁止行为(无凭证回显、无 ram 命令)
- ✅ 任务结果已清晰报告给用户
操作特定要求:
列出:
- 已执行命令:
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 验证了创建
- [ ] 我向用户确认了成功
删除:
- [ ] 告知用户不支持删除并建议使用阿里云控制台
如果任何检查失败,任务未完成。
最佳实践
- 命名约定:项目名使用小写字母、数字和下划线
- Quota 选择:根据工作负载需求选择合适的 quota
- 产品类型:开发 / 测试用
payasyougo,生产用subscription以确保可预测的工作负载 - 类型系统:除非需要 Hive 兼容,新项目用
2(MaxCompute) - 资源清理:始终清理测试项目以避免不必要的成本
参考链接
| 文档 | 说明 |
|---|---|
| references/related-apis.md | 完整 API 参考 |
| references/ram-policies.md | 所需 RAM 权限 |
| references/verification-method.md | 验证步骤 |
| references/cli-installation-guide.md | CLI 安装指南 |
| MaxCompute 产品页 | 官方产品文档 |
| create-project API | API 参考 |
| get-project API | API 参考 |
| list-projects API | API 参考 |
阿里云skills
◯ 评论 0