aliyun-swas-manage について
SWAS-OPEN OpenAPI で Alibaba Cloud Simple Application Server のリソースを管理するスキルです。クラウド運用やデプロイを対象とし、インスタンス、ストレージ、ファイアウォール、Cloud Assistant の操作と結果確認を案内します。
主な機能
- 01インスタンス、ディスク、スナップショット、イメージの管理
- 02ファイアウォールとキーペアの設定
- 03Cloud Assistant コマンドの実行
- 04複数リージョンのインスタンス集計
- 05アプリのデプロイと検証手順
活用シーン
- 01複数リージョンのインスタンスとプランの棚卸し
- 02サーバーの起動、停止、再起動
- 03リモートコマンドの実行と結果確認
- 04サーバー上のアプリケーションバイナリの更新
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cinience/ alicloud-skills --skill aliyun-swas-manageインストール後、Claude Code で/aliyun-swas-manageを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/api_overview.mdcommand-assistant.mddeploy-workflow.mdendpoints.mdsources.mdscripts/fix_ssh_access.pyget_ssh_port.pylist_instances_all_regions.pysummary_instances_by_plan.pysummary_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 の優先順位
- Python SDK(推奨)
- OpenAPI Explorer
- その他の 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 に関する注意事項
aliyunCLI では、製品名としてswas-openが公開されていない場合があります。Python SDK の使用を推奨します。 CLI の使用が必須の場合は、まず OpenAPI Explorer でリクエスト例を生成してから、CLI に移行してください。
ワークフロー
- リソースの種類とリージョン(インスタンス/ディスク/スナップショット/イメージ/ファイアウォール/コマンド/データベース/タグ)を確認します。
references/api_overview.mdで API グループと操作を特定します。- 呼び出し方法(Python SDK/OpenAPI Explorer/その他の SDK)を選択します。
- 変更後は、クエリ 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 サービスとして公開します:
- ESA DNS に A レコードを追加します(proxied=true)
- ESA で SSL 証明書を申請します
- 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 を参照してください。
確認事項(不明な場合は質問してください)
- 対象のリージョンはどこですか? VPC エンドポイントが必要ですか?
- 対象のインスタンス ID は何ですか? 現在 Running 状態ですか?
- 必要なコマンド/スクリプトの種類とタイムアウトは何ですか? Linux と Windows のどちらですか?
- バッチ実行またはスケジュール実行が必要ですか?
出力ポリシー
結果または応答を保存する必要がある場合は、次の場所に書き込んでください:
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つ実行します。
- 明示的なパラメーターと制限された範囲で、対象の操作を実行します。
- 結果を確認し、出力ファイルと証拠ファイルを保存します。
参考資料
- API の概要と操作グループ:
references/api_overview.md - エンドポイントと統合:
references/endpoints.md - Cloud Assistant の主な機能:
references/command-assistant.md - アプリケーションのデプロイワークフロー:
references/deploy-workflow.md - 公式ソース一覧:
references/sources.md