mcpField
A
aliyun-swas-manage

aliyun-swas-manage

github.com/cinienceクラウド・DevOps39656 回インストール11 週間前に更新
リポジトリ

aliyun-swas-manage について

SWAS-OPEN OpenAPI で Alibaba Cloud Simple Application Server のリソースを管理するスキルです。クラウド運用やデプロイを対象とし、インスタンス、ストレージ、ファイアウォール、Cloud Assistant の操作と結果確認を案内します。

主な機能

  1. 01インスタンス、ディスク、スナップショット、イメージの管理
  2. 02ファイアウォールとキーペアの設定
  3. 03Cloud Assistant コマンドの実行
  4. 04複数リージョンのインスタンス集計
  5. 05アプリのデプロイと検証手順

活用シーン

  1. 01複数リージョンのインスタンスとプランの棚卸し
  2. 02サーバーの起動、停止、再起動
  3. 03リモートコマンドの実行と結果確認
  4. 04サーバー上のアプリケーションバイナリの更新

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cinience/alicloud-skills --skill aliyun-swas-manage

インストール後、Claude Code で/aliyun-swas-manageを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
api_overview.md
command-assistant.md
deploy-workflow.md
endpoints.md
sources.md
scripts/
fix_ssh_access.py
get_ssh_port.py
list_instances_all_regions.py
summary_instances_by_plan.py
summary_instances_by_status.py

詳細

Category: サービス

Simple Application Server(SWAS-OPEN 2020-06-01)

SWAS-OPEN OpenAPI を使用して、インスタンス、ディスク、スナップショット、イメージ、キーペア、ファイアウォール、Cloud Assistant、モニタリング、タグ、軽量データベースなど、SAS の全リソースを管理します。

前提条件

  • 最小権限の RAM ユーザー/ロールで AccessKey を準備します。
  • 適切なリージョンと対応するエンドポイント(パブリック/VPC)を選択します。ALIBABACLOUD_REGION_ID をデフォルトのリージョンとして使用できます。設定されていない場合は、最も適切なリージョンを選択し、不明な場合はユーザーに確認してください。
  • この OpenAPI は RPC 署名を使用します。手動で署名する代わりに、Python SDK または OpenAPI Explorer の使用を推奨します。

SDK の優先順位

  1. Python SDK(推奨)
  2. OpenAPI Explorer
  3. その他の SDK
Python SDK によるクイック検索(インスタンス ID/IP/プラン)

仮想環境の使用を推奨します(PEP 668 によるシステムへのインストール制限を回避できます)。

python3 -m venv .venv
. .venv/bin/activate
python -m pip install alibabacloud_swas_open20200601 alibabacloud_tea_openapi alibabacloud_credentials
import os
from alibabacloud_swas_open20200601.client import Client as SwasClient
from alibabacloud_swas_open20200601 import models as swas_models
from alibabacloud_tea_openapi import models as open_api_models


def create_client(region_id: str) -> SwasClient:
    config = open_api_models.Config(
        region_id=region_id,
        endpoint=f"swas.{region_id}.aliyuncs.com",
    )
    ak = (
        os.getenv("ALIBABACLOUD_ACCESS_KEY_ID")
        or os.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
        or os.getenv("ALICLOUD_ACCESS_KEY_ID")
    )
    sk = (
        os.getenv("ALIBABACLOUD_ACCESS_KEY_SECRET")
        or os.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
        or os.getenv("ALICLOUD_ACCESS_KEY_SECRET")
    )
    if ak and sk:
        config.access_key_id = ak
        config.access_key_secret = sk
    return SwasClient(config)


def list_regions():
    client = create_client("cn-hangzhou")
    resp = client.list_regions(swas_models.ListRegionsRequest())
    return [r.region_id for r in resp.body.regions]


def list_instances(region_id: str):
    client = create_client(region_id)
    resp = client.list_instances(swas_models.ListInstancesRequest(region_id=region_id))
    return resp.body.instances


def main():
    for region_id in list_regions():
        for inst in list_instances(region_id):
            ip = getattr(inst, "public_ip_address", None) or getattr(inst, "inner_ip_address", None)
            spec = getattr(inst, "plan_name", None) or getattr(inst, "plan_id", None)
            print(inst.instance_id, ip or "-", spec or "-", region_id)


if __name__ == "__main__":
    main()
Python SDK スクリプト(インベントリと概要の作成に推奨)
  • 全リージョンのインスタンスインベントリ(TSV/JSON):scripts/list_instances_all_regions.py
  • プラン別のインスタンス数:scripts/summary_instances_by_plan.py
  • ステータス別のインスタンス数:scripts/summary_instances_by_status.py
  • SSH キーベースのアクセスを修正(カスタムポートに対応):scripts/fix_ssh_access.py
  • インスタンスの現在の SSH ポートを取得:scripts/get_ssh_port.py

CLI に関する注意事項

  • aliyun CLI では、製品名として swas-open が公開されていない場合があります。Python SDK の使用を推奨します。 CLI の使用が必須の場合は、まず OpenAPI Explorer でリクエスト例を生成してから、CLI に移行してください。

