返回技能市场
开发运维 安全

maxcompute 项目管理

@aliyun/alibabacloud-odps-project-manage

MaxCompute 对project进行管理的skill,包含了project的创建和查询等操作;

云Skills门户 热度 123v0.0.2

MaxCompute 项目管理

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

前提条件

预检查:阿里云 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 命令——使用阿里云 CLI 时,声明 AI-Mode 生命周期:

  1. 执行命令前启用 AI-Mode:
  2. ``bash aliyun configure ai-mode enable ``

  3. 为 AI-Mode 设置 User-Agent:
  4. ``bash aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage" ``

  5. 工作流结束后禁用 AI-Mode:
  6. ``bash 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. [ ] 询问用户:“您希望按哪个配额别名筛选?(例如 os_PayAsYouGoQuota,或按 Enter 使用默认值)”
  3. [ ] 必须使用 quota-nick-name 参数:
  • 如果用户指定了配额:使用 --quota-nick-name={USER_QUOTA}
  • 如果用户未指定:使用 --quota-nick-name=os_PayAsYouGo
  1. [ ] 使用必需参数执行:
  2. ``bash aliyun maxcompute list-projects --region {REGION_ID} --quota-nick-name={QUOTA_NICKNAME} --max-item=20 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage ``

  3. [ ] 等待命令输出
  4. [ ] 如果出现 400 错误(未找到配额):
  • 调用 aliyun maxcompute list-quotas --billing-type ALL --region {REGION_ID} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  • 向用户展示可用配额以供选择
  • 使用用户选择的配额重新运行 list-projects
  1. [ ] 解析响应并展示结果
  2. [ ] 确认任务完成

禁止:

  • ❌ 使用 --marker 进行分页
  • ❌ 获取所有项目,然后使用 Python/jq 在本地进行筛选
  • ❌ 调用 API 时不使用 --quota-nick-name 参数

强制要求:

  • ✅ 始终使用 --quota-nick-name,并传入用户指定的配额或默认配额
  • ✅ 始终使用 --max-item=20
  • ✅ 让 API 执行服务端筛选

对于 GET 项目:

  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 的配额及其二级配额(在 data.quotas[].subQuotas 或类似位置中查找)
  8. [ ] 严格验证: 从 list-quotas 响应中选择二级配额的 nickName(而非一级配额)
  9. [ ] 去除空格: 删除配额 nickName 的所有前导/尾随空格。如果 nickName 包含内部空格,请将其去除,或选择其他配额
  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. [ ] 使用实际值执行创建命令:
  14. ``bash 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 ` 使用真实值的示例: `bash 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 ``

  15. [ ] 等待命令输出
  16. [ ] 检查创建响应: 如果创建命令返回错误(非 2xx),则停止并向用户报告错误。不得继续验证。
  17. [ ] 仅当创建成功时: 执行以下命令进行验证:aliyun maxcompute get-project --region {REGION_ID} --project-name {PROJECT_NAME} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  18. [ ] 关键: 验证响应中包含正确的项目名称(即用户请求的项目,而非其他项目)
  19. [ ] 检查状态: 验证响应中包含 "status":"AVAILABLE"
  20. [ ] 如果验证返回 403/Access Denied: 告知用户所需权限并停止
  21. [ ] 如果未找到项目: 报告“项目创建失败 - 创建后未找到项目”
  22. [ ] 如果返回了错误的项目: 报告错误,不得以其他项目替代
  23. [ ] 仅当所有检查均通过时: 向用户确认:“项目 {PROJECT_NAME} 已成功创建,状态为 AVAILABLE”

如果用户请求删除:

回复:“此 skill 不支持删除项目。请使用阿里云控制台或联系管理员。”

常见错误与解决方案

| 错误 | 原因 | 解决方案 | |-------|-------|----------| | ProjectNotFound | 项目不存在 | 检查项目名称的拼写和地域 | | ProjectAlreadyExist | 名称已被占用 | 请用户提供其他项目名称 | | get project default quota error | 没有有效的配额 | 先运行 list-quotas,确保配额存在 | | InvalidProjectName | 命名格式错误 | 仅使用小写字母、数字和下划线(3-28 个字符) | | NoPermission403 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 操作格式用作 CLI 命令——必须始终使用小写字母加连字符的插件格式(例如 create-project
9. 严禁执行 aliyun maxcompute delete-project——此 skill 不支持删除项目

反例

| ❌ 错误 | ✅ 正确 | |----------|------------| | 将大写 API 操作名称用作 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 Service
    └── Project (Workspace)
          ├── defaultQuota (Compute Resource - MUST exist before project creation)
          ├── productType (payasyougo/subscription)
          └── typeSystem ("1", "2", or "hive"; default: "2")

依赖项

前提条件:创建项目前必须已有配额。
每个 MaxCompute 项目都需要计算配额(defaultQuota)。该配额必须已存在于您的账户中——否则,调用 create-project 将失败并返回 get project default quota error
使用 alibabacloud-odps-quota-manage skill 创建或查询配额:
- Pay-as-you-go: aliyun maxcompute create-quota --charge-type payasyougo --commodity-code odps --region <region> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
- 订阅:有关完整参数(partNickName、CU、ord_time 等),请参阅 alibabacloud-odps-quota-manage skill
- 列出现有配额aliyun maxcompute list-quotas --billing-type ALL --region <region> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
创建配额或确认配额存在后,在创建项目时将其 nickName 用作 defaultQuota 参数。

安装

预检查:要求阿里云 CLI >= 3.3.3

运行 aliyun version 验证版本是否 >= 3.3.3。如果尚未安装或版本过低,
运行 curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash 进行更新,
或参阅 references/cli-installation-guide.md 获取安装说明。

预检查:必须更新阿里云 CLI 插件

[必须] 运行 aliyun configure set --auto-plugin-install true 以启用插件自动安装。
[必须] 运行 aliyun plugin update,以确保所有现有插件始终为最新版本。
# Install/Update Alibaba Cloud CLI
curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash

# Verify version (must be >= 3.3.3)
aliyun version

# Enable auto plugin installation
aliyun configure set --auto-plugin-install true

# Update plugins
aliyun plugin update

环境变量

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

身份认证

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

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

aliyun configure list

需要检查的内容:

  • 输出显示至少一个包含 mode: AKmode: StsToken 的配置文件
  • 配置文件显示 access_key_id: ********(已掩码也 OK)

如果没有任何有效配置文件:

  • 告知用户:“请先运行 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](references/ram-policies.md) 中。
注意: 您无需通过 CLI 命令验证 RAM 权限。ram-policies.md 中列出的权限仅供用户参考。请在假定用户已配置适当权限的情况下继续执行工作流。

参数

始终向用户询问这些值——不得假定默认值:

| 参数 | 是否必需 | 说明 | |-----------|----------|-------------| | RegionId | | 地域 ID(cn-hangzhou、cn-shanghai 等) | | projectName | | 项目名称 | | quotaNickName | 创建时必需 | 配额别名(从 list-quotas 获取) |

示例对话

列出: 用户提出请求 → Agent 请求提供 RegionId → Agent 执行 list-projects → Agent 展示结果

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

命令

列出项目

# Ask user for quota nickname first, then:
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. 先列出配额:
aliyun maxcompute list-quotas --billing-type ALL --region {REGION_ID} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  1. 使用响应中的配额 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](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",其值与所创建的项目匹配
  • 响应中包含正确的 "defaultQuota",其值与指定的配额匹配

如果验证失败:

  1. 查看错误消息以确定具体问题
  2. 向用户报告失败原因
  3. 根据错误类型建议修正措施

限制

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

| 操作 | 原因 | 替代方案 | |-----------|--------|-------------| | 查看账单详情 | 需要访问控制台 | 使用费用与成本控制台 | | 可视化管理 IAM 策略 | 仅在控制台中提供的功能 | 使用 RAM CLI 进行策略管理 | | 实时资源监控 | 需要使用控制台仪表板 | 使用 CloudMonitor APIs |

API 与命令表

有关完整的 API 参考,请参阅 [references/related-apis.md](references/related-apis.md)。

| 操作 | CLI 命令(插件模式) | API 操作名称 | |-----------|-------------|------------| | 创建项目 | aliyun maxcompute create-project | create-project | | 获取项目 | aliyun maxcompute get-project | get-project | | 列出项目 | aliyun maxcompute list-projects | list-projects | | 列出配额 | aliyun maxcompute list-quotas | list-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 重试
  • 已向用户展示结果(项目列表或“未找到项目”)

GET:

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

创建:

  • 已向用户询问 RegionId 和 projectName(已获取实际值)
  • 已先列出配额:aliyun maxcompute list-quotas --billing-type ALL --region {REGION} --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage
  • 请求体中必须使用实际值 - 不得使用 {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 通过检查:

Before responding to user, verify:
□ I followed the correct workflow for the operation type
□ I asked for ALL required parameters from user
□ I used user's actual values in commands (not placeholders or defaults)
□ I included --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage in EVERY command
□ I did NOT perform any forbidden actions
□ I reported the final result to user

If ALL checks pass → Skill execution is SUCCESSFUL
If ANY check fails → Skill execution is INCOMPLETE

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

在告知用户任务已完成前,必须验证以下所有项:

对于列出项目操作:

  • [ ] 我已向用户询问 RegionId 并获得答复
  • [ ] 我已使用 --region {USER_ANSWER}--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage 执行 list-projects
  • [ ] 我已向用户清晰展示结果

对于 GET 操作:

  • [ ] 我已向用户询问 RegionId 并获得答复
  • [ ] 我已向用户询问 projectName 并获得答复
  • [ ] 我已使用用户提供的值和 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage 执行 get-project
  • [ ] 我已向用户清晰展示项目详情

对于创建项目操作:

  • [ ] 我已向用户询问 RegionId 并获得答复
  • [ ] 我已向用户询问 projectName 并获得答复
  • [ ] 我已执行 list-quotas 以获取有效配额
  • [ ] 我已使用用户提供的值和 --user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-project-manage 执行 create-project
  • [ ] 我已通过调用 get-project 验证创建结果
  • [ ] 我已向用户确认成功

对于删除项目操作:

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

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

最佳实践

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

参考链接

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

qianwen skills install @aliyun/alibabacloud-odps-project-manage