关于 alibabacloud-dms-data-agent-platform-setup
此 Agent Skill 通过 Alibaba Cloud OpenAPI 自动创建 Dify 实例,面向需要部署 Dify 的 Alibaba Cloud 用户。提供从头创建资源的简单模式,以及可逐项选择新建或复用组件的高级模式,并支持先试运行再部署。
主要功能
- 01简单模式与高级模式
- 02新建或复用工作区及数据组件
- 03部署前检查 DMS 服务可用性
- 04支持 DryRun 预演
- 05通过脚本调用 Alibaba Cloud OpenAPI
适用场景
- 01从零配置并创建 Dify 实例
- 02将现有工作区或数据组件用于 Dify
- 03部署前检查目标地域的 DMS 服务
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aliyun/ alibabacloud-aiops-skills --skill alibabacloud-dms-data-agent-platform-setup安装后在 Claude Code 中输入/alibabacloud-dms-data-agent-platform-setup确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/ram-policies.mdscripts/detect_dify_instance.pydify_skill_utils.pyfill_in_param_body.pyopenAPI_call.pyrequirements.txt详细介绍
创建 Dify 实例
通过 Alibaba Cloud OpenAPI 自动配置 Dify 实例。 支持简单模式(从头创建所有资源)和高级模式(精细控制各个组件)。
前提条件
1. 检查 Aliyun CLI
[REQUIRED] 请在继续操作前确认 Aliyun CLI 版本不低于 3.3.1。
aliyun version
如果找不到命令或版本低于 3.3.1,请安装或升级:
macOS(推荐使用 Homebrew)
brew install aliyun-cli
# Upgrade if already installed
brew upgrade aliyun-cli
安装后,启用自动安装插件:
aliyun configure set --auto-plugin-install true
2. 可观测性 — 会话 ID 和 User-Agent
[REQUIRED] 每次技能会话开始时都要生成一个 session-id。所有 CLI 命令和 Python SDK 调用都要使用同一个 session-id。
Session-ID 生成规则
- 每个会话只生成一次,在整个工作流中重复使用
- 格式:32 个字符的小写十六进制字符串(例如,
openssl rand -hex 16) - 同一会话中的 CLI、SDK 和 Terraform 必须使用一致的 session-id
export SKILL_SESSION_ID=$(openssl rand -hex 16)
User-Agent 模板
AlibabaCloud-Agent-Skills/alibabacloud-dms-data-agent-platform-setup/{session-id}
- Python 脚本(
detect_dify_instance.py、openAPI_call.py):自动从环境中读取SKILL_SESSION_ID - Aliyun CLI 命令:通过每条命令的
--user-agent标志注入:
aliyun dms-enterprise <action> \
--endpoint dms-enterprise.aliyuncs.com \
--user-agent "AlibabaCloud-Agent-Skills/alibabacloud-dms-data-agent-platform-setup/${SKILL_SESSION_ID}"
请勿使用
aliyun configure ai-mode set-user-agent(已弃用)。始终通过每条命令的--user-agent注入。
3. 配置 Alibaba Cloud 凭证
[REQUIRED] 必须同时配置两组凭证——Aliyun CLI 凭证和 Python SDK 凭证。两者缺一不可。 切勿读取、回显或打印 AK/SK 值。
此技能会执行两种操作,各自使用不同的凭证方式:
- 查询实例列表(
aliyun dms-enterprise list-instances):使用 Aliyun CLI 凭证 - 配置 Dify 实例(
openAPI_call.py):使用 Alibaba Cloud 默认凭证链
3a. 配置 Aliyun CLI 凭证
aliyun configure list
确认输出中存在有效配置文件(AK、STS 或 OAuth)。
如果不存在有效配置文件,请停止操作并提示用户:
- 从 Alibaba Cloud 控制台 获取 AccessKey
- 在本会话之外配置凭证,以免泄露机密:
aliyun configure set \ --mode AK \ --access-key-id <your-access-key-id> \ --access-key-secret <your-access-key-secret> \ --region cn-hangzhou - 重新运行
aliyun configure list,确认配置文件已激活
3b. 配置 Python 脚本凭证
openAPI_call.py 使用 Alibaba Cloud 默认凭证链——无需手动设置环境变量。SDK 会按以下顺序自动解析凭证:环境变量、凭证文件、实例 RAM 角色等。
请按照官方指南配置凭证: Alibaba Cloud Python SDK v2 — 管理访问凭证
切勿在代码中硬编码 AK/SK 值或将其作为命令行参数传递。
4. Python 环境
建议使用 uv 创建包含固定依赖项的隔离虚拟环境:
uv venv .venv
uv pip install --python .venv/bin/python -r scripts/requirements.txt
requirements.txt 位于 ./scripts/ 中。
脚本位置
./scripts/detect_dify_instance.py— 检查目标区域是否提供 DMS Dify 服务./scripts/openAPI_call.py— 配置 Dify 实例
请在包含此
SKILL.md文件的目录中运行命令。
预检查:验证 DMS 服务是否可用
[REQUIRED] 运行
openAPI_call.py之前,先运行detect_dify_instance.py,验证目标区域是否可以访问 DMS 服务。
.venv/bin/python ./scripts/detect_dify_instance.py <region-id>
示例:
.venv/bin/python ./scripts/detect_dify_instance.py cn-shanghai
- 如果 API 返回空列表(
[]),这是正常情况——表示尚无 Dify 实例,但服务可用。 - 如果 API 返回错误,请提示用户先在 Alibaba Cloud 控制台 中启用 DMS 服务,再继续操作。
简单模式
所有组件(工作空间、数据库、KV 存储、向量数据库)均为新建。
向用户收集的参数
| 参数 | 描述 |
|---|---|
VpcId | VPC ID |
VSwitchId | VSwitch ID |
BackupVSwitchId | 备用 VSwitch ID |
SecurityGroupId | 安全组 ID |
ZoneId | 可用区 ID |
DataRegion | 数据区域 |
WorkspaceName | 新 Workspace 的名称 |
| Account | 数据库账号(用于 DbInstanceAccount、KvStoreAccount、VectordbAccount;默认值:dify_user) |
| Password | 数据库密码(用于 DbInstancePassword、KvStorePassword、VectordbPassword) |
DryRun | 建议先设为 true 进行试运行,然后设为 false 以创建资源 |
执行命令
.venv/bin/python ./scripts/openAPI_call.py '{
"VpcId": "<VpcId>",
"VSwitchId": "<VSwitchId>",
"BackupVSwitchId": "<BackupVSwitchId>",
"SecurityGroupId": "<SecurityGroupId>",
"ZoneId": "<ZoneId>",
"DataRegion": "<DataRegion>",
"ResourceQuota": "12CU",
"WorkspaceOption": "CreateNewInstance",
"WorkspaceName": "<WorkspaceName>",
"DatabaseOption": "CreateNewInstance",
"DbInstanceAccount": "<account>",
"DbInstancePassword": "<password>",
"KvStoreOption": "CreateNewInstance",
"KvStoreAccount": "<account>",
"KvStorePassword": "<password>",
"VectordbOption": "CreateNewInstance",
"VectordbAccount": "<account>",
"VectordbPassword": "<password>",
"StorageType": "cloud_essd",
"NatGatewayOption": "NoNeed",
"MajorVersion": "1.13.x",
"Edition": "OpenCommunity",
"DryRun": true
}'
高级模式
允许对所有参数进行精细控制,包括使用现有的 Workspace、数据库、KV 存储和向量数据库实例。
步骤 1:收集基础网络参数
向用户询问以下信息:
| 参数 | 描述 |
|---|---|
VpcId | VPC ID |
VSwitchId | VSwitch ID |
BackupVSwitchId | 备用 VSwitch ID |
SecurityGroupId | 安全组 ID |
ZoneId | 可用区 ID |
DataRegion | 数据区域 |
步骤 2:确认 WorkspaceOption
询问用户:使用现有 Workspace,还是创建新的 Workspace?
UseExistingInstance:用户必须提供WorkspaceId(字符串)CreateNewInstance:用户必须提供WorkspaceName- 注意:
WorkspaceId和WorkspaceName不能同时提供。如果两者都已提供,请提示用户更正输入。
步骤 3:分别确认各子服务选项
分别询问用户对以下每项的选择:
DatabaseOption
CreateNewInstance:无需额外参数;使用默认配置UseExistingInstance:- 询问用户是否知道
DbResourceId(整数) - 如果不知道,运行以下命令,并从
InstanceList.Instance中查找InstanceId:aliyun dms-enterprise list-instances \ --endpoint dms-enterprise.aliyuncs.com \ --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-dms-data-agent-platform-setup/${SKILL_SESSION_ID}"
- 询问用户是否知道
KvStoreOption
CreateNewInstance:无需额外参数UseExistingInstance:- 询问用户是否知道
KvStoreResourceId(整数) - 如果不知道,运行:
aliyun dms-enterprise list-instances \ --endpoint dms-enterprise.aliyuncs.com \ --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-dms-data-agent-platform-setup/${SKILL_SESSION_ID}"
- 询问用户是否知道
VectordbOption
CreateNewInstance:无需额外参数UseExistingInstance:- 询问用户是否知道
VectordbResourceId(整数) - 如果不知道,运行:
aliyun dms-enterprise list-instances \ --endpoint dms-enterprise.aliyuncs.com \ --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-dms-data-agent-platform-setup/${SKILL_SESSION_ID}"
- 询问用户是否知道
步骤 4:收集账号和密码
向用户询问账号名称和密码,并填写:
DbInstanceAccount/DbInstancePasswordKvStoreAccount/KvStorePasswordVectordbAccount/VectordbPassword
步骤 5:确认其他高级参数
以下参数有默认值。询问用户是否需要更改:
| 参数 | 默认值 | 允许的值 |
|---|---|---|
ResourceQuota | 12CU | 自定义字符串 |
Replicas | 1 | 整数 |
NatGatewayOption | NoNeed | NoNeed、Enable |
PayType | PrePaid | PrePaid、PostPaid |
PayPeriodType | Month | Month、Year |
PayPeriod | 1 | 整数 |
MajorVersion | 1.13.x | 自定义字符串 |
Edition | OpenCommunity | OpenCommunity、Community、Enterprise |
EnableExtraEndpoint | true | true、false |
OnlyIntranet | false | true、false |
DryRun | true | 建议先设为 true 进行试运行,然后设为 false 以创建资源 |
第 6 步:试运行和最终配置
- 构造完整的 JSON,将
DryRun=true,然后运行脚本 - 确认没有错误后,将
DryRun设为false,然后再次运行以完成配置
注意事项
- Python 脚本使用 Alibaba Cloud 默认凭证链;运行脚本前,请按照官方指南配置凭证
WorkspaceId(使用现有工作空间)和WorkspaceName(创建新工作空间)不能同时使用DbResourceId、KvStoreResourceId和VectordbResourceId均为整数类型- 最终配置前,务必先使用
DryRun=true进行试运行 - 在运行此工作流中的任何命令之前,确保已导出
SKILL_SESSION_ID