关于 aliyun-swas-manage
用于通过 SWAS-OPEN OpenAPI 管理 Alibaba Cloud Simple Application Server 资源的技能,面向云资源运维与部署任务。它涵盖实例、存储、网络规则及 Cloud Assistant,并强调查询验证和有范围的变更。
主要功能
- 01管理实例、磁盘、快照和镜像
- 02配置防火墙与密钥对
- 03执行 Cloud 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: 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 优先级
- 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
云助手执行说明
- 目标实例必须处于 Running 状态。
- 必须安装云助手 Agent(使用
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。 - 如果不清楚区域,请在执行会修改数据的操作前询问用户。
工作流
- 确认用户意图、区域、标识符,以及操作是只读还是会修改数据。
- 先运行一条最精简的只读查询,以验证连接和权限。
- 使用明确的参数和限定的范围执行目标操作。
- 验证结果并保存输出/证据文件。
参考资料
- API 概览和操作分组:
references/api_overview.md - 端点和集成:
references/endpoints.md - 云助手要点:
references/command-assistant.md - 应用部署工作流:
references/deploy-workflow.md - 官方来源列表:
references/sources.md
评论
支持 Markdown