mcpField
A
alibabacloud-dms-data-agent-platform-setup

alibabacloud-dms-data-agent-platform-setup

github.com/aliyun云与 DevOps28172 次安装1 天前更新
代码仓库

关于 alibabacloud-dms-data-agent-platform-setup

此 Agent Skill 通过 Alibaba Cloud OpenAPI 自动创建 Dify 实例,面向需要部署 Dify 的 Alibaba Cloud 用户。提供从头创建资源的简单模式,以及可逐项选择新建或复用组件的高级模式,并支持先试运行再部署。

主要功能

  1. 01简单模式与高级模式
  2. 02新建或复用工作区及数据组件
  3. 03部署前检查 DMS 服务可用性
  4. 04支持 DryRun 预演
  5. 05通过脚本调用 Alibaba Cloud OpenAPI

适用场景

  1. 01从零配置并创建 Dify 实例
  2. 02将现有工作区或数据组件用于 Dify
  3. 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.md
scripts/
detect_dify_instance.py
dify_skill_utils.py
fill_in_param_body.py
openAPI_call.py
requirements.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)。

如果不存在有效配置文件,请停止操作并提示用户:

  1. 从 Alibaba Cloud 控制台 获取 AccessKey
  2. 在本会话之外配置凭证,以免泄露机密:
    aliyun configure set \
      --mode AK \
      --access-key-id <your-access-key-id> \
      --access-key-secret <your-access-key-secret> \
      --region cn-hangzhou
    
  3. 重新运行 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 存储、向量数据库)均为新建。

向用户收集的参数
参数描述
VpcIdVPC ID
VSwitchIdVSwitch 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:收集基础网络参数

向用户询问以下信息:

参数描述
VpcIdVPC ID
VSwitchIdVSwitch 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 / DbInstancePassword
  • KvStoreAccount / KvStorePassword
  • VectordbAccount / VectordbPassword
步骤 5:确认其他高级参数

以下参数有默认值。询问用户是否需要更改:

参数默认值允许的值
ResourceQuota12CU自定义字符串
Replicas1整数
NatGatewayOptionNoNeedNoNeed、Enable
PayTypePrePaidPrePaid、PostPaid
PayPeriodTypeMonthMonth、Year
PayPeriod1整数
MajorVersion1.13.x自定义字符串
EditionOpenCommunityOpenCommunity、Community、Enterprise
EnableExtraEndpointtruetrue、false
OnlyIntranetfalsetrue、false
DryRuntrue建议先设为 true 进行试运行,然后设为 false 以创建资源
第 6 步:试运行和最终配置
  1. 构造完整的 JSON,将 DryRun=true,然后运行脚本
  2. 确认没有错误后,将 DryRun 设为 false,然后再次运行以完成配置

注意事项

  • Python 脚本使用 Alibaba Cloud 默认凭证链;运行脚本前,请按照官方指南配置凭证
  • WorkspaceId(使用现有工作空间)和 WorkspaceName(创建新工作空间)不能同时使用
  • DbResourceId、KvStoreResourceId 和 VectordbResourceId 均为整数类型
  • 最终配置前,务必先使用 DryRun=true 进行试运行
  • 在运行此工作流中的任何命令之前,确保已导出 SKILL_SESSION_ID

评论

支持 Markdown