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 について

Alibaba Cloud OpenAPIを通じてDifyインスタンスを作成するAgent Skillです。Difyを導入するユーザー向けに、リソース一式を作成する簡易モードと、各コンポーネントの新規作成・再利用を選べる詳細モードを備え、事前のドライランにも対応します。

主な機能

  1. 01簡易モードと詳細モード
  2. 02ワークスペースやデータ要素の新規作成・再利用
  3. 03作成前のDMS利用可否チェック
  4. 04デプロイ前のドライラン
  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 の確認

[必須]作業を進める前に、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)があることを確認してください。

有効なプロファイルがない場合は、処理を中断してユーザーに以下を促してください。

  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 サービスの利用可否を確認する

[必須]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 ストア、ベクターデータベース)が新規に作成されます。

ユーザーから収集するパラメーター
パラメーター説明
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 を使用するか、新しく作成するかをユーザーに尋ねます。

  • 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. DryRun=true を指定して完全な JSON を作成し、スクリプトを実行します
  2. エラーがないことを確認したら、DryRun を false に設定して再度実行し、プロビジョニングします

注意事項

  • Python スクリプトは Alibaba Cloud のデフォルト認証情報チェーンを使用します。スクリプトを実行する前に、公式ガイドに従って認証情報を設定してください
  • WorkspaceId(既存の Workspace を使用)と WorkspaceName(新しい Workspace を作成)は相互に排他的です
  • DbResourceId、KvStoreResourceId、VectordbResourceId はすべて整数型です
  • 最終的なプロビジョニングの前に、必ず DryRun=true でドライランを実行してください
  • このワークフローでコマンドを実行する前に、必ず SKILL_SESSION_ID をエクスポートしてください

コメント