Loading...
Loading...
Query Catalog, database, and table metadata resources in Alibaba Cloud Data Lake Formation (DLF). Provides read-only queries via the DLF OpenAPI Python SDK, supporting listing and viewing Catalogs, databases, tables with their detailed information and Schema definitions. Use cases: "list available Catalogs", "list databases", "view table schema", "search tables", "search tables by name", "fuzzy search", "view DLF metadata", "what databases are in the data lake", "what columns does a table have", "find tables whose name contains xxx". This Skill only contains read-only operations — no create, modify, or delete operations.
npx skill4agent add aliyun/alibabacloud-aiops-skills alibabacloud-dlf-manageCRITICAL: Use only the Python SDK script provided by this Skill. All operations go through the DLF Python SDK () viaalibabacloud-dlfnext20250310. This Skill does not invoke any shell-based command-line client and does not require AI-Mode configuration.scripts/dlf_metadata_query.py
- DO NOT attempt access via any shell-based command-line client — DLF is not exposed through one in this Skill
- DO NOT use curl, wget, or other HTTP clients to call the DLF API directly
- MUST use the
script provided by this Skill, which wraps the DLF Python SDKscripts/dlf_metadata_query.py- All query operations are executed via
python3 scripts/dlf_metadata_query.py <action> [options]
Catalog (Data Catalog)
└── Database
└── Table
├── Schema (column definitions)
├── PartitionKeys (partition keys)
├── PrimaryKeys (primary keys)
└── Options (table properties)pip install -r requirements.txtrequirements.txtalibabacloud-dlfnext20250310==3.0.0Pre-check: Python SDK dependencybashpython3 -c "from alibabacloud_dlfnext20250310.client import Client; print('SDK OK')"If not installed, run.pip install -r requirements.txt
Pre-check: Alibaba Cloud Credentials RequiredUse the default credential chain (CredentialClient) to obtain credentials automatically. Supported sources (in priority order):
- Environment variables (ALIBABA_CLOUD_ACCESS_KEY_ID / ALIBABA_CLOUD_ACCESS_KEY_SECRET)
- Configuration file (~/.alibabacloud/credentials)
- ECS Instance RAM Role
- OIDC Role ARN
Security Rules:
- NEVER read, echo, or print AK/SK values
- NEVER ask the user to input AK/SK directly in the conversation or command line
- NEVER explicitly handle or pass AK/SK in code — rely on the default credential chain
See https://help.aliyun.com/document_detail/378659.html for credential configuration details.
[MUST] Permission Failure Handling: When any command or API call fails due to permission errors at any point during execution, follow this process:
- Read
to get the full list of permissions required by this SKILLreferences/ram-policies.md- Pause and wait until the user confirms that the required permissions have been granted
IMPORTANT: Parameter Confirmation — Before invoking the API, the following user-specific parameters must be confirmed with the user; do not assume them. Region defaults to cn-hangzhou; if the user does not specify one, use the default without asking.
| Parameter | Required | Description | Default |
|---|---|---|---|
| No | Region ID | cn-hangzhou |
| Conditional | Catalog name ( | - |
| Conditional | Catalog ID ( | - |
| Conditional | Database name ( | - |
| Conditional | Table name ( | - |
The script automatically reads AK/SK from environment variables and reports a clear error if they are missing. Region defaults to cn-hangzhou; use the default if the user does not specify one.
scripts/dlf_metadata_query.pyCRITICAL — list vs. list-*-details: pick the lightest action that satisfies the request.
- For listing names / IDs (including fuzzy search): use
/list-databases. These call thelist-tables/ListDatabasesAPI.ListTables- For full attributes / Schema / properties: use
/list-database-details/list-table-details/get-database. These call the heavierget-table/*-detailsAPIs.Get*- Default to the lightweight
action unless the user explicitly asks for full configuration, Schema, or properties. Callinglist-*when only names are needed is incorrect.list-*-details
# ---- Catalog ----
# 1. List all Catalogs (names + minimal info — preferred for listing/searching)
python3 scripts/dlf_metadata_query.py list-catalogs
# 2. Fuzzy-search Catalogs by name (uses ListCatalogs)
python3 scripts/dlf_metadata_query.py list-catalogs --pattern test
# 3. Get Catalog details (by name) — use only when full Catalog config is needed
python3 scripts/dlf_metadata_query.py get-catalog --catalog <catalog_name>
# 4. Get Catalog details (by ID) — use only when full Catalog config is needed
python3 scripts/dlf_metadata_query.py get-catalog-by-id --id <catalog_id>
# ---- Database ----
# 5. List databases (NAMES only — DEFAULT for "list / show / which databases", calls ListDatabases)
python3 scripts/dlf_metadata_query.py list-databases --catalog-id <catalog_id>
# 6. List database details (full attributes, calls ListDatabaseDetails) — use ONLY when the user asks for properties / configs / location / owner
python3 scripts/dlf_metadata_query.py list-database-details --catalog-id <catalog_id>
# 7. Get a single database's details (calls GetDatabase) — use when the user asks for ONE specific database's full info
python3 scripts/dlf_metadata_query.py get-database --catalog-id <catalog_id> --database <db_name>
# ---- Table ----
# 8. List tables (NAMES only — DEFAULT for "list / show / which tables", calls ListTables)
python3 scripts/dlf_metadata_query.py list-tables --catalog-id <catalog_id> --database <db_name>
# 9. Fuzzy-search tables by name (DEFAULT for "search / find tables matching ...", calls ListTables)
python3 scripts/dlf_metadata_query.py list-tables --catalog-id <catalog_id> --database <db_name> --pattern user%
# 10. List table details with Schema (calls ListTableDetails) — use ONLY when the user explicitly asks for Schema / columns / properties of all tables
python3 scripts/dlf_metadata_query.py list-table-details --catalog-id <catalog_id> --database <db_name>
# 11. Get a single table's details with Schema (calls GetTable) — use when the user asks for ONE specific table's Schema
python3 scripts/dlf_metadata_query.py get-table --catalog-id <catalog_id> --database <db_name> --table <table_name>--region cn-shanghai1. list-catalogs → get catalog_name and catalog_id (names only)
2. list-databases → use catalog_id to view available database names
3. list-tables → use catalog_id + database to view available table names
4. get-table → use catalog_id + database + table to view ONE table's SchemaOnly step 4 () is a "details" call, because Schema is what the user actually asked for. Steps 1–3 stay on the lightweightget-tableactions.list-*
--pattern%list-*# Search Catalogs whose name contains "test"
python3 scripts/dlf_metadata_query.py list-catalogs --pattern %test%
# Search databases whose name starts with "prod_"
python3 scripts/dlf_metadata_query.py list-databases --catalog-id <catalog_id> --pattern prod_%
# Search tables whose name starts with "user" (DEFAULT — calls ListTables)
python3 scripts/dlf_metadata_query.py list-tables --catalog-id <catalog_id> --database <db_name> --pattern user%Anti-pattern: do not useto search by name. That callslist-table-details --pattern ...and is heavier than required. Reach forListTableDetailsonly when the user has explicitly asked for the Schema / columns of every matching table.list-table-details
{"count": N, "items": [...]}{"error": "...", "hint": "..."}list-catalogspython3 scripts/dlf_metadata_query.py list-catalogs --region cn-hangzhoulist-*list-*-detailsget-*list-catalogslist-databaseslist-tablesListCatalogsListDatabasesListTableslist-*-detailsget-*--patternlist-tableslist-table-details--max-results--page-tokencatalog_id| Reference | Description |
|---|---|
| references/related-apis.md | Full API list and parameter descriptions |
| references/ram-policies.md | RAM permission policy |
| references/acceptance-criteria.md | Acceptance criteria |
| references/verification-method.md | Verification method |
| DLF API overview | Official API documentation |
| DLF product documentation | Product documentation |
| Python SDK PyPI | SDK version info |