MaxCompute Quota Management
Manage MaxCompute (ODPS) Quota resources using Alibaba Cloud CLI and SDK. This skill covers pay-as-you-go quota creation, quota query, and quota listing operations.
Limitations and Notes
| Feature | CLI Support | SDK Support | Notes |
|---|---|---|---|
| Create Pay-as-you-go Quota | ✅ Yes | ✅ Yes | Fully supported |
| Create Subscription Quota | ❌ Not Supported | ❌ Not Supported | Temporarily unavailable |
| Query Quota (get-quota) | ✅ Yes | ✅ Yes | ⚠️ Deprecated - Use query-quota instead |
| Query Quota (query-quota) | ✅ Yes | ✅ Yes | Recommended replacement for get-quota |
| List Quotas | ✅ Yes | ✅ Yes | Fully supported (both payasyougo and subscription) |
| Delete Quota | ❌ No API | ❌ No API | Not available via API - Must use Console |
| Modify Quota | ❌ Not in scope | ❌ Not in scope | Not covered in this solution |
Important:
- Create Subscription Quota is temporarily NOT supported in this skill. For subscription quota creation, please use the Alibaba Cloud Console.
- Delete Quota operation is NOT available through CLI or SDK. You must use the Alibaba Cloud Console to delete quotas.
- query-quota is preferred - get-quota is deprecated but acceptable if it returns success
- ⚠️ CRITICAL: When checking if quota exists, ALWAYS use list-quotas, NEVER use get-quota
- 🚨 MANDATORY: Before create-quota, MUST call list-quotas first - NEVER skip this step
Architecture
Alibaba Cloud Account → MaxCompute Service → Quota Resources (CU)
├── Pay-as-you-go Quota (后付费) ← **Creation Supported**
└── Subscription Quota (预付费) ← Query/List only
Installation
Pre-check: Aliyun CLI >= 3.3.3 required Run
aliyun versionto verify >= 3.3.3. If not installed or version too low, runcurl -fsSL https://aliyuncli.alicdn.com/setup.sh | bashto update, or see references/cli-installation-guide.md for installation instructions.
Pre-check: Aliyun CLI plugin setup required [MUST] Install the maxcompute plugin manually:
aliyun plugin install maxcompute[MUST] Update the plugin to latest version:aliyun plugin update maxcompute
# Verify CLI version
aliyun version
# Install maxcompute plugin (confirm when prompted)
aliyun plugin install maxcompute
# Update maxcompute plugin to latest version
aliyun plugin update maxcompute
[MUST] CLI User-Agent — Every aliyun CLI command invocation must include:
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-quota-manage
At the start of the Core Workflow (before any CLI invocation): [MUST] Enable AI-Mode — AI-mode is required for Agent Skill execution. Run the following commands before any CLI invocation:
aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-odps-quota-manage"
[MUST] Disable AI-Mode at EVERY exit point — Before delivering the final response for ANY reason, always disable AI-mode first. This applies to ALL exit paths: workflow success, workflow failure, error/exception, user cancellation, session end, or any other scenario where no further CLI commands will be executed. AI-mode is only used for Agent Skill invocation scenarios and MUST NOT remain enabled after the skill stops running.
aliyun configure ai-mode disable
Environment Variables
This skill relies on the aliyun CLI default credential chain. No explicit credential configuration is needed.
- Run
aliyun configureto set up credentials before first use - Do NOT explicitly handle or pass credential values in commands
Timeout Configuration:
ALIBABA_CLOUD_CONNECT_TIMEOUT: Connection timeout (default: 10s)ALIBABA_CLOUD_READ_TIMEOUT: Read timeout (default: 10s)- These defaults are sufficient for quota operations; no explicit configuration required
Parameter Confirmation
IMPORTANT: Parameter Confirmation — Before executing any command or API call, ALL user-customizable parameters (e.g., RegionId, quota nicknames, billing types, etc.) MUST be confirmed with the user. Do NOT assume or use default values without explicit user approval.
Input Validation
| Parameter | Validation Rules |
|---|---|
RegionId | Must be valid Alibaba Cloud region ID (e.g., cn-hangzhou, cn-shanghai) |
nickname | Max 64 characters; alphanumeric, hyphens (-), underscores (_); URL-encode if contains Chinese characters |
chargeType | Must be payasyougo (subscription not supported) |
commodityCode | Must be odps, odpsplus, odps_intl, or odpsplus_intl |
billingType | Must be payasyougo, subscription, or ALL |
Security Note: All user inputs are passed to aliyun CLI which handles parameter sanitization. Do NOT construct commands using string concatenation with raw user input.
| Parameter Name | Required/Optional | Description | Default Value |
|---|---|---|---|
RegionId | Required | Alibaba Cloud region (e.g., cn-hangzhou, cn-shanghai) | - |
chargeType | Required | Billing type: payasyougo only (subscription not supported) | - |
commodityCode | Required | Product code (see table below) | - |
billingType | Optional | Filter for listing: subscription or payasyougo or ALL | ALL |
maxItem | Optional | Max items per page for listing | 100 |
Commodity Codes (for Pay-as-you-go)
| Site | Commodity Code |
|---|---|
| China (国内站) | odps |
| International (国际站) | odps_intl |
Authentication
Security: Never expose credentials
- Don't print AK/SK values
- Don't ask user to type AK/SK in chat
- Don't use
aliyun configure setwith hardcoded values
Check credentials:
aliyun configure list
If no credentials, ask user to run aliyun configure first, then continue.
Core Workflow
🚨 STEP 0 - CONFIRM PARAMETERS WITH USER BEFORE ANY EXECUTION:
Before running any CLI command, you MUST confirm all required parameters with the user:
- For LIST: Confirm
regionandbilling-type(payasyougo / subscription / ALL) - For QUERY: Confirm
regionandnickname - For CREATE: Confirm
region,charge-type, andcommodity-code
Do NOT assume or use default values. Ask the user explicitly and wait for confirmation before proceeding.
🚨 CRITICAL RULE FOR ALL OPERATIONS:
| Operation | First Command | Then |
|---|---|---|
| CREATE quota | list-quotas | If empty → Create; If exists → Stop |
| QUERY quota | query-quota | Show results |
| LIST quotas | list-quotas | Show list |
⚠️ CREATE without list-quotas first = ERROR
FORBIDDEN COMMANDS - NEVER USE:
- ❌
aliyun quotascommands - WRONG SERVICE (Quota Center), use MaxCompute instead - ❌ Any BssOpenApi commands for quota operations - use MaxCompute instead
- ❌
get-quota- DEPRECATED, usequery-quotainstead
MUST USE (plugin mode, kebab-case):
- ✅
aliyun maxcompute list-quotas- For listing/checking quotas - ✅
aliyun maxcompute query-quota- For querying quota details - ✅
aliyun maxcompute create-quota- For creating quota
⚠️ IMPORTANT: Use aliyun maxcompute commands (MaxCompute service), NOT aliyun quotas commands (Quota Center service).
Command Rules:
- ALL CLI commands use plugin mode (kebab-case):
create-quota,list-quotas,query-quota - Parameters also use kebab-case:
--charge-type,--commodity-code,--billing-type
CREATE Quota (CHECK FIRST - THEN CREATE):
🚨 PREPAID/SUBSCRIPTION QUOTAS ARE FORBIDDEN: This skill ONLY supports pay-as-you-go quota creation.
- If user wants prepaid/subscription quota → Tell them to use Alibaba Cloud Console
- Do NOT attempt to create prepaid quotas
🚨 FOR CREATE: FIRST RUN LISTQUOTAS - NEVER SKIP THIS:
STEP 1 - MANDATORY: Call list-quotas FIRST
aliyun maxcompute list-quotas --billing-type payasyougo --region <R>
DO NOT proceed to Step 2 until you get list-quotas result
Use MaxCompute service (aliyun maxcompute), NOT Quota Center (aliyun quotas).
AFTER list-quotas result (STEP 2):
| Result | Action |
|---|---|
| List shows quota | DO NOT CREATE - Inform user "Quota already exists" → Done |
| List is empty | Go to Step 3 (Create) |
STEP 3 - ONLY IF LIST WAS EMPTY:
PRE-CREATE CHECKLIST - ALL MUST BE TRUE:
- User wants pay-as-you-go (NOT prepaid/subscription)
- list-quotas was called and returned empty list
- No existing pay-as-you-go quota in the region
- User confirmed they want to create
aliyun maxcompute create-quota --charge-type payasyougo --commodity-code odps --region <R> --client-token <UNIQUE_TOKEN>
For International Site:
aliyun maxcompute create-quota --charge-type payasyougo --commodity-code odps_intl --region <R> --client-token <UNIQUE_TOKEN>
CRITICAL:
- Use plugin mode (kebab-case):
create-quota - Use MaxCompute service, NOT BssOpenApi
- client-token: Generate a unique token (e.g., UUID) for idempotency on retries
- commodityCode values:
- China site:
odpsorodpsplus - International site:
odps_intlorodpsplus_intl - NEVER use
maxcomputeas commodityCode - Note: When
chargeType=payasyougois set, commodityCode validation is not strict
- China site:
⚠️ OUTPUT HANDLING:
- Do NOT pipe command output to files (e.g.,
| tee ...or> file.json) — if the target directory does not exist, the command will return a non-zero exit code even when the API call succeeds. - Let the CLI print output directly to stdout, then parse the result inline.
- When saving output files (e.g.,
existing_quotas.json,actions_log.txt), ALWAYSmkdir -p <directory>first before writing any file to ensure the target directory exists.
FINALLY:
- Parse result
- Show user
- Done
⚠️ NEVER call create-quota before list-quotas. This causes errors.
Note: If quota already exists, DO NOT create. Only create when list-quotas returns empty list.
QUERY Quota (when user provides nickname):
PRIORITY: Use query-quota as the primary API for querying specific quota details by nickname.
CHECKLIST:
- User provided quota nickname
- Use
query-quota(NOTget-quota)
USE THIS COMMAND:
aliyun maxcompute query-quota --nickname <N> --region <R>
IMPORTANT: If nickname contains Chinese characters, URL-encode it first before passing to the command.
FORBIDDEN: get-quota is deprecated - use query-quota instead.
- Parse JSON
- Extract:
nickName,name,id,status - Show all fields → Done
LIST Quotas:
⚠️ FOR LISTING QUOTAS: ONLY use MaxCompute list-quotas, NOT BssOpenApi
When checking for existing pay-as-you-go quotas (before creation):
aliyun maxcompute list-quotas --billing-type payasyougo --region <R>
MUST include --billing-type payasyougo to filter at API level.
When listing all quotas (user request):
aliyun maxcompute list-quotas --billing-type ALL --region <R>
billingType parameter:
-
Valid values:
payasyougo,subscription,ALL -
If not set, defaults to
ALL -
Use
payasyougowhen checking for existing pay-as-you-go quotas -
Parse JSON
-
Extract
quotaInfoListarray -
Show list → Done
Response field odpsSpecCode enum values:
| odpsSpecCode | Description |
|---|---|
OdpsStandard | ODPS Pay-as-you-go Resource |
OdpsSpot | ODPS Spot/Off-peak Resource (Pay-as-you-go) |
OdpsDev | Developer Resource Type |
OdpsPlusStandard | Subscription Resource |
OdpsPlusHa | High Availability Resource |
OdpsPlusElasticCU | ODPS Non-reserved Elastic CU Subscription Resource |
Quick Reference
See references/related-apis.md for complete CLI command reference and response format details.
Key Points:
- Use
list-quotas --billing-type payasyougobefore creating - Use
query-quota(notget-quota) for querying - Use
create-quota(kebab-case plugin mode) for creating - Always include
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-odps-quota-manage
Task Completion
Output Files — MUST create before finishing:
mkdir -p outputs ran_scripts— ensure directories exist first- Save quota query/list results to
outputs/existing_quotas.json - Save a log of all actions performed to
ran_scripts/actions_log.txt
IMPORTANT: Always run
mkdir -pfor any target directory BEFORE writing files. Never assume directories already exist.
Finish with:
- Summary of what was done
- Key results (nickname, region, status)
- Confirm output files were written (
outputs/existing_quotas.json,ran_scripts/actions_log.txt) - "✅ Complete"
Error Handling
| Error Code | What to Do |
|---|---|
QuotaAlreadyExists | Quota exists → Query it and show details → Task complete |
QuotaNotFound | Quota doesn't exist → Inform user |
InvalidParameter | Wrong parameter format → Check with user |
Forbidden | No permission → Direct to Console |
INTERNAL_ERROR | Retry once or contact support |
Cleanup
No Delete API - Must use Console to delete quotas
API Reference
See references/related-apis.md for complete API reference, CLI commands, and response formats.
Best Practices
- Always confirm region with user before any operation
- For creation: First list to check if quota exists (one per region limit)
- If quota exists: Query it for user instead of trying to create
- Use query-quota (NOT get-quota) for quota details
- For subscription quotas: Direct user to Alibaba Cloud Console
Reference Links
| Reference | Description |
|---|---|
| references/related-apis.md | Complete CLI commands and API reference |
| references/ram-policies.md | Required RAM permissions |
| references/verification-method.md | Success verification steps |
| references/acceptance-criteria.md | Testing acceptance criteria |
| references/cli-installation-guide.md | CLI installation guide |