ワークフロー

  1. リソースの種類とリージョン(インスタンス/ディスク/スナップショット/イメージ/ファイアウォール/コマンド/データベース/タグ)を確認します。
  2. references/api_overview.md で API グループと操作を特定します。
  3. 呼び出し方法(Python SDK/OpenAPI Explorer/その他の SDK)を選択します。
  4. 変更後は、クエリ API で状態と結果を確認します。

一般的な操作の一覧

  • インスタンスのクエリ/起動/停止/再起動:ListInstances、StartInstance(s)、StopInstance(s)、RebootInstance(s)
  • コマンドの実行:RunCommand または CreateCommand + InvokeCommand を使用します。DescribeInvocations/DescribeInvocationResult で確認します。
  • ファイアウォール:ListFirewallRules/CreateFirewallRule(s)/ModifyFirewallRule/EnableFirewallRule/DisableFirewallRule
  • スナップショット/ディスク/イメージ:CreateSnapshot、ResetDisk、CreateCustomImage など

アプリケーションデプロイのベストプラクティス

バイナリ更新ワークフロー

SWAS サーバーにバイナリをデプロイする正しい手順(「text file busy」エラーを回避します):

1. 交叉编译 (GOOS=linux GOARCH=amd64)
2. SSH 停止远端服务 (systemctl stop)
3. SCP 上传二进制
4. SSH 重启服务 (systemctl start)
5. 验证服务状态

重要:上書き中の「text file busy」エラーを避けるため、アップロードする前に必ずサービスを停止してください。

Systemd サービス管理
# 创建服务文件: /etc/systemd/system/myapp.service
# 启用开机自启: systemctl enable myapp
# 修改 .service 后: systemctl daemon-reload
# 查看日志: journalctl -u myapp -f
ESA CDN の統合

ESA CDN を介して SWAS アプリケーションを HTTPS サービスとして公開します:

  1. ESA DNS に A レコードを追加します(proxied=true)
  2. ESA で SSL 証明書を申請します
  3. ESA で Origin Rule を作成します(オリジンへの接続は HTTP、ポートを指定)

トラフィックの経路:クライアント HTTPS → ESA(SSL 終端)→ HTTP でオリジンに接続 → SWAS アプリケーションのポート

詳細については、references/deploy-workflow.md を参照してください。

Cloud Assistant の実行に関する注意事項

  • 対象インスタンスは Running 状態である必要があります。
  • Cloud Assistant エージェントがインストールされている必要があります(InstallCloudAssistant を使用)。
  • PowerShell コマンドを実行する場合は、Windows インスタンスで必要なモジュールが利用可能であることを確認してください。
  • 実行後、DescribeInvocations または DescribeInvocationResult を使用してステータスと出力を取得します。

詳細については、references/command-assistant.md を参照してください。

確認事項(不明な場合は質問してください)

  1. 対象のリージョンはどこですか? VPC エンドポイントが必要ですか?
  2. 対象のインスタンス ID は何ですか? 現在 Running 状態ですか?
  3. 必要なコマンド/スクリプトの種類とタイムアウトは何ですか? Linux と Windows のどちらですか?
  4. バッチ実行またはスケジュール実行が必要ですか?

出力ポリシー

結果または応答を保存する必要がある場合は、次の場所に書き込んでください: output/compute-swas-open/

検証

mkdir -p output/aliyun-swas-manage
for f in skills/compute/swas/aliyun-swas-manage/scripts/*.py; do
  python3 -m py_compile "$f"
done
echo "py_compile_ok" > output/aliyun-swas-manage/validate.txt

合格条件:コマンドが 0 で終了し、output/aliyun-swas-manage/validate.txt が生成されること。

出力と証跡

  • 成果物、コマンド出力、API 応答の概要を output/aliyun-swas-manage/ に保存します。
  • 再現性を確保するため、証跡ファイルに主要なパラメーター(リージョン/リソース ID/期間)を含めてください。

前提条件

  • 実行前に、最小権限の Alibaba Cloud 認証情報を設定してください。
  • 環境変数の使用を推奨します:ALIBABACLOUD_ACCESS_KEY_ID、ALIBABACLOUD_ACCESS_KEY_SECRET、任意で ALIBABACLOUD_REGION_ID。
  • リージョンが不明な場合は、変更を伴う操作を実行する前にユーザーに確認してください。

ワークフロー

  1. ユーザーの意図、リージョン、識別子、操作が読み取り専用か変更を伴うものかを確認します。
  2. 接続と権限を確認するため、まず最小限の読み取り専用クエリを1つ実行します。
  3. 明示的なパラメーターと制限された範囲で、対象の操作を実行します。
  4. 結果を確認し、出力ファイルと証拠ファイルを保存します。

参考資料

  • API の概要と操作グループ:references/api_overview.md
  • エンドポイントと統合:references/endpoints.md
  • Cloud Assistant の主な機能:references/command-assistant.md
  • アプリケーションのデプロイワークフロー:references/deploy-workflow.md
  • 公式ソース一覧:references/sources.md

コメント