DataWorks 基础设施管理
统一管理阿里云 DataWorks 工作空间中的数据源、计算资源和资源组,支持创建和查询操作。
架构
DataWorks
├── Workspaces ─── Query and search workspaces
│ ├── Data Sources ─── 50 types: MySQL, Hologres, MaxCompute, ...
│ └── Compute Resources ─── Hologres, MaxCompute, Flink, Spark
└── Resource Groups ─── Serverless resource group management (cross-workspace)
Dependencies:
Workspace ◀── Data Sources, Compute Resources (must belong to a workspace)
Workspace ◀── Resource Groups (associated via binding; one resource group can bind to multiple workspaces)
Connectivity Test ──depends on──▶ Resource Group (must be bound to the workspace of the data source)
Standard Mode ──requires──▶ Dev (Development) + Prod (Production) dual data sources and compute resources
---
全局规则
前提条件
- 阿里云 CLI >= 3.3.1:
aliyun version(安装指南:[references/cli-installation-guide.md](references/cli-installation-guide.md)) - 首次使用:
aliyun configure set --auto-plugin-install true - jq(资源组操作必需):
which jq - 凭据状态:
aliyun configure list,确认存在有效凭据 - DataWorks 版本:必须为基础版或更高版本
安全规则:不得读取/打印/回显 AK/SK 值,不得让用户直接输入 AK/SK,只能使用 aliyun configure list 检查凭据状态。
命令格式
- User-Agent(强制要求):所有
aliyunCLI 命令必须包含--user-agent AlibabaCloud-Agent-Skills参数,以标识来源。 - 单行命令:执行 Bash 命令时,必须将其构造为单行字符串;不要使用
\换行。 - jq 分步执行:先执行
aliyun命令获取 JSON,再使用jq格式化(以避免多行安全提示)。 - 端点强制要求:指定
--region参数时,必须同时添加--endpoint dataworks.<REGION_ID>.aliyuncs.com。未指定--region时无需添加。
参数确认
执行任何命令前,所有可由用户自定义的参数都必须由用户确认。不得自行假设或使用默认值。
例外:如果用户已在对话中明确指定参数值,则直接使用,无需再次确认。
资源组相关参数(必须由用户选择):VPC、VSwitch、资源组 ID(用于绑定/连通性测试)——涉及网络和计费,不得自动选择;必须显示列表,让用户明确选择。即使只有一个选项,也必须让用户确认。
⚠️ 写 API 执行门禁——每次写操作前都必须检查
强制要求:调用任何写 API(创建 / 更新 / 删除 / 绑定 / 解绑 / 关联 / 解除关联 / 测试)前,必须按顺序执行以下检查:
1. 扫描整个 SKILL.md,查找其中提及目标 API 或模块的安全限制或操作禁用通知。
2. 如果存在限制:立即阻止该操作。不得调用 API。向用户说明:
- 被阻止的操作及其原因
- 建议的替代方案(例如,使用 DataWorks 控制台或联系管理员)
3. 如果不存在限制:正常进行参数确认和执行。
此项检查并非可选。它适用于每一次写操作,无一例外。严禁跳过此步骤。
快速参考——此 skill 中被阻止的 APIs:
| 模块 | 被阻止的 APIs | 原因 |
|--------|-------------|--------|
| 数据源(模块 1) |UpdateDataSource,DeleteDataSource| 防止意外数据丢失、凭据泄露以及正在运行的任务中断 |
| 计算资源(模块 2) |UpdateComputeResource,DeleteComputeResource| 防止正在运行的开发和调度任务中断 |
允许的写 APIs:CreateDataSource,CreateComputeResource,CreateResourceGroup,AssociateProjectToResourceGroup,DissociateProjectFromResourceGroup,TestDataSourceConnectivity
RAM 权限
所有操作都需要 dataworks:<APIAction> 权限。创建资源组还需要 AliyunBSSOrderAccess、vpc:DescribeVpcs 和 vpc:DescribeVSwitches。
完整权限矩阵:[references/ram-policies.md](references/ram-policies.md)
---
快速开始:新工作空间基础设施初始化
当用户不确定具体操作或需求模糊时,引导用户完成以下流程:
- 环境检查——按照前提条件检查 CLI 和凭据
- 确认工作空间——使用
ListProjects定位工作空间,使用GetProject确认模式(简单/标准) - 创建计算资源——引导用户选择引擎类型;系统将自动创建对应的数据源。标准模式要求开发环境和生产环境成对配置。只有纯存储型数据源(MySQL、Kafka 等)需要单独创建数据源
- 创建/绑定资源组——查询现有资源组 → 让用户选择 → 绑定。没有可用资源组时,引导用户创建
- 测试连通性——使用已绑定的资源组进行测试;全部通过后,告知用户“基础设施配置完成”
每个步骤完成后,主动建议下一步操作。
---
后续步骤指导
每次写操作完成并验证后,主动建议后续操作:
| 已完成的操作 | 建议的后续步骤 | |-----------|-----------| | 创建计算资源 | 标准模式:"是否创建对应的 Dev 资源?";"是否测试连通性?" | | 单独创建数据源 | "是否测试连通性?";标准模式:"是否创建 Dev/Prod 环境数据源?" | | 创建资源组 | "是否绑定到工作空间?" | | 绑定资源组 | "是否测试数据源连通性?" | | 连通性测试通过 | "基础设施已就绪。" | | 连通性测试失败 | 分析错误原因,指导修复 | | 解绑资源组 | "是否绑定到其他工作空间?" |
---
触发规则
触发场景:数据源创建/查询、计算资源创建/查询、资源组管理、基础设施初始化、口语化别名(DW 数据库连接失败、配置 holo/mc 资源、创建 rg)
不触发场景:数据开发任务、调度配置、MaxCompute 表管理、数据集成任务、ECS/RDS/OSS、工作空间成员管理、数据质量/血缘/预览。独立的工作空间查询由 alibabacloud-dataworks-workspace-manage skill 处理。
交互流程
所有操作均遵循以下流程:识别模块 → 环境检查 → 收集参数 → 执行命令 → 验证结果 → 引导后续步骤
常用别名:DW=DataWorks,holo=Hologres,mc/MC/odps=MaxCompute,pg=PostgreSQL,rg=Resource Group,ds=Data Source,RDS=InstanceMode MySQL/PG/SQLServer,ADB=AnalyticDB
命名建议:数据源 {type}_{business}_{purpose},计算资源 {type}_{business},资源组 dw_{purpose}_rg_{env}
---
模块 0:工作空间查询
如果 alibabacloud-dataworks-workspace-manage skill 可用,工作空间查询应优先使用它。以下内容仅作为备用方案。
aliyun dataworks-public ListProjects --user-agent AlibabaCloud-Agent-Skills --Status Available --PageSize 100
按名称搜索时,先获取完整列表,再使用 jq 按 Name/DisplayName 筛选 .PagingInfo.Projects[]。
---
模块 1:数据源管理
支持 50 种数据源类型。详情请参见 [references/data-sources/README.md](references/data-sources/README.md)。
何时需要单独创建数据源? 创建计算资源(模块 2)时,系统会自动创建对应的数据源。只有纯存储型数据库(MySQL、PostgreSQL、Kafka、MongoDB 等)才需要单独创建。
注意:以下类型目前不支持 OpenAPI:hdfs
连接模式:UrlMode(自建数据库,需要 host/port)或 InstanceMode(阿里云托管实例,需要 instanceId)。如不确定,应主动询问用户。优先选择 InstanceMode。
实例查询 APIs:[references/data-sources/instance-apis.md](references/data-sources/instance-apis.md)
⚠️ 安全限制——强制预检查请参见写 API 执行门禁(全局规则)
重要:DataWorks 服务支持DeleteDataSource和UpdateDataSourceAPIs,但出于安全原因,此 skill 已禁用修改或删除数据源的功能。在尝试任何写操作之前,agent 必须检查“写 API 执行门禁”部分。
如需修改或删除数据源,请直接使用 DataWorks 控制台,或联系管理员。
连接模式快速参考
ConnectionPropertiesMode 的选择决定必填字段。当两种模式均可用时,优先选择 InstanceMode。
| 模式 | 类型 | 数量 | |------|-------|-------| | 两种模式均支持 | mysql, postgresql, sqlserver, polardb, polardbo, polardb-x-2-0, apsaradb_for_oceanbase, drds, starrocks, analyticdb_for_mysql, analyticdb_for_postgresql, milvus, mongodb, redis, elasticsearch, kafka | 16 | | 仅支持 InstanceMode | hologres, dlf, opensearch | 3 | | 仅支持 UrlMode | oracle, mariadb, dm, db2, tidb, vertica, gbase8a, kingbasees, saphana, snowflake, maxcompute, hive, clickhouse, doris, selectdb, redshift, hbase, lindorm, oss, s3, ftp, ssh, tablestore, memcache, graph_database, datahub, loghub, restapi, salesforce, httpfile, bigquery | 31 |
hdfs——不支持通过 OpenAPI 使用。
完整信息:[references/data-sources/README.md](references/data-sources/README.md)
工作空间模式
环境说明:Prod(生产)用于生产数据处理;Dev(开发)用于开发和调试,与生产环境物理隔离。
aliyun dataworks-public GetProject --user-agent AlibabaCloud-Agent-Skills --Id <PROJECT_ID>——检查 DevEnvironmentEnabled:
false→ 简单模式(1 个数据源,envType=Prod)true→ 标准模式(2 个数据源,Dev + Prod,物理隔离)
完整模式比较:[references/data-sources/README.md](references/data-sources/README.md)
任务 1.1:创建数据源(CreateDataSource)
aliyun dataworks-public CreateDataSource --user-agent AlibabaCloud-Agent-Skills [--region <REGION_ID> --endpoint dataworks.<REGION_ID>.aliyuncs.com] --ProjectId <PROJECT_ID> --Name <NAME> --Type <TYPE> --ConnectionPropertiesMode <UrlMode|InstanceMode> --ConnectionProperties '<JSON>' --Description "<DESC>"
ConnectionProperties 的常见结构:
- UrlMode:
{"envType":"Prod","address":[{"host":"<IP>","port":<PORT>}],"database":"<DB>","username":"<USER>","password":"<PWD>"} - InstanceMode:
{"envType":"Prod","instanceId":"<ID>","regionId":"<REGION>","database":"<DB>","username":"<USER>","password":"<PWD>"}
特殊类型的结构(Oracle、MaxCompute、HBase 等):请参见 [references/data-sources/](references/data-sources/) 中各类型的文档
跨账号数据源配置:[references/cross-account-datasources.md](references/cross-account-datasources.md)
任务 1.2:获取数据源(GetDataSource)
aliyun dataworks-public GetDataSource --user-agent AlibabaCloud-Agent-Skills --Id <DATASOURCE_ID> [--region <REGION_ID> --endpoint dataworks.<REGION_ID>.aliyuncs.com]
任务 1.3:列出数据源(ListDataSources)
aliyun dataworks-public ListDataSources --user-agent AlibabaCloud-Agent-Skills --ProjectId <PROJECT_ID> [--Types '["mysql"]'] [--EnvType <Dev|Prod>] [--PageNumber 1] [--PageSize 20]
返回嵌套结构 DataSources[].DataSource[];Name/Type 位于外层,Id/Description 位于内层。
任务 1.4:测试连通性(TestDataSourceConnectivity)
流程:查询资源组列表 → 让用户选择资源组 → 执行测试。
# Step 1: Query project resource groups
aliyun dataworks-public ListResourceGroups --user-agent AlibabaCloud-Agent-Skills --ProjectId <PROJECT_ID>
# Step 2: Execute test after user selects a resource group
aliyun dataworks-public TestDataSourceConnectivity --user-agent AlibabaCloud-Agent-Skills --DataSourceId <ID> --ProjectId <PROJECT_ID> --ResourceGroupId "<RG_ID>"
如果出现错误"resourceGroupId is not in the project",需先绑定资源组(向用户确认后,再执行AssociateProjectToResourceGroup)。
---
模块 2:计算资源管理
支持 Hologres、MaxCompute、Flink、Spark 等类型。创建时,系统将自动创建对应的数据源。
⚠️ 安全限制——强制预检查请参见写入 API 执行门禁(全局规则)
重要:出于安全原因,此 skill 不支持对计算资源进行修改或删除。在尝试任何写操作之前,agent 必须检查写入 API 执行门禁部分。禁用这些操作是为了防止:
- 意外数据丢失或服务中断
- 干扰正在运行的数据开发和调度任务
- 对生产环境计算资源配置的非预期更改
如果需要修改或删除计算资源,请直接使用 DataWorks 控制台或联系管理员。
authType 规则
- Dev 环境:
authType固定为Executor - Prod 环境:可选值包括
PrimaryAccount(推荐)、TaskOwner、SubAccount、RamRole。除非用户有特殊要求,否则默认推荐PrimaryAccount
authType 详情与指南:[references/compute-resources/README.md](references/compute-resources/README.md)
特定类型说明
- Hologres:仅支持 InstanceMode,需要
instanceId、securityProtocol - MaxCompute:仅支持 UrlMode,需要
project、endpointMode
完整的 ConnectionProperties 示例:[references/compute-resources/README.md](references/compute-resources/README.md)
任务 2.1:创建计算资源(CreateComputeResource)
aliyun dataworks-public CreateComputeResource --user-agent AlibabaCloud-Agent-Skills [--region <REGION_ID> --endpoint dataworks.<REGION_ID>.aliyuncs.com] --ProjectId <PROJECT_ID> --Name <NAME> --Type <TYPE> --ConnectionPropertiesMode <InstanceMode|UrlMode> --ConnectionProperties '<JSON>' [--Description "<DESC>"]
创建后,使用 ListDataSources 验证对应的数据源是否已自动生成。
任务 2.2:获取计算资源(GetComputeResource)
aliyun dataworks-public GetComputeResource --user-agent AlibabaCloud-Agent-Skills --Id <ID> --ProjectId <PROJECT_ID>
任务 2.3:列出计算资源(ListComputeResources)
aliyun dataworks-public ListComputeResources --user-agent AlibabaCloud-Agent-Skills --ProjectId <PROJECT_ID> [--Name <FILTER>] [--EnvType <Dev|Prod>] [--PageSize 20] [--SortBy CreateTime] [--Order Desc]
返回嵌套结构 ComputeResources[].ComputeResource[];Name/Type 位于外层,Id 位于内层。
---
模块 3:资源组管理
管理 Serverless 资源组的全生命周期。
任务 3.1:创建资源组(CreateResourceGroup)
需要 AliyunBSSOrderAccess 权限。
交互流程(每一步均由用户选择,不得自动选择):
- 查询并选择 VPC:
aliyun vpc DescribeVpcs --user-agent AlibabaCloud-Agent-Skills --RegionId "<REGION_ID>" --PageSize 50
如果列表为空,引导用户创建 VPC;不得自动创建。
- 查询并选择 VSwitch:
aliyun vpc DescribeVSwitches --user-agent AlibabaCloud-Agent-Skills --RegionId "<REGION_ID>" --VpcId "<VPC_ID>" --PageSize 50
- 确认名称和规格 → 执行创建:
aliyun dataworks-public CreateResourceGroup --user-agent AlibabaCloud-Agent-Skills [--region <REGION_ID> --endpoint dataworks.<REGION_ID>.aliyuncs.com] --Name "<NAME>" --PaymentType PostPaid --VpcId "<VPC_ID>" --VswitchId "<VSWITCH_ID>" --ClientToken "$(uuidgen 2>/dev/null || echo "token-$(date +%s)")" --Remark "Created by Agent"
创建后,轮询 GetResourceGroup,直到状态变为 Normal(每隔 10 秒一次,最长 10 分钟)。
任务 3.2:获取资源组(GetResourceGroup)
aliyun dataworks-public GetResourceGroup --user-agent AlibabaCloud-Agent-Skills --Id "<ID>"
任务 3.3:列出资源组(ListResourceGroups)
aliyun dataworks-public ListResourceGroups --user-agent AlibabaCloud-Agent-Skills [--ProjectId <PROJECT_ID>] [--Statuses '["Normal"]'] --PageSize 100
任务 3.4:绑定资源组(AssociateProjectToResourceGroup)
流程:查询可用资源组 → 显示列表供用户选择 → 用户确认后绑定。
aliyun dataworks-public AssociateProjectToResourceGroup --user-agent AlibabaCloud-Agent-Skills --ResourceGroupId "<RG_ID>" --ProjectId "<PROJECT_ID>"
任务 3.5:查询绑定关系
aliyun dataworks-public ListResourceGroupAssociateProjects --user-agent AlibabaCloud-Agent-Skills --ResourceGroupId "<RG_ID>"
任务 3.6:解绑资源组(DissociateProjectFromResourceGroup)
aliyun dataworks-public DissociateProjectFromResourceGroup --user-agent AlibabaCloud-Agent-Skills --ResourceGroupId "<RG_ID>" --ProjectId "<PROJECT_ID>"
---
成功验证
所有写操作完成后,使用对应的 Get/List 命令验证结果。
常见错误
| 错误码 | 解决方案 | |--------|----------| | Forbidden.Access / PermissionDenied | 检查 RAM 权限,参见 [references/ram-policies.md](references/ram-policies.md) | | InvalidParameter | 检查 ConnectionProperties JSON 和必需参数 | | EntityNotExists | 确认 ID 和地域是否正确 | | QuotaExceeded | 删除未使用的资源或申请提升配额 | | Duplicate* | 使用其他名称 |
地域
常用地域:cn-hangzhou、cn-shanghai、cn-beijing、cn-shenzhen。端点:dataworks.<region-id>.aliyuncs.com
完整列表:[references/related-apis.md](references/related-apis.md)
最佳实践
- 操作前查询——执行创建操作前确认当前状态
- 按环境管理——分别管理 Dev 和 Prod 资源
- 验证操作——每次写操作后使用 Get/List 进行验证
- 主动引导——每个步骤完成后建议下一步操作
- 保护数据源和计算资源——严禁通过此 skill 修改或删除数据源或计算资源;此类操作请使用 DataWorks 控制台
参考链接
| 参考资料 | 说明 | |-----------|-------------| | [references/data-sources/README.md](references/data-sources/README.md) | 数据源类型列表及 ConnectionProperties 示例 | | [references/data-sources/](references/data-sources/) | 各数据源类型的详细配置文档(50 个文件) | | [references/cross-account-datasources.md](references/cross-account-datasources.md) | 跨账号数据源配置指南 | | [references/compute-resources/README.md](references/compute-resources/README.md) | 计算资源 ConnectionProperties 示例 | | [references/cli-installation-guide.md](references/cli-installation-guide.md) | 阿里云 CLI 安装指南 | | [references/ram-policies.md](references/ram-policies.md) | RAM 权限配置和策略示例 | | [references/related-apis.md](references/related-apis.md) | API 参数详情和地域端点 |