
Alibabacloud Pai Feature Store Featuredb Usage Query
- 127 installs
- 208 repo stars
- Updated August 4, 2026
- aliyun/alibabacloud-aiops-skills
alibabacloud-pai-feature-store-featuredb-usage-query is a Claude skill that queries FeatureDB read/write usage from Alibaba Cloud PAI-FeatureStore for consumption, trend, and cost analysis.
About
This skill queries FeatureDB read and write usage data from Alibaba Cloud PAI-FeatureStore. A developer uses it to analyze consumption and usage trends and to estimate cost from official pricing, with total, project-level, and per-feature-view breakdowns over date ranges up to 30 days. It runs through the PAI-FeatureStore CLI plugin and is scoped strictly to querying historical read/write counts and costs.
- Queries FeatureDB read/write usage data from PAI-FeatureStore for consumption, trend, and cost analysis
- Supports total, project-level, and per-feature-view queries over date ranges up to 30 days
- Calculates costs from official pricing tiers across 9 supported regions
Alibabacloud Pai Feature Store Featuredb Usage Query by the numbers
- 127 all-time installs (skills.sh)
- Ranked #762 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
alibabacloud-pai-feature-store-featuredb-usage-query capabilities & compatibility
- Works with
- aws
- Use cases
- data analysis
What alibabacloud-pai-feature-store-featuredb-usage-query says it does
Query FeatureDB read/write usage data from PAI-FeatureStore. Use for analyzing consumption, usage trends, and cost estimation by official pricing.
This skill ONLY supports querying FeatureDB read/write usage statistics.
npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-pai-feature-store-featuredb-usage-queryAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 127 |
|---|---|
| repo stars | ★ 208 |
| Last updated | August 4, 2026 |
| Repository | aliyun/alibabacloud-aiops-skills ↗ |
What it does
Query PAI-FeatureStore FeatureDB read/write usage and estimate cost by official pricing over date ranges.
Who is it for?
ML engineers analyzing PAI-FeatureStore FeatureDB read/write consumption, usage trends, and cost.
Skip if: Anything outside querying historical read/write counts or costs (skill declines out-of-scope requests).
When should I use this skill?
The user asks about FeatureDB read/write volume, PAI-FeatureStore usage or billing, or feature view usage.
By the numbers
- Date range up to 30 days
- 9 supported regions
- 5 key features (total, feature view detail, project-level, trends, cost)
Files
PAI-FeatureStore FeatureDB Usage Query and Analysis
Architecture: PAI-FeatureStore Instance → FeatureDB Datasource → Feature Views → Usage Statistics
Key Features
1. Total Usage Analysis: Query daily read/write totals across a date range (up to 30 days) 2. Feature View Details: Query specific feature view usage on a given date with sorting by read/write count 3. Project-Level Analysis: Query daily read/write totals for a specific project (up to 30 days) 4. Feature View Trends: Query daily read/write trends for a specific feature view (up to 30 days) 5. Cost Calculation: Calculate costs based on official pricing tiers for different regions
Supported Regions
cn-beijing, cn-hangzhou, cn-shanghai, cn-shenzhen, cn-hongkong, ap-southeast-1, ap-southeast-5, us-west-1, eu-central-1
---
Installation
Pre-check: Aliyun CLI >= 3.3.3 required
>
Run aliyun version to verify >= 3.3.3. If not installed or version too low,run curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash to update,or see references/cli-installation-guide.md for installation instructions.>
Then [MUST] run aliyun configure set --auto-plugin-install true to enable automatic plugin installation.[MUST] run aliyun plugin update to ensure that any existing plugins on your local machine are always up-to-date.[MUST] CLI User-Agent — Every aliyun CLI command invocation must include: --user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query
The PAI-FeatureStore CLI plugin will be automatically installed when first used if auto-plugin-install is enabled.
Timeout: Default 10s is sufficient for all API calls.
---
Authentication
Pre-check: Alibaba Cloud Credentials Required
>
Security Rules:
- NEVER read, echo, or print AK/SK values (e.g., echo $ALIBABA_CLOUD_ACCESS_KEY_ID is FORBIDDEN)- NEVER ask the user to input AK/SK directly in the conversation or command line
- NEVER use aliyun configure set with literal credential values- NEVER output any string resembling a key (e.g.,LTAI5t***,AccessKeyId: xxx,ak-***)
- ONLY use aliyun configure list to check credential status>
```bash
aliyun configure list
```
Check the output for a valid profile (AK, STS, or OAuth identity).
>
If no valid profile exists, STOP here.
---
Required Parameters
IMPORTANT: Parameter Confirmation — Before executing any command or API call, ALL user-customizable parameters (e.g., RegionId, instance names, CIDR blocks, passwords, domain names, resource specifications, etc.) MUST be confirmed with the user. Do NOT assume or use default values without explicit user approval.
| Parameter Name | Required/Optional | Description | Default Value |
|---|---|---|---|
| RegionId | Required | Alibaba Cloud region ID. Must be one of the supported regions listed above. | None |
| WorkspaceId | Optional* | PAI workspace ID (numeric, e.g., 12345). Required if DatasourceId is not provided. | None |
| DatasourceId | Optional* | FeatureDB datasource ID (numeric, e.g., 67890). Required if WorkspaceId is not provided. | None |
| StartDate | Optional | Query start date in yyyy-MM-dd format. | 30 days ago (for total usage) or 7 days ago (for project/feature view) |
| EndDate | Optional | Query end date in yyyy-MM-dd format. | Yesterday |
| ProjectName | Optional | Project name (required for project-level and feature view queries). | None |
| FeatureViewName | Optional | Feature view name (required for feature view trend queries). | None |
| SortBy | Optional | Sort field: ReadCount or WriteCount | ReadCount |
| Order | Optional | Sort order: ASC or DESC | DESC |
Note: Either WorkspaceId or DatasourceId must be provided. If neither is provided, the skill will list all available FeatureDB datasources for user selection.
---
RAM Permissions
This skill requires the following RAM permissions. See references/ram-policies.md for detailed policy configuration.
Required Actions:
paifeaturestore:ListInstancespaifeaturestore:GetDatasourcepaifeaturestore:ListDatasourcespaifeaturestore:ListDatasourceFeatureViews
---
Core Workflow
Functional Scope (MUST CHECK FIRST)
This skill ONLY supports querying FeatureDB read/write usage statistics. Any requests outside of "querying historical read/write counts or costs" are out of scope and must be politely declined with a list of supported features.
[MUST] If request is out of scope, reject politely and list supported features:
>> "Sorry, this Skill only supports querying FeatureDB read/write usage statistics, not [user request]. Supported features: 1) Daily read/write totals 2) Feature view details 3) Usage trends 4) Cost calculation"
Feature Selection Logic
Which features to execute depends on user's request:
| Scenario | Action |
|---|---|
| Request out of scope or unsupported | Reject and list supported features (see above) |
| User specifies supported feature(s) | Execute the specified feature(s) |
| User doesn't specify any feature | Execute default behavior (see below) |
Supported Functions
1. Query daily FeatureDB read/write totals from StartDate to EndDate with analysis (max 30-day span) 2. Query per-feature-view read/write counts for a specific date, with sorting and analysis 3. Query daily FeatureDB read/write totals for a specific project from StartDate to EndDate with analysis (max 30-day span) 4. Query daily FeatureDB read/write trends for a specific feature view from StartDate to EndDate with analysis (max 30-day span) 5. Calculate costs based on official pricing and query results
User-Friendly Prompts
Use descriptive names instead of function numbers when prompting, because "Function 3" is meaningless to users who haven't read this document.
Execution Steps
Step 1: Verify PAI-FeatureStore Instance
aliyun paifeaturestore list-instances \
--region <RegionId> \
--status Running \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-queryExpected Output: A list of running instances with their InstanceIds.
Error Handling (if no running instances found — STOP, do NOT guess InstanceId):
No running PAI-FeatureStore instances found in this region. Please verify:
1. Is the RegionId correct?
2. Do you need to switch to a different region?
3. To activate PAI-FeatureStore, visit the console
Step 2: Identify FeatureDB Datasource
Case A: User provided WorkspaceId
aliyun paifeaturestore list-datasources \
--region <RegionId> \
--instance-id <InstanceId> \
--type FeatureDB \
--workspace-id <WorkspaceId> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-queryCase B: User provided DatasourceId
[MUST] When user provides DatasourceId, you MUST call GetDatasource or ListDatasources to verify the datasource type is FeatureDB. Do NOT skip this validation step.aliyun paifeaturestore get-datasource \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-queryValidation: Check the Type field in the response. If Type is NOT FeatureDB, stop and inform the user that this datasource is not a FeatureDB datasource.
Case C: Neither WorkspaceId nor DatasourceId provided
aliyun paifeaturestore list-datasources \
--region <RegionId> \
--instance-id <InstanceId> \
--type FeatureDB \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-queryNote: This API is paginated. Calculate total pages from TotalCount and PageSize, then fetch all pages.
Example pagination logic:
# First call to get TotalCount
FIRST_RESPONSE=$(aliyun paifeaturestore list-datasources \
--region <RegionId> \
--instance-id <InstanceId> \
--type FeatureDB \
--page-number 1 \
--page-size 10 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query)
# Extract TotalCount and calculate total pages
# Then iterate through all pages
for page in {1..total_pages}; do
aliyun paifeaturestore list-datasources \
--region <RegionId> \
--instance-id <InstanceId> \
--type FeatureDB \
--page-number $page \
--page-size 10 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query
donePresent all FeatureDB datasources to the user. If only ONE datasource exists, use it directly.
When MULTIPLE datasources exist, behavior depends on query type:
| Query Type | User Confirmation Required |
|---|---|
| Total usage (Function 1) | Ask: "Query aggregated usage for all N datasources, or select a specific one?" Then proceed based on user's choice. |
| Feature view details / Project / Trends (Function 2/3/4) | Must select ONE datasource. These queries are datasource-specific and cannot span multiple datasources. |
Error Handling:
- If WorkspaceId or DatasourceId is invalid, fall back to Case C and list all available datasources.
Step 3: Query Usage Statistics
Date Validation (before API call):
- Format: Must be
yyyy-MM-dd(e.g.,2024-03-15). If user provides other formats (e.g.,3/15,2024.03.15), convert to correct format. - Range:
EndDate - StartDatemust be ≤ 30 days. If exceeded, ask user to narrow the range or split into multiple queries. - Boundary:
EndDate≤ today;StartDate≤EndDate.
Relative Date Ranges ("last 7 days", "last 30 days"): Calculate StartDate = N days ago, EndDate = yesterday. Run date command separately first, then use the literal result in --start-date/--end-date. NEVER embed $(...) in CLI commands.
Execute queries based on user requirements:
Function 1: Query Total Daily Read/Write Usage
Query daily totals from StartDate to EndDate (default: last 30 days).
aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date <StartDate> \
--end-date <EndDate> \
--verbose false \
--show-storage-usage false \
--page-size 1 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-queryOutput: Extract TotalUsageStatistics from the response.
Function 2: Query Per-Feature-View Usage for a Specific Date
Query all feature views' read/write counts on a specific date, with sorting.
aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date <TargetDate> \
--end-date <TargetDate> \
--verbose true \
--show-storage-usage false \
--all true \
--sort-by <ReadCount|WriteCount> \
--order <ASC|DESC> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-queryOutput: Extract FeatureViews array from the response.
Function 3: Query Daily Usage for a Specific Project
Query daily totals for a specific project from StartDate to EndDate (default: last 7 days).
aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date <StartDate> \
--end-date <EndDate> \
--verbose false \
--show-storage-usage false \
--page-size 1 \
--project-name <ProjectName> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-queryOutput: Extract TotalUsageStatistics from the response.
Error Handling:
- If the API returns an error indicating the project does not exist, recommend querying Function 2 first to get the complete list of queryable projects (deduplicate by project name).
Function 4: Query Daily Usage for a Specific Feature View
Query daily trends for a specific feature view from StartDate to EndDate (default: last 7 days).
aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date <StartDate> \
--end-date <EndDate> \
--verbose true \
--show-storage-usage false \
--all true \
--project-name <ProjectName> \
--name <FeatureViewName> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-queryOutput: Extract the matching feature view from the FeatureViews array.
Error Handling:
- If no matching feature view is found in the response, the feature view does not exist. Recommend querying Function 2 first to get the complete list of queryable feature views.
Step 4: Analyze Results and Calculate Costs
Based on user requirements:
1. Analyze usage trends from the query results 2. Calculate costs Official Pricing (per 10,000 requests):
| Region | Write Cost | Read Cost |
|---|---|---|
| Beijing, Shanghai, Hangzhou, Shenzhen | ¥0.151 | ¥0.0755 |
| Hong Kong, Singapore, Silicon Valley, Frankfurt, Jakarta | ¥0.2651 | ¥0.1326 |
3. Present insights:
- Identify high-traffic feature views
- Highlight usage patterns (spikes, trends)
- Provide cost breakdown and optimization suggestions if applicable
4. Offer next steps:
- Ask if the user wants to drill down into specific projects or feature views
- Offer to calculate costs if not already done
- Suggest further analysis options
---
Success Verification
The skill execution is successful if:
1. ✅ Valid PAI-FeatureStore instance is found 2. ✅ FeatureDB datasource is identified or selected 3. ✅ Usage statistics are successfully retrieved 4. ✅ Results are analyzed and presented clearly 5. ✅ Cost calculations are accurate (if requested) 6. ✅ Response language matches user's question language
For detailed verification steps, see references/verification-method.md.
---
Cleanup
This skill performs read-only operations and does not create any resources. No cleanup is required.
---
Best Practices
1. Always confirm the RegionId with the user before executing any commands 2. Use pagination properly when listing datasources to ensure all results are retrieved 3. Provide context in analysis: Don't just show numbers—explain trends and patterns 4. Offer actionable insights: Suggest which feature views or projects to investigate further 5. Handle errors gracefully: If a project or feature view doesn't exist, guide the user to list all available options first 6. Calculate costs accurately: Use the correct pricing tier based on the region 7. Keep user engaged: After showing results, ask if they want to drill deeper or analyze specific aspects 8. Decline out-of-scope requests politely: If a request is not about querying usage statistics, politely decline and list supported features
---
Reference Documentation
| Reference | Description |
|---|---|
| RAM Policies | Required RAM permissions and policy configuration |
| Related APIs | Complete list of APIs and CLI commands used |
| Verification Method | Detailed verification steps for each operation |
| CLI Installation Guide | Aliyun CLI installation and setup instructions |
| Acceptance Criteria | Testing patterns and validation criteria |
Acceptance Criteria: pai-featurestore-featuredb-usage-query
Scenario: PAI-FeatureStore FeatureDB Usage Query and Analysis Purpose: Skill testing acceptance criteria to ensure correct CLI command patterns and execution
---
Correct CLI Command Patterns
1. Product Name Verification
The product name for PAI-FeatureStore CLI is paifeaturestore (all lowercase, no hyphens).
✅ CORRECT
aliyun paifeaturestore list-instances
aliyun paifeaturestore list-datasources
aliyun paifeaturestore get-datasource
aliyun paifeaturestore list-datasource-feature-views❌ INCORRECT
aliyun pai-featurestore list-instances # Wrong: has hyphen
aliyun PAIFeatureStore list-instances # Wrong: case sensitive
aliyun pai_featurestore list-instances # Wrong: has underscore
aliyun featurestore list-instances # Wrong: missing 'pai' prefix---
2. Action/Command Verification
All actions use lowercase words connected with hyphens (plugin mode format).
✅ CORRECT
aliyun paifeaturestore list-instances
aliyun paifeaturestore get-datasource
aliyun paifeaturestore list-datasources
aliyun paifeaturestore list-datasource-feature-views❌ INCORRECT
aliyun paifeaturestore ListInstances # Wrong: uses API format (PascalCase)
aliyun paifeaturestore GetDatasource # Wrong: uses API format
aliyun paifeaturestore listInstances # Wrong: camelCase
aliyun paifeaturestore list_datasources # Wrong: uses underscoresNote: The CLI plugin mode uses kebab-case (lowercase-with-hyphens), NOT the API PascalCase format.
---
3. Parameter Name Verification
All parameter names use lowercase words connected with hyphens, prefixed with --.
✅ CORRECT - Common Parameters
--region cn-beijing
--instance-id fs-cn-beijing-12345
--datasource-id ds-12345
--workspace-id ws-12345
--start-date 2024-03-01
--end-date 2024-03-31
--page-number 1
--page-size 10
--sort-by ReadCount
--order DESC
--user-agent AlibabaCloud-Agent-Skills✅ CORRECT - Boolean Parameters
--verbose true
--verbose false
--show-storage-usage true
--show-storage-usage false
--all true❌ INCORRECT - Parameter Names
--RegionId cn-beijing # Wrong: uses PascalCase
--InstanceId fs-12345 # Wrong: uses PascalCase
--instanceId fs-12345 # Wrong: uses camelCase
--instance_id fs-12345 # Wrong: uses snake_case
--StartDate 2024-03-01 # Wrong: uses PascalCase
--pageNumber 1 # Wrong: uses camelCase
--user_agent AlibabaCloud-Agent-Skills # Wrong: uses snake_case❌ INCORRECT - Boolean Parameters
--verbose=true # Wrong: uses = instead of space
--verbose # Wrong: missing value for boolean flag
--verbose True # Wrong: capital T (should be lowercase)
--show-storage-usage 1 # Wrong: should be true/false, not 1/0---
4. Required User-Agent Flag
EVERY aliyun CLI command in this skill MUST include the --user-agent flag with value AlibabaCloud-Agent-Skills.
✅ CORRECT
aliyun paifeaturestore list-instances \
--region cn-beijing \
--user-agent AlibabaCloud-Agent-Skills
aliyun paifeaturestore list-datasources \
--region cn-beijing \
--instance-id fs-12345 \
--type FeatureDB \
--user-agent AlibabaCloud-Agent-Skills❌ INCORRECT
# Missing --user-agent flag
aliyun paifeaturestore list-instances \
--region cn-beijing
# Wrong user-agent value
aliyun paifeaturestore list-instances \
--region cn-beijing \
--user-agent MyAgent
# User-agent in wrong format
aliyun paifeaturestore list-instances \
--region cn-beijing \
--user-agent=AlibabaCloud-Agent-Skills # Wrong: uses = instead of space---
5. Date Format Verification
All date parameters must use yyyy-MM-dd format.
✅ CORRECT
--start-date 2024-03-01
--end-date 2024-03-31
--start-date 2024-01-15
--end-date 2024-01-15 # Same date is valid for single-day query❌ INCORRECT
--start-date 2024/03/01 # Wrong: uses / separator
--start-date 03-01-2024 # Wrong: wrong order (MM-dd-yyyy)
--start-date 2024-3-1 # Wrong: missing leading zeros
--start-date 20240301 # Wrong: no separators
--start-date "Mar 1, 2024" # Wrong: text format---
6. Region ID Verification
Region IDs must be valid Alibaba Cloud region identifiers.
✅ CORRECT - Supported Regions
--region cn-beijing
--region cn-hangzhou
--region cn-shanghai
--region cn-shenzhen
--region cn-hongkong
--region ap-southeast-1
--region ap-southeast-5
--region us-west-1
--region eu-central-1❌ INCORRECT
--region beijing # Wrong: missing 'cn-' prefix
--region CN-BEIJING # Wrong: must be lowercase
--region cn_beijing # Wrong: uses underscore instead of hyphen
--region singapore # Wrong: should be ap-southeast-1
--region us-east-1 # Wrong: not a supported region for this skill---
7. Enum Parameter Verification
Some parameters accept only specific enumerated values.
✅ CORRECT - Status Parameter
--status Running
--status Initializing
--status Failure✅ CORRECT - Type Parameter
--type FeatureDB
--type Hologres
--type MaxCompute
--type TableStore✅ CORRECT - Sort Order
--order ASC
--order DESC✅ CORRECT - Sort By
--sort-by ReadCount
--sort-by WriteCount
--sort-by GmtCreateTime
--sort-by GmtModifiedTime❌ INCORRECT - Enum Values
--status running # Wrong: must be PascalCase
--status RUNNING # Wrong: all caps not accepted
--type featuredb # Wrong: must be PascalCase
--type feature-db # Wrong: no hyphens in type name
--order asc # Wrong: must be uppercase
--order Ascending # Wrong: must use ASC
--sort-by readCount # Wrong: must be PascalCase
--sort-by read-count # Wrong: no hyphens---
8. Pagination Parameters
Pagination parameters must be positive integers.
✅ CORRECT
--page-number 1
--page-size 10
--page-number 2
--page-size 50❌ INCORRECT
--page-number 0 # Wrong: must be >= 1
--page-number -1 # Wrong: must be positive
--page-size 0 # Wrong: must be >= 1
--page-number "1" # Wrong: quoted (though CLI may accept)---
9. Complete Command Examples
✅ CORRECT - List Instances
aliyun paifeaturestore list-instances \
--region cn-beijing \
--status Running \
--page-number 1 \
--page-size 10 \
--user-agent AlibabaCloud-Agent-Skills✅ CORRECT - List Datasources
aliyun paifeaturestore list-datasources \
--region cn-beijing \
--instance-id fs-cn-beijing-12345 \
--type FeatureDB \
--workspace-id ws-12345 \
--page-number 1 \
--page-size 10 \
--user-agent AlibabaCloud-Agent-Skills✅ CORRECT - Get Datasource
aliyun paifeaturestore get-datasource \
--region cn-beijing \
--instance-id fs-cn-beijing-12345 \
--datasource-id ds-12345 \
--user-agent AlibabaCloud-Agent-Skills✅ CORRECT - Query Total Usage
aliyun paifeaturestore list-datasource-feature-views \
--region cn-beijing \
--instance-id fs-cn-beijing-12345 \
--datasource-id ds-12345 \
--start-date 2024-03-01 \
--end-date 2024-03-31 \
--verbose false \
--show-storage-usage false \
--page-size 1 \
--user-agent AlibabaCloud-Agent-Skills✅ CORRECT - Query Per-Feature-View Usage
aliyun paifeaturestore list-datasource-feature-views \
--region cn-beijing \
--instance-id fs-cn-beijing-12345 \
--datasource-id ds-12345 \
--start-date 2024-03-07 \
--end-date 2024-03-07 \
--verbose true \
--show-storage-usage false \
--all true \
--sort-by ReadCount \
--order DESC \
--user-agent AlibabaCloud-Agent-Skills✅ CORRECT - Query Project Usage
aliyun paifeaturestore list-datasource-feature-views \
--region cn-beijing \
--instance-id fs-cn-beijing-12345 \
--datasource-id ds-12345 \
--start-date 2024-03-01 \
--end-date 2024-03-07 \
--verbose false \
--show-storage-usage false \
--page-size 1 \
--project-name recommendation_system \
--user-agent AlibabaCloud-Agent-Skills✅ CORRECT - Query Feature View Trend
aliyun paifeaturestore list-datasource-feature-views \
--region cn-beijing \
--instance-id fs-cn-beijing-12345 \
--datasource-id ds-12345 \
--start-date 2024-03-01 \
--end-date 2024-03-07 \
--verbose true \
--show-storage-usage false \
--all true \
--project-name recommendation_system \
--name user_features \
--user-agent AlibabaCloud-Agent-Skills---
Correct Response Handling
1. JSON Response Parsing
All CLI responses return JSON that should be parsed with jq or similar tools.
✅ CORRECT
# Parse response with jq
RESPONSE=$(aliyun paifeaturestore list-instances \
--region cn-beijing \
--user-agent AlibabaCloud-Agent-Skills)
INSTANCE_ID=$(echo "$RESPONSE" | jq -r '.Instances[0].InstanceId')
TOTAL_COUNT=$(echo "$RESPONSE" | jq -r '.TotalCount')❌ INCORRECT
# Trying to parse JSON with grep/awk (fragile)
INSTANCE_ID=$(aliyun paifeaturestore list-instances \
--region cn-beijing \
--user-agent AlibabaCloud-Agent-Skills | grep -o '"InstanceId":"[^"]*"' | cut -d'"' -f4)---
2. Error Handling
Check command exit codes and response structure.
✅ CORRECT
RESPONSE=$(aliyun paifeaturestore list-instances \
--region cn-beijing \
--user-agent AlibabaCloud-Agent-Skills 2>&1)
if [ $? -ne 0 ]; then
echo "Error: Command failed"
echo "$RESPONSE"
exit 1
fi
# Check if response has expected fields
if ! echo "$RESPONSE" | jq -e '.Instances' > /dev/null 2>&1; then
echo "Error: Invalid response structure"
exit 1
fi❌ INCORRECT
# Not checking exit code
aliyun paifeaturestore list-instances \
--region cn-beijing \
--user-agent AlibabaCloud-Agent-Skills > response.json
# Assuming command always succeeds
INSTANCE_ID=$(jq -r '.Instances[0].InstanceId' response.json)---
Correct Cost Calculation
1. Pricing Tier Selection
✅ CORRECT
REGION="cn-beijing"
# Mainland China regions
if [[ "$REGION" =~ ^cn-(beijing|hangzhou|shanghai|shenzhen)$ ]]; then
WRITE_PRICE=0.151
READ_PRICE=0.0755
# International regions
elif [[ "$REGION" =~ ^(cn-hongkong|ap-southeast-1|ap-southeast-5|us-west-1|eu-central-1)$ ]]; then
WRITE_PRICE=0.2651
READ_PRICE=0.1326
else
echo "Error: Unknown region pricing"
exit 1
fi❌ INCORRECT
# Using wrong pricing for all regions
WRITE_PRICE=0.151
READ_PRICE=0.0755
# Or using hardcoded pricing without region check---
2. Cost Calculation Formula
✅ CORRECT
TOTAL_READS=1500000
TOTAL_WRITES=500000
READ_PRICE=0.0755
WRITE_PRICE=0.151
# Divide by 10,000 (pricing is per 10k operations)
READ_COST=$(echo "scale=4; $TOTAL_READS / 10000 * $READ_PRICE" | bc)
WRITE_COST=$(echo "scale=4; $TOTAL_WRITES / 10000 * $WRITE_PRICE" | bc)
TOTAL_COST=$(echo "scale=4; $READ_COST + $WRITE_COST" | bc)
echo "Read cost: ¥$READ_COST"
echo "Write cost: ¥$WRITE_COST"
echo "Total cost: ¥$TOTAL_COST"❌ INCORRECT
# Forgetting to divide by 10,000
READ_COST=$(echo "scale=4; $TOTAL_READS * $READ_PRICE" | bc) # Wrong!
# Using wrong arithmetic
READ_COST=$(echo "$TOTAL_READS / 10000 * $READ_PRICE" | bc) # Wrong: no scale, loses precision---
Correct Date Range Handling
1. Date Range Validation
✅ CORRECT
START_DATE="2024-03-01"
END_DATE="2024-03-31"
# Calculate days between dates
START_TS=$(date -d "$START_DATE" +%s)
END_TS=$(date -d "$END_DATE" +%s)
DAYS=$(( ($END_TS - $START_TS) / 86400 ))
if [ $DAYS -gt 30 ]; then
echo "Error: Date range exceeds 30 days (max allowed)"
exit 1
fi
if [ $DAYS -lt 0 ]; then
echo "Error: End date is before start date"
exit 1
fi❌ INCORRECT
# Not validating date range before API call
aliyun paifeaturestore list-datasource-feature-views \
--start-date 2024-01-01 \
--end-date 2024-12-31 \ # Wrong: 365 days exceeds 30-day limit!
--user-agent AlibabaCloud-Agent-Skills---
2. Default Date Range
✅ CORRECT
# Default for total usage: last 30 days
END_DATE=$(date -d "yesterday" +%Y-%m-%d)
START_DATE=$(date -d "30 days ago" +%Y-%m-%d)
# Default for project/feature view: last 7 days
END_DATE=$(date -d "yesterday" +%Y-%m-%d)
START_DATE=$(date -d "7 days ago" +%Y-%m-%d)❌ INCORRECT
# Using "today" as end date (data may not be complete)
END_DATE=$(date +%Y-%m-%d)
# Using fixed dates
START_DATE="2024-01-01"
END_DATE="2024-01-31"---
Functional Scope Validation
✅ CORRECT - In-Scope Requests
These requests are within the skill's functional scope:
1. "Query FeatureDB read/write usage for last month" 2. "Show me yesterday's feature view usage sorted by read count" 3. "Calculate my FeatureDB costs for the last 7 days" 4. "What's the usage trend for project 'recommendation_system'?" 5. "Show read/write trend for feature view 'user_features'"
❌ INCORRECT - Out-of-Scope Requests
These requests are OUT of scope and must be politely declined:
1. "Create a new FeatureDB datasource" - Creating resources 2. "Delete feature view 'user_features'" - Deleting resources 3. "Update datasource configuration" - Modifying resources 4. "Write data to FeatureDB" - Write operations 5. "Execute SQL query on FeatureDB" - Direct database operations 6. "Export feature data to CSV" - Data export operations
Correct Response for Out-of-Scope:
I apologize, but [requested action] is outside the scope of this skill.
This skill only supports querying and analyzing FeatureDB read/write usage statistics.
Supported functions:
1. Query daily read/write totals over a date range
2. Query per-feature-view usage on a specific date
3. Query project-level usage trends
4. Query feature view usage trends
5. Calculate costs based on official pricing
Would you like to query your FeatureDB usage statistics?---
Language Response Validation
✅ CORRECT - Match User's Language
User asks in Chinese:
User: "查询FeatureDB的读写量"
Agent: "好的,我来帮您查询FeatureDB的读写量。首先需要确认一些信息..."User asks in English:
User: "Query FeatureDB read/write usage"
Agent: "Sure, I'll help you query FeatureDB read/write usage. First, I need to confirm some information..."❌ INCORRECT - Language Mismatch
User asks in Chinese, Agent responds in English:
User: "查询FeatureDB的读写量"
Agent: "Sure, I'll help you query FeatureDB usage..." # Wrong! Should respond in ChineseUser asks in English, Agent responds in Chinese:
User: "Query FeatureDB usage"
Agent: "好的,我来帮您查询..." # Wrong! Should respond in English---
Summary Checklist
Before considering the skill complete, verify:
- [ ] All
aliyuncommands usepaifeaturestore(lowercase, no hyphens) - [ ] All actions use kebab-case format (e.g.,
list-instances, notListInstances) - [ ] All parameters use kebab-case with
--prefix (e.g.,--instance-id, not--InstanceId) - [ ] All commands include
--user-agent AlibabaCloud-Agent-Skills - [ ] All date parameters use
yyyy-MM-ddformat - [ ] All region IDs are valid and lowercase with hyphens
- [ ] All enum values use correct casing (PascalCase for types, UPPERCASE for order)
- [ ] Boolean parameters use
true/false, not1/0 - [ ] Pagination parameters are positive integers
- [ ] Date ranges don't exceed 30 days
- [ ] Cost calculations divide by 10,000 and use correct pricing tier
- [ ] Responses match user's question language
- [ ] Out-of-scope requests are politely declined with feature list
- [ ] JSON responses parsed with
jq, not grep/awk - [ ] Error handling checks exit codes and response structure
Aliyun CLI Installation & Configuration Guide
Complete guide for installing and configuring Aliyun CLI.
Aliyun CLI 3.3.3+: Supports installing and using all published Alibaba Cloud product plugins. Make sure to upgrade to 3.3.3 or later for full plugin ecosystem coverage.
Installation
macOS
Using Homebrew (Recommended)
brew install aliyun-cli
# Upgrade to latest
brew upgrade aliyun-cli
# Verify version (>= 3.3.1)
aliyun versionUsing Binary
# Download
wget https://aliyuncli.alicdn.com/aliyun-cli-macosx-latest-amd64.tgz
# Extract
tar -xzf aliyun-cli-macosx-latest-amd64.tgz
# Move to PATH
sudo mv aliyun /usr/local/bin/
# Verify
aliyun versionLinux
Debian/Ubuntu
# Download
wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz
# Extract and install
tar -xzf aliyun-cli-linux-latest-amd64.tgz
sudo mv aliyun /usr/local/bin/
# Verify
aliyun versionCentOS/RHEL
# Download
wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz
# Extract and install
tar -xzf aliyun-cli-linux-latest-amd64.tgz
sudo mv aliyun /usr/local/bin/
# Verify
aliyun versionARM64 Architecture
# Download ARM64 version
wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-arm64.tgz
# Extract and install
tar -xzf aliyun-cli-linux-latest-arm64.tgz
sudo mv aliyun /usr/local/bin/Windows
Using Binary 1. Download from: https://aliyuncli.alicdn.com/aliyun-cli-windows-latest-amd64.zip 2. Extract the ZIP file 3. Add the directory to your PATH environment variable 4. Open new Command Prompt or PowerShell 5. Verify: aliyun version
Using PowerShell
# Download
Invoke-WebRequest -Uri "https://aliyuncli.alicdn.com/aliyun-cli-windows-latest-amd64.zip" -OutFile "aliyun-cli.zip"
# Extract
Expand-Archive -Path aliyun-cli.zip -DestinationPath C:\aliyun-cli
# Add to PATH (requires admin privileges)
$env:Path += ";C:\aliyun-cli"
[Environment]::SetEnvironmentVariable("Path", $env:Path, [System.EnvironmentVariableTarget]::Machine)
# Verify
aliyun versionConfiguration
Quick Start
aliyun configure set \
--mode AK \
--access-key-id <your-access-key-id> \
--access-key-secret <your-access-key-secret> \
--region cn-hangzhouAll aliyun configure commands support non-interactive flags, which is the recommended approach — it works in scripts, CI/CD pipelines, and agent-driven automation without hanging on stdin prompts.
Where to Get Access Keys
1. Log in to Aliyun Console: https://ram.console.aliyun.com/ 2. Navigate to: AccessKey Management 3. Create a new AccessKey pair 4. Save the secret immediately — it's only shown once
Configuration Modes
Aliyun CLI supports 6 authentication modes. All examples below use non-interactive flags.
1. AK Mode (Access Key)
Most common mode for personal accounts and scripts.
aliyun configure set \
--mode AK \
--access-key-id LTAI5tXXXXXXXX \
--access-key-secret 8dXXXXXXXXXXXXXXXXXXXXXXXX \
--region cn-hangzhouConfiguration is stored in ~/.aliyun/config.json:
{
"current": "default",
"profiles": [
{
"name": "default",
"mode": "AK",
"access_key_id": "LTAI5tXXXXXXXX",
"access_key_secret": "8dXXXXXXXXXXXXXXXXXXXXXXXX",
"region_id": "cn-hangzhou",
"output_format": "json",
"language": "en"
}
]
}2. StsToken Mode (Temporary Credentials)
For short-lived access (tokens expire in 1-12 hours).
aliyun configure set \
--mode StsToken \
--access-key-id LTAI5tXXXXXXXX \
--access-key-secret 8dXXXXXXXXXXXXXXXXXXXXXXXX \
--sts-token v1.0:XXXXXXXXXXXXXXXX \
--region cn-hangzhouUse cases: CI/CD pipelines, temporary access for external contractors, cross-account access.
3. RamRoleArn Mode (Assume RAM Role)
Assume a RAM role for elevated or cross-account access.
aliyun configure set \
--mode RamRoleArn \
--access-key-id LTAI5tXXXXXXXX \
--access-key-secret 8dXXXXXXXXXXXXXXXXXXXXXXXX \
--ram-role-arn acs:ram::123456789012:role/AdminRole \
--role-session-name my-session \
--region cn-hangzhouUse cases: cross-account resource access, temporary elevated privileges, role-based access control.
4. EcsRamRole Mode (ECS Instance RAM Role)
Use the RAM role attached to an ECS instance — no credentials needed.
aliyun configure set \
--mode EcsRamRole \
--ram-role-name MyEcsRole \
--region cn-hangzhouRequirements: must be running on an ECS instance with a RAM role attached.
Use cases: scripts and automation running on ECS instances.
5. RsaKeyPair Mode (RSA Key Pair)
Use RSA key pair for authentication (generate key pair in Aliyun Console first).
aliyun configure set \
--mode RsaKeyPair \
--private-key /path/to/private-key.pem \
--key-pair-name my-key-pair \
--region cn-hangzhou6. RamRoleArnWithEcs Mode (ECS + RAM Role)
Combine ECS instance role with RAM role assumption for cross-account access from ECS.
aliyun configure set \
--mode RamRoleArnWithEcs \
--ram-role-name MyEcsRole \
--ram-role-arn acs:ram::123456789012:role/TargetRole \
--role-session-name my-session \
--region cn-hangzhouEnvironment Variables
Highest priority - overrides config file
Access Key Mode
export ALIBABA_CLOUD_ACCESS_KEY_ID=your_access_key_id
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=your_access_key_secret
export ALIBABA_CLOUD_REGION_ID=cn-hangzhouSTS Token Mode
export ALIBABA_CLOUD_ACCESS_KEY_ID=your_access_key_id
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=your_access_key_secret
export ALIBABA_CLOUD_SECURITY_TOKEN=your_sts_token
export ALIBABA_CLOUD_REGION_ID=cn-hangzhouECS RAM Role Mode
export ALIBABA_CLOUD_ECS_METADATA=role_nameUse Case:
- CI/CD pipelines
- Docker containers
- Temporary credential override
Managing Multiple Profiles
Create Named Profiles
aliyun configure set --profile projectA \
--mode AK \
--access-key-id LTAI5tAAAAAAAA \
--access-key-secret 8dAAAAAAAAAAAAAAAAAAAAAAAA \
--region cn-hangzhou
aliyun configure set --profile projectB \
--mode AK \
--access-key-id LTAI5tBBBBBBBB \
--access-key-secret 8dBBBBBBBBBBBBBBBBBBBBBBBB \
--region cn-shanghaiUse Specific Profile
aliyun ecs describe-instances --profile projectA
export ALIBABA_CLOUD_PROFILE=projectA
aliyun ecs describe-instances # Uses projectAList and Switch Profiles
aliyun configure list # List all profiles
aliyun configure set --current projectA # Switch default profileCredential Priority
Credentials are loaded in this order (first found wins):
1. Command-line flag: --profile <name> 2. Environment variable: ALIBABA_CLOUD_PROFILE 3. Environment credentials: ALIBABA_CLOUD_ACCESS_KEY_ID, etc. 4. Configuration file: ~/.aliyun/config.json (current profile) 5. ECS Instance RAM Role: If running on ECS with attached role
Verification
Test Authentication
# Basic test - list regions
aliyun ecs describe-regions
# Expected output: JSON array of regionsIf successful, you'll see:
{
"Regions": {
"Region": [
{
"RegionId": "cn-hangzhou",
"RegionEndpoint": "ecs.cn-hangzhou.aliyuncs.com",
"LocalName": "华东 1(杭州)"
},
...
]
},
"RequestId": "..."
}If failed, you'll see error messages:
InvalidAccessKeyId.NotFound- Wrong Access Key IDSignatureDoesNotMatch- Wrong Access Key SecretInvalidSecurityToken.Expired- STS token expired (for StsToken mode)Forbidden.RAM- Insufficient permissions
Debug Configuration
# Show current configuration
aliyun configure get
# Test with debug logging
aliyun ecs describe-regions --log-level=debug
# Check credential provider
aliyun configure get modeSecurity Best Practices
1. Use RAM Users (Not Root Account)
❌ Don't: Use Aliyun root account credentials ✅ Do: Create RAM users with specific permissions
# Create RAM user in console
# Attach only necessary policies
# Use RAM user's access keys2. Principle of Least Privilege
Grant only the minimum permissions needed:
# Example: Read-only ECS access
# Attach policy: AliyunECSReadOnlyAccess3. Rotate Access Keys Regularly
# Create new access key in RAM Console, then update configuration
aliyun configure set --access-key-id NEW_KEY --access-key-secret NEW_SECRET
# Delete old access key from console4. Use STS Tokens for Temporary Access
aliyun configure set --mode StsToken \
--access-key-id XXXX --access-key-secret XXXX \
--sts-token XXXX --region cn-hangzhou5. Use ECS RAM Roles When Possible
aliyun configure set --mode EcsRamRole --ram-role-name MyRole --region cn-hangzhou6. Never Commit Credentials
# Add to .gitignore
echo "~/.aliyun/config.json" >> .gitignore
# Use environment variables in CI/CD instead7. Secure Config File
# Restrict permissions
chmod 600 ~/.aliyun/config.jsonTroubleshooting
Issue: Command Not Found
# Check installation
which aliyun
# Check PATH
echo $PATH
# Reinstall or add to PATHIssue: Authentication Failed
# Verify configuration
aliyun configure get
# Test with debug
aliyun ecs describe-regions --log-level=debug
# Check credentials in console
# Verify access key is activeIssue: Permission Denied
# Error: Forbidden.RAM
# Check RAM user permissions
# Attach necessary policies in RAM console
# Example: AliyunECSFullAccess for ECS operationsIssue: STS Token Expired
# Error: InvalidSecurityToken.Expired
# Reconfigure with new token
aliyun configure set --mode StsToken \
--access-key-id XXXX --access-key-secret XXXX \
--sts-token NEW_TOKEN --region cn-hangzhouIssue: Wrong Region
# Some resources may not exist in the specified region
# Check available regions
aliyun ecs describe-regions
# Update default region
aliyun configure set region cn-shanghaiAdvanced Configuration
Custom Endpoint
# Use custom or private endpoint
export ALIBABA_CLOUD_ECS_ENDPOINT=ecs-vpc.cn-hangzhou.aliyuncs.comProxy Settings
# HTTP proxy
export HTTP_PROXY=http://proxy.example.com:8080
export HTTPS_PROXY=http://proxy.example.com:8080
# No proxy for specific domains
export NO_PROXY=localhost,127.0.0.1,.aliyuncs.comTimeout Settings
# Connection timeout (default: 10s)
export ALIBABA_CLOUD_CONNECT_TIMEOUT=30
# Read timeout (default: 10s)
export ALIBABA_CLOUD_READ_TIMEOUT=30Next Steps
After installation and configuration:
1. Install plugins for services you need (v3.3.3+ supports all published product plugins):
aliyun plugin install --names ecs vpc rds
# List all available plugins
aliyun plugin list-remote2. Explore commands:
aliyun ecs --help
aliyun fc --help3. Read documentation:
- Command Syntax Guide
- Global Flags Reference
- Common Scenarios
References
- Official Documentation: https://help.aliyun.com/zh/cli/
- RAM Console: https://ram.console.aliyun.com/
- Access Key Management: https://ram.console.aliyun.com/manage/ak
- Plugin Repository: https://github.com/aliyun/aliyun-cli
RAM Policies for PAI-FeatureStore FeatureDB Usage Query
This document describes the required RAM (Resource Access Management) permissions for querying and analyzing PAI-FeatureStore FeatureDB usage statistics.
---
Required API Actions
The following API actions are required for this skill:
| API Action | Purpose | Required |
|---|---|---|
paifeaturestore:ListInstances | List PAI-FeatureStore instances to get InstanceId | Yes |
paifeaturestore:GetDatasource | Get datasource details to verify it's a FeatureDB datasource | Yes |
paifeaturestore:ListDatasources | List datasources to find FeatureDB datasources | Yes |
paifeaturestore:ListDatasourceFeatureViews | Query feature view usage statistics and read/write counts | Yes |
---
Minimal RAM Policy
Below is the minimal RAM policy required for this skill. This policy grants read-only access to query FeatureDB usage statistics.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"paifeaturestore:ListInstances",
"paifeaturestore:GetDatasource",
"paifeaturestore:ListDatasources",
"paifeaturestore:ListDatasourceFeatureViews"
],
"Resource": "*"
}
]
}---
Policy Configuration Steps
Option 1: Via Alibaba Cloud Console
1. Log in to the RAM Console 2. Navigate to Policies → Create Policy 3. Select JSON mode 4. Paste the policy JSON above 5. Name the policy (e.g., PAI-FeatureStore-ReadOnly-UsageQuery) 6. Click OK to create 7. Navigate to Users → Select the user → Add Permissions 8. Select the policy you just created and grant it to the user
Option 2: Via Aliyun CLI
Note: RAM policy creation via CLI requires elevated permissions. This should be done by an account administrator.
# Create the policy
aliyun ram create-policy \
--policy-name PAI-FeatureStore-ReadOnly-UsageQuery \
--policy-document '{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"paifeaturestore:ListInstances",
"paifeaturestore:GetDatasource",
"paifeaturestore:ListDatasources",
"paifeaturestore:ListDatasourceFeatureViews"
],
"Resource": "*"
}
]
}' \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query
# Attach the policy to a user
aliyun ram attach-policy-to-user \
--policy-name PAI-FeatureStore-ReadOnly-UsageQuery \
--policy-type Custom \
--user-name <YourUserName> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query---
Resource-Level Permissions
The actions in this skill operate at the account level and require Resource: "*". More granular resource-level permissions are not supported for these specific API actions.
---
Security Best Practices
1. Use the principle of least privilege: Only grant the permissions listed above 2. Create dedicated RAM users: Don't use the root account for day-to-day operations 3. Enable MFA: Enable multi-factor authentication for RAM users with console access 4. Rotate credentials regularly: Change AccessKey pairs periodically 5. Use temporary credentials: Consider using STS tokens for temporary access 6. Audit access logs: Enable ActionTrail to monitor API calls
---
Troubleshooting
Error: "You are not authorized to do this action"
Cause: The RAM user lacks the required permissions.
Solution: 1. Verify the user has the policy attached: aliyun ram list-policies-for-user --user-name <UserName> --user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query 2. Check that the policy includes all required actions listed above 3. If using a custom policy, ensure the JSON syntax is correct
Error: "Invalid RAM policy"
Cause: The policy JSON is malformed.
Solution: 1. Validate the JSON syntax using a JSON validator 2. Ensure the Version is set to "1" (not "2" or other values) 3. Check that action names are spelled correctly with proper casing
---
Additional Resources
Related APIs and CLI Commands
This document provides a comprehensive reference of all APIs and CLI commands used in the PAI-FeatureStore FeatureDB Usage Query skill.
---
API Overview
| Product | CLI Command | API Action | API Version | Description |
|---|---|---|---|---|
| PAI-FeatureStore | aliyun paifeaturestore list-instances | ListInstances | 2023-06-21 | List all PAI-FeatureStore instances |
| PAI-FeatureStore | aliyun paifeaturestore get-datasource | GetDatasource | 2023-06-21 | Get details of a specific datasource |
| PAI-FeatureStore | aliyun paifeaturestore list-datasources | ListDatasources | 2023-06-21 | List all datasources under an instance |
| PAI-FeatureStore | aliyun paifeaturestore list-datasource-feature-views | ListDatasourceFeatureViews | 2023-06-21 | List feature views and query usage statistics |
---
Detailed API Reference
1. ListInstances
Purpose: List all PAI-FeatureStore instances in a region.
CLI Command:
aliyun paifeaturestore list-instances \
--region <RegionId> \
--status Running \
--page-number 1 \
--page-size 10 \
--user-agent AlibabaCloud-Agent-SkillsRequest Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| --region | string | Yes | Region ID (e.g., cn-beijing, cn-hangzhou) |
| --status | string | No | Filter by status: Initializing, Running, Failure |
| --page-number | int | No | Page number for pagination (default: 1) |
| --page-size | int | No | Page size for pagination (default: 10) |
| --sort-by | string | No | Sort by: GmtCreateTime, GmtModifiedTime |
| --order | string | No | Sort order: ASC, DESC |
Response Fields:
| Field | Type | Description |
|---|---|---|
| Instances | array | Array of instance objects |
| Instances[].InstanceId | string | Instance ID |
| Instances[].Status | string | Instance status |
| Instances[].Type | string | Instance type |
| Instances[].GmtCreateTime | string | Creation time |
| TotalCount | int | Total number of instances |
API Documentation: ListInstances
---
2. GetDatasource
Purpose: Get detailed information about a specific datasource.
CLI Command:
aliyun paifeaturestore get-datasource \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--user-agent AlibabaCloud-Agent-SkillsRequest Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| --region | string | Yes | Region ID |
| --instance-id | string | Yes | Instance ID from ListInstances |
| --datasource-id | string | Yes | Datasource ID to query |
Response Fields:
| Field | Type | Description |
|---|---|---|
| DatasourceId | string | Datasource ID |
| Name | string | Datasource name |
| Type | string | Datasource type (FeatureDB, Hologres, MaxCompute, TableStore) |
| Config | string | Datasource configuration (JSON string) |
| Uri | string | Datasource connection URI |
| GmtCreateTime | string | Creation time |
| WorkspaceId | string | Workspace ID |
API Documentation: GetDatasource
---
3. ListDatasources
Purpose: List all datasources under an instance, optionally filtered by type and workspace.
CLI Command:
aliyun paifeaturestore list-datasources \
--region <RegionId> \
--instance-id <InstanceId> \
--type FeatureDB \
--workspace-id <WorkspaceId> \
--page-number 1 \
--page-size 10 \
--user-agent AlibabaCloud-Agent-SkillsRequest Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| --region | string | Yes | Region ID |
| --instance-id | string | Yes | Instance ID from ListInstances |
| --type | string | No | Filter by type: FeatureDB, Hologres, MaxCompute, TableStore |
| --workspace-id | string | No | Filter by workspace ID |
| --name | string | No | Filter by datasource name (fuzzy match) |
| --page-number | int | No | Page number (default: 1) |
| --page-size | int | No | Page size (default: 10) |
| --sort-by | string | No | Sort field |
| --order | string | No | Sort order: ASC, DESC |
Response Fields:
| Field | Type | Description |
|---|---|---|
| Datasources | array | Array of datasource objects |
| Datasources[].DatasourceId | string | Datasource ID |
| Datasources[].Name | string | Datasource name |
| Datasources[].Type | string | Datasource type |
| Datasources[].WorkspaceId | string | Workspace ID |
| TotalCount | int | Total number of datasources |
| PageNumber | int | Current page number |
| PageSize | int | Current page size |
Pagination Handling:
# Calculate total pages: ceil(TotalCount / PageSize)
# Then iterate through all pages
for page in {1..total_pages}; do
aliyun paifeaturestore list-datasources \
--region <RegionId> \
--instance-id <InstanceId> \
--type FeatureDB \
--page-number $page \
--page-size 10 \
--user-agent AlibabaCloud-Agent-Skills
doneAPI Documentation: ListDatasources
---
4. ListDatasourceFeatureViews
Purpose: List feature views under a datasource and query usage statistics (read/write counts).
CLI Command:
For Total Usage Query (Function 1 & 3):
aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date <yyyy-MM-dd> \
--end-date <yyyy-MM-dd> \
--verbose false \
--show-storage-usage false \
--page-size 1 \
--project-name <ProjectName> \
--user-agent AlibabaCloud-Agent-SkillsFor Per-Feature-View Query (Function 2):
aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date <yyyy-MM-dd> \
--end-date <yyyy-MM-dd> \
--verbose true \
--show-storage-usage false \
--all true \
--sort-by <ReadCount|WriteCount> \
--order <ASC|DESC> \
--user-agent AlibabaCloud-Agent-SkillsFor Feature View Trend Query (Function 4):
aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date <yyyy-MM-dd> \
--end-date <yyyy-MM-dd> \
--verbose true \
--show-storage-usage false \
--all true \
--project-name <ProjectName> \
--name <FeatureViewName> \
--user-agent AlibabaCloud-Agent-SkillsRequest Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| --region | string | Yes | Region ID |
| --instance-id | string | Yes | Instance ID from ListInstances |
| --datasource-id | string | Yes | Datasource ID |
| --start-date | string | No | Query start date (yyyy-MM-dd format) |
| --end-date | string | No | Query end date (yyyy-MM-dd format) |
| --verbose | bool | No | Show detailed statistics (true) or only totals (false). Default: true |
| --show-storage-usage | bool | No | Show storage usage statistics. Default: true |
| --all | bool | No | Return all data without pagination |
| --page-number | int | No | Page number (default: 1) |
| --page-size | int | No | Page size (default: 10) |
| --project-name | string | No | Filter by project name |
| --name | string | No | Filter by feature view name (fuzzy match) |
| --type | string | No | Filter by type: Batch, Stream, Sequence |
| --sort-by | string | No | Sort by field (e.g., ReadCount, WriteCount) |
| --order | string | No | Sort order: ASC, DESC |
Response Fields:
| Field | Type | Description |
|---|---|---|
| FeatureViews | array | Array of feature view objects (only when verbose=true) |
| FeatureViews[].FeatureViewId | string | Feature view ID |
| FeatureViews[].Name | string | Feature view name |
| FeatureViews[].ProjectName | string | Project name |
| FeatureViews[].Type | string | Feature view type |
| FeatureViews[].UsageStatistics | array | Array of daily usage statistics |
| FeatureViews[].UsageStatistics[].Date | string | Date (yyyy-MM-dd) |
| FeatureViews[].UsageStatistics[].ReadCount | long | Number of read operations |
| FeatureViews[].UsageStatistics[].WriteCount | long | Number of write operations |
| TotalUsageStatistics | array | Total usage statistics across all feature views |
| TotalUsageStatistics[].Date | string | Date (yyyy-MM-dd) |
| TotalUsageStatistics[].ReadCount | long | Total read count for the date |
| TotalUsageStatistics[].WriteCount | long | Total write count for the date |
| TotalCount | int | Total number of feature views |
Date Range Limits:
- Maximum span: 30 days between StartDate and EndDate
- Default behavior if dates not specified:
- Total usage query (Function 1): Last 30 days
- Project/Feature view query (Function 3/4): Last 7 days
API Documentation: ListDatasourceFeatureViews
---
Common Parameter Patterns
User Agent
All CLI commands in this skill MUST include the user-agent flag:
--user-agent AlibabaCloud-Agent-SkillsRegion Specification
Use the --region flag for all commands:
--region cn-beijingDate Format
All date parameters must use yyyy-MM-dd format:
--start-date 2024-01-01
--end-date 2024-01-31Boolean Parameters
Boolean flags are specified without values:
--verbose true # Show detailed statistics
--verbose false # Show only totals
--all true # Return all data (no pagination)---
Error Codes
| Error Code | Description | Solution |
|---|---|---|
| InvalidParameter | Invalid parameter value | Check parameter format and allowed values |
| ResourceNotFound | Instance/Datasource not found | Verify the ID exists using list commands |
| OperationDenied.NoPermission | Insufficient RAM permissions | Check RAM policy configuration |
| InvalidDateRange | Date range exceeds maximum span | Reduce date range to <= 30 days |
| Throttling | Request rate limit exceeded | Implement retry with exponential backoff |
---
Example Request-Response Flows
Example 1: List Instances
Request:
aliyun paifeaturestore list-instances \
--region cn-beijing \
--status Running \
--user-agent AlibabaCloud-Agent-SkillsResponse:
{
"Instances": [
{
"InstanceId": "fs-cn-beijing-12345",
"Status": "Running",
"Type": "Standard",
"GmtCreateTime": "2024-01-15T10:30:00Z"
}
],
"TotalCount": 1
}Example 2: Query Total Usage
Request:
aliyun paifeaturestore list-datasource-feature-views \
--region cn-beijing \
--instance-id fs-cn-beijing-12345 \
--datasource-id ds-12345 \
--start-date 2024-03-01 \
--end-date 2024-03-07 \
--verbose false \
--show-storage-usage false \
--page-size 1 \
--user-agent AlibabaCloud-Agent-SkillsResponse:
{
"TotalUsageStatistics": [
{
"Date": "2024-03-01",
"ReadCount": 150000,
"WriteCount": 50000
},
{
"Date": "2024-03-02",
"ReadCount": 180000,
"WriteCount": 55000
},
...
],
"TotalCount": 25
}---
Additional Resources
Verification Method for PAI-FeatureStore FeatureDB Usage Query
This document provides detailed verification steps for validating the correct execution of each operation in the PAI-FeatureStore FeatureDB Usage Query skill.
---
Overview
The skill performs read-only query operations, so verification focuses on: 1. Successful command execution 2. Data retrieval completeness 3. Result accuracy 4. Cost calculation correctness
---
Step-by-Step Verification
Step 1: Verify PAI-FeatureStore Instance Discovery
Command:
aliyun paifeaturestore list-instances \
--region <RegionId> \
--status Running \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-querySuccess Criteria:
- ✅ Command executes without errors
- ✅ Response contains
Instancesarray - ✅ At least one instance with
Status: "Running"is returned - ✅ Each instance has a valid
InstanceId
Verification Commands:
# Check if any Running instances exist
RESPONSE=$(aliyun paifeaturestore list-instances \
--region <RegionId> \
--status Running \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query)
# Verify response is valid JSON
echo "$RESPONSE" | jq . > /dev/null 2>&1 && echo "✅ Valid JSON response" || echo "❌ Invalid JSON"
# Count Running instances
INSTANCE_COUNT=$(echo "$RESPONSE" | jq '.Instances | length')
echo "Found $INSTANCE_COUNT Running instance(s)"
# Extract first InstanceId
INSTANCE_ID=$(echo "$RESPONSE" | jq -r '.Instances[0].InstanceId')
echo "First Instance ID: $INSTANCE_ID"Expected Output Example:
{
"Instances": [
{
"InstanceId": "fs-cn-beijing-12345",
"Status": "Running",
"Type": "Standard",
"GmtCreateTime": "2024-01-15T10:30:00Z"
}
],
"TotalCount": 1,
"RequestId": "ABC123..."
}Troubleshooting:
- No instances found: User doesn't have PAI-FeatureStore instances, or instances are not in Running status
- Permission denied: Check RAM policy includes
paifeaturestore:ListInstances - Invalid region: Verify RegionId is correct and supported
---
Step 2: Verify FeatureDB Datasource Discovery
Case A: With WorkspaceId
Command:
aliyun paifeaturestore list-datasources \
--region <RegionId> \
--instance-id <InstanceId> \
--type FeatureDB \
--workspace-id <WorkspaceId> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-querySuccess Criteria:
- ✅ Command executes without errors
- ✅ Response contains
Datasourcesarray - ✅ All returned datasources have
Type: "FeatureDB" - ✅ Each datasource has a valid
DatasourceId
Verification Commands:
RESPONSE=$(aliyun paifeaturestore list-datasources \
--region <RegionId> \
--instance-id <InstanceId> \
--type FeatureDB \
--workspace-id <WorkspaceId> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query)
# Verify all datasources are FeatureDB type
FEATUREDB_COUNT=$(echo "$RESPONSE" | jq '[.Datasources[] | select(.Type=="FeatureDB")] | length')
TOTAL_COUNT=$(echo "$RESPONSE" | jq '.Datasources | length')
echo "FeatureDB datasources: $FEATUREDB_COUNT out of $TOTAL_COUNT"
# Extract first DatasourceId
DATASOURCE_ID=$(echo "$RESPONSE" | jq -r '.Datasources[0].DatasourceId')
echo "First Datasource ID: $DATASOURCE_ID"Case B: With DatasourceId
Command:
aliyun paifeaturestore get-datasource \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-querySuccess Criteria:
- ✅ Command executes without errors
- ✅ Response contains datasource details
- ✅
Typefield equals"FeatureDB"
Verification Commands:
RESPONSE=$(aliyun paifeaturestore get-datasource \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query)
# Verify type is FeatureDB
TYPE=$(echo "$RESPONSE" | jq -r '.Type')
if [ "$TYPE" == "FeatureDB" ]; then
echo "✅ Datasource is FeatureDB"
else
echo "❌ Datasource is not FeatureDB (Type: $TYPE)"
fiCase C: List All FeatureDB Datasources
Command (with pagination):
# First call to get TotalCount
FIRST_RESPONSE=$(aliyun paifeaturestore list-datasources \
--region <RegionId> \
--instance-id <InstanceId> \
--type FeatureDB \
--page-number 1 \
--page-size 10 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query)
# Calculate total pages
TOTAL_COUNT=$(echo "$FIRST_RESPONSE" | jq -r '.TotalCount')
PAGE_SIZE=10
TOTAL_PAGES=$(( ($TOTAL_COUNT + $PAGE_SIZE - 1) / $PAGE_SIZE ))
echo "Total FeatureDB datasources: $TOTAL_COUNT"
echo "Total pages to fetch: $TOTAL_PAGES"
# Fetch all pages
for ((page=1; page<=TOTAL_PAGES; page++)); do
echo "Fetching page $page..."
aliyun paifeaturestore list-datasources \
--region <RegionId> \
--instance-id <InstanceId> \
--type FeatureDB \
--page-number $page \
--page-size 10 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query
doneSuccess Criteria:
- ✅ All pages fetched successfully
- ✅ Total datasources retrieved equals
TotalCount - ✅ All datasources have
Type: "FeatureDB"
---
Step 3: Verify Usage Statistics Query
Function 1: Total Daily Usage
Command:
aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date 2024-03-01 \
--end-date 2024-03-07 \
--verbose false \
--show-storage-usage false \
--page-size 1 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-querySuccess Criteria:
- ✅ Command executes without errors
- ✅ Response contains
TotalUsageStatisticsarray - ✅ Number of daily records matches expected date range
- ✅ Each record has
Date,ReadCount, andWriteCountfields - ✅ ReadCount and WriteCount are non-negative integers
Verification Commands:
RESPONSE=$(aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date 2024-03-01 \
--end-date 2024-03-07 \
--verbose false \
--show-storage-usage false \
--page-size 1 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query)
# Count daily records
RECORD_COUNT=$(echo "$RESPONSE" | jq '.TotalUsageStatistics | length')
echo "Daily usage records: $RECORD_COUNT"
# Calculate total reads and writes
TOTAL_READS=$(echo "$RESPONSE" | jq '[.TotalUsageStatistics[].ReadCount] | add')
TOTAL_WRITES=$(echo "$RESPONSE" | jq '[.TotalUsageStatistics[].WriteCount] | add')
echo "Total reads: $TOTAL_READS"
echo "Total writes: $TOTAL_WRITES"
# Verify date range
FIRST_DATE=$(echo "$RESPONSE" | jq -r '.TotalUsageStatistics[0].Date')
LAST_DATE=$(echo "$RESPONSE" | jq -r '.TotalUsageStatistics[-1].Date')
echo "Date range: $FIRST_DATE to $LAST_DATE"Expected Output Example:
{
"TotalUsageStatistics": [
{
"Date": "2024-03-01",
"ReadCount": 150000,
"WriteCount": 50000
},
{
"Date": "2024-03-02",
"ReadCount": 180000,
"WriteCount": 55000
},
...
],
"TotalCount": 25
}Function 2: Per-Feature-View Usage
Command:
aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date 2024-03-07 \
--end-date 2024-03-07 \
--verbose true \
--show-storage-usage false \
--all true \
--sort-by ReadCount \
--order DESC \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-querySuccess Criteria:
- ✅ Command executes without errors
- ✅ Response contains
FeatureViewsarray - ✅ Each feature view has
UsageStatisticsarray - ✅ Results are sorted correctly (DESC by ReadCount)
- ✅
TotalUsageStatisticsmatches sum of all feature views
Verification Commands:
RESPONSE=$(aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date 2024-03-07 \
--end-date 2024-03-07 \
--verbose true \
--show-storage-usage false \
--all true \
--sort-by ReadCount \
--order DESC \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query)
# Count feature views
FV_COUNT=$(echo "$RESPONSE" | jq '.FeatureViews | length')
echo "Feature views: $FV_COUNT"
# Verify sorting (ReadCount should be descending)
echo "$RESPONSE" | jq -r '.FeatureViews[] | "\(.Name): \(.UsageStatistics[0].ReadCount) reads"' | head -10
# Verify total equals sum of all views
SUM_READS=$(echo "$RESPONSE" | jq '[.FeatureViews[].UsageStatistics[0].ReadCount] | add')
TOTAL_READS=$(echo "$RESPONSE" | jq '.TotalUsageStatistics[0].ReadCount')
echo "Sum of individual views: $SUM_READS"
echo "Total from TotalUsageStatistics: $TOTAL_READS"
if [ "$SUM_READS" -eq "$TOTAL_READS" ]; then
echo "✅ Totals match"
else
echo "⚠️ Totals mismatch"
fiFunction 3: Project-Level Usage
Command:
aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date 2024-03-01 \
--end-date 2024-03-07 \
--verbose false \
--show-storage-usage false \
--page-size 1 \
--project-name recommendation_system \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-querySuccess Criteria:
- ✅ Command executes without errors
- ✅ Response contains
TotalUsageStatisticsfor the specified project - ✅ If project doesn't exist, API returns appropriate error
Verification Commands:
RESPONSE=$(aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date 2024-03-01 \
--end-date 2024-03-07 \
--verbose false \
--show-storage-usage false \
--page-size 1 \
--project-name recommendation_system \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query)
# Extract and display project usage
echo "$RESPONSE" | jq '.TotalUsageStatistics[] | "\(.Date): \(.ReadCount) reads, \(.WriteCount) writes"'Function 4: Feature View Trend
Command:
aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date 2024-03-01 \
--end-date 2024-03-07 \
--verbose true \
--show-storage-usage false \
--all true \
--project-name recommendation_system \
--name user_features \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-querySuccess Criteria:
- ✅ Command executes without errors
- ✅ Response contains the matching feature view in
FeatureViewsarray - ✅ Feature view has daily
UsageStatisticsfor the date range - ✅ If feature view doesn't exist,
FeatureViewsarray is empty or doesn't contain a match
Verification Commands:
RESPONSE=$(aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--start-date 2024-03-01 \
--end-date 2024-03-07 \
--verbose true \
--show-storage-usage false \
--all true \
--project-name recommendation_system \
--name user_features \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query)
# Find the matching feature view
FV=$(echo "$RESPONSE" | jq '.FeatureViews[] | select(.ProjectName=="recommendation_system" and .Name=="user_features")')
if [ -n "$FV" ]; then
echo "✅ Feature view found"
echo "$FV" | jq '.UsageStatistics[] | "\(.Date): \(.ReadCount) reads, \(.WriteCount) writes"'
else
echo "❌ Feature view not found"
fi---
Step 4: Verify Cost Calculation
Success Criteria:
- ✅ Correct pricing tier selected based on region
- ✅ Read cost calculated correctly:
(TotalReads / 10000) × ReadPrice - ✅ Write cost calculated correctly:
(TotalWrites / 10000) × WritePrice - ✅ Total cost = Read cost + Write cost
- ✅ Results rounded to appropriate decimal places
Verification Logic:
# Example: Calculate costs for cn-beijing region
REGION="cn-beijing"
TOTAL_READS=1500000 # From query result
TOTAL_WRITES=500000 # From query result
# Determine pricing tier
if [[ "$REGION" =~ ^cn-(beijing|hangzhou|shanghai|shenzhen)$ ]]; then
WRITE_PRICE=0.151
READ_PRICE=0.0755
TIER="Mainland China"
else
WRITE_PRICE=0.2651
READ_PRICE=0.1326
TIER="International"
fi
echo "Region: $REGION ($TIER)"
echo "Total reads: $TOTAL_READS"
echo "Total writes: $TOTAL_WRITES"
# Calculate costs
READ_COST=$(echo "scale=4; $TOTAL_READS / 10000 * $READ_PRICE" | bc)
WRITE_COST=$(echo "scale=4; $TOTAL_WRITES / 10000 * $WRITE_PRICE" | bc)
TOTAL_COST=$(echo "scale=4; $READ_COST + $WRITE_COST" | bc)
echo "Read cost: ¥$READ_COST"
echo "Write cost: ¥$WRITE_COST"
echo "Total cost: ¥$TOTAL_COST"Example Verification:
For cn-beijing with 1,500,000 reads and 500,000 writes:
- Read cost: (1,500,000 / 10,000) × 0.0755 = ¥11.325
- Write cost: (500,000 / 10,000) × 0.151 = ¥7.55
- Total cost: ¥18.875
---
Common Issues and Troubleshooting
Issue 1: Empty Response
Symptoms: API returns empty arrays or null values
Possible Causes: 1. No data exists for the specified date range 2. Wrong datasource ID 3. Feature view or project name doesn't exist
Verification:
# Check if datasource has any feature views
aliyun paifeaturestore list-datasource-feature-views \
--region <RegionId> \
--instance-id <InstanceId> \
--datasource-id <DatasourceId> \
--all true \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-queryIssue 2: Date Range Error
Symptoms: API returns error about invalid date range
Possible Causes: 1. Date range exceeds 30 days 2. EndDate is before StartDate 3. Date format is incorrect
Verification:
# Verify date format and range
START_DATE="2024-03-01"
END_DATE="2024-03-31"
# Calculate days between dates
DAYS=$(( ($(date -d "$END_DATE" +%s) - $(date -d "$START_DATE" +%s)) / 86400 ))
echo "Date range: $DAYS days"
if [ $DAYS -gt 30 ]; then
echo "❌ Date range exceeds 30 days"
else
echo "✅ Date range is valid"
fiIssue 3: Permission Denied
Symptoms: API returns "OperationDenied.NoPermission" error
Verification:
# Check RAM user's policies
aliyun ram list-policies-for-user \
--user-name <YourUserName> \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query
# Verify policy includes required actions
aliyun ram get-policy \
--policy-name <PolicyName> \
--policy-type Custom \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query---
Integration Testing
End-to-End Test Script
#!/bin/bash
REGION="cn-beijing"
WORKSPACE_ID="ws-12345"
echo "=== PAI-FeatureStore FeatureDB Usage Query Test ==="
# Step 1: Get instance
echo -e "\n[Step 1] Listing instances..."
INSTANCE_ID=$(aliyun paifeaturestore list-instances \
--region $REGION \
--status Running \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query | jq -r '.Instances[0].InstanceId')
if [ -z "$INSTANCE_ID" ] || [ "$INSTANCE_ID" == "null" ]; then
echo "❌ No Running instance found"
exit 1
fi
echo "✅ Found instance: $INSTANCE_ID"
# Step 2: Get FeatureDB datasource
echo -e "\n[Step 2] Listing FeatureDB datasources..."
DATASOURCE_ID=$(aliyun paifeaturestore list-datasources \
--region $REGION \
--instance-id $INSTANCE_ID \
--type FeatureDB \
--workspace-id $WORKSPACE_ID \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query | jq -r '.Datasources[0].DatasourceId')
if [ -z "$DATASOURCE_ID" ] || [ "$DATASOURCE_ID" == "null" ]; then
echo "❌ No FeatureDB datasource found"
exit 1
fi
echo "✅ Found datasource: $DATASOURCE_ID"
# Step 3: Query total usage (last 7 days)
echo -e "\n[Step 3] Querying total usage..."
END_DATE=$(date -d "yesterday" +%Y-%m-%d)
START_DATE=$(date -d "7 days ago" +%Y-%m-%d)
USAGE=$(aliyun paifeaturestore list-datasource-feature-views \
--region $REGION \
--instance-id $INSTANCE_ID \
--datasource-id $DATASOURCE_ID \
--start-date $START_DATE \
--end-date $END_DATE \
--verbose false \
--show-storage-usage false \
--page-size 1 \
--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pai-feature-store-featuredb-usage-query)
TOTAL_READS=$(echo "$USAGE" | jq '[.TotalUsageStatistics[].ReadCount] | add')
TOTAL_WRITES=$(echo "$USAGE" | jq '[.TotalUsageStatistics[].WriteCount] | add')
echo "✅ Usage query successful"
echo " Total reads: $TOTAL_READS"
echo " Total writes: $TOTAL_WRITES"
# Step 4: Calculate cost
echo -e "\n[Step 4] Calculating cost..."
READ_COST=$(echo "scale=4; $TOTAL_READS / 10000 * 0.0755" | bc)
WRITE_COST=$(echo "scale=4; $TOTAL_WRITES / 10000 * 0.151" | bc)
TOTAL_COST=$(echo "scale=4; $READ_COST + $WRITE_COST" | bc)
echo "✅ Cost calculation complete"
echo " Read cost: ¥$READ_COST"
echo " Write cost: ¥$WRITE_COST"
echo " Total cost: ¥$TOTAL_COST"
echo -e "\n=== All tests passed ✅ ==="---
Performance Metrics
Track these metrics to ensure the skill is performing optimally:
| Metric | Target | Measurement |
|---|---|---|
| API Response Time | < 3 seconds | Time from command invocation to response |
| Data Completeness | 100% | All pages of paginated results retrieved |
| Cost Calculation Accuracy | 100% | Matches manual calculation |
| Error Rate | < 1% | Failed API calls / Total API calls |
---
Conclusion
Following these verification steps ensures:
- ✅ All API calls execute successfully
- ✅ Data is retrieved completely and accurately
- ✅ Cost calculations are correct
- ✅ User receives actionable insights
- ✅ The skill operates within functional scope
Related skills
FAQ
What does it query?
FeatureDB read/write usage from PAI-FeatureStore, with total, project-level, and per-feature-view breakdowns and cost estimation.
What is the date range limit?
Date range queries are supported up to 30 days.