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. 03执行 Cloud 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: service

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

使用 SWAS-OPEN OpenAPI 管理完整的 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

云助手执行说明

  • 目标实例必须处于 Running 状态。
  • 必须安装云助手 Agent(使用 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. 先运行一条最精简的只读查询,以验证连接和权限。
  3. 使用明确的参数和限定的范围执行目标操作。
  4. 验证结果并保存输出/证据文件。

参考资料

  • API 概览和操作分组:references/api_overview.md
  • 端点和集成:references/endpoints.md
  • 云助手要点:references/command-assistant.md
  • 应用部署工作流:references/deploy-workflow.md
  • 官方来源列表:references/sources.md

评论

支持 Markdown