alibabacloud-dms-data-agent-platform-setup について
Alibaba Cloud OpenAPIを通じてDifyインスタンスを作成するAgent Skillです。Difyを導入するユーザー向けに、リソース一式を作成する簡易モードと、各コンポーネントの新規作成・再利用を選べる詳細モードを備え、事前のドライランにも対応します。
主な機能
- 01簡易モードと詳細モード
- 02ワークスペースやデータ要素の新規作成・再利用
- 03作成前のDMS利用可否チェック
- 04デプロイ前のドライラン
- 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 の確認
[必須]作業を進める前に、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
[必須]各スキルセッションの開始時に session-id を生成してください。すべての CLI コマンドと Python SDK 呼び出しで、一貫して同じ値を使用してください。
Session-ID の生成ルール
- セッションごとに 1 回だけ生成し、ワークフロー全体で再利用してください
- 形式:32 文字の小文字の 16 進数文字列(例:
openssl rand -hex 16) - 同じセッション内の CLI/SDK/Terraform で同じ値を使用してください
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 の認証情報の設定
[必須]2 種類の認証情報(Aliyun CLI の認証情報と Python SDK の認証情報)の両方を設定してください。どちらも省略できません。 AK/SK の値を読み取ったり、エコーしたり、出力したりしないでください。
このスキルでは、異なる認証方式を使用して 2 種類の操作を実行します。
- インスタンス一覧の照会(
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 サービスの利用可否を確認する
[必須]
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 サービスを有効にするようユーザーに促してください。
シンプルモード
すべてのコンポーネント(Workspace、データベース、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 を使用するか、新しく作成するかをユーザーに尋ねます。
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:ドライランと最終的なプロビジョニング
DryRun=trueを指定して完全な JSON を作成し、スクリプトを実行します- エラーがないことを確認したら、
DryRunをfalseに設定して再度実行し、プロビジョニングします
注意事項
- Python スクリプトは Alibaba Cloud のデフォルト認証情報チェーンを使用します。スクリプトを実行する前に、公式ガイドに従って認証情報を設定してください
WorkspaceId(既存の Workspace を使用)とWorkspaceName(新しい Workspace を作成)は相互に排他的ですDbResourceId、KvStoreResourceId、VectordbResourceIdはすべて整数型です- 最終的なプロビジョニングの前に、必ず
DryRun=trueでドライランを実行してください - このワークフローでコマンドを実行する前に、必ず
SKILL_SESSION_IDをエクスポートしてください