一、云资源管理Skill的设计
云资源管理Skill的核心目标是帮助运维人员通过自然语言交互,实现对多云环境下各类资源的统一管理和自动化操作。该Skill将复杂的云API调用封装为简洁的对话式命令,大幅降低云运维的操作门槛。
统一管理多云资源
通过统一的接口管理AWS、阿里云、腾讯云、GCP等主流云平台的资源,无需在多个控制台之间切换。
简化云运维操作
将多步骤的运维操作封装为一条Skill命令,减少手动操作带来的错误风险,提升工作效率。
提供成本优化建议
自动分析云资源使用情况,识别闲置资源和异常消费,提供可执行的成本优化方案。
安全合规检查
定期扫描安全组规则、SSL证书状态和访问权限配置,确保云环境符合安全最佳实践。
Skill的触发方式设计
云资源管理Skill建议设计多个触发入口,按功能领域拆分,避免单个Skill过于臃肿。以下是推荐的触发命令设计:
/cloud-list — 列出所有云资源和状态
/cloud-cost — 成本分析和优化建议
/cloud-security — 安全组和网络安全检查
/cloud-cert — SSL证书管理
/cloud-dns — DNS记录管理
/cloud-account — 多账户/多区域切换
设计原则: 每个Skill命令聚焦一个明确的运维场景,输入参数尽量精简,默认展示最常用的信息。对于高级选项,通过可选参数提供扩展能力。
Skill的YAML定义模板
在CLAUDE.md中定义云资源管理Skill时,可参考以下模板结构。每个子命令对应一个独立的Skill定义,共享底层的云API调用工具:
## Skills
- name: cloud-list
trigger: /cloud-list
description: >
列出当前云账户下的所有资源清单和运行状态。
支持按资源类型、区域和标签进行过滤。
自动识别闲置资源并提供清理建议。
args:
- name: provider
required: false
description: 云平台(aws/aliyun/tencent/gcp),默认当前配置的平台
- name: region
required: false
description: 区域过滤,如 us-east-1, cn-north-1
- name: type
required: false
description: 资源类型过滤,如 ec2, rds, s3, lambda
- name: tag
required: false
description: 按标签过滤,格式 key=value
二、多云平台适配
现代企业IT架构普遍采用多云策略,Skill需要能够无缝适配不同云平台的API差异,提供一致的用户体验。多云适配是云资源管理Skill的核心能力之一。
支持的云平台
| 云平台 |
API/SDK |
认证方式 |
主要服务 |
| AWS |
boto3 (Python SDK) |
Access Key + Secret Key / IAM Role |
EC2, S3, RDS, Lambda, CloudWatch |
| 阿里云 |
aliyun-python-sdk-core |
AccessKey ID + Secret |
ECS, OSS, RDS, SLB, ACK |
| 腾讯云 |
tencentcloud-sdk-python |
SecretId + SecretKey |
CVM, COS, CDB, CLB, TKE |
| Google Cloud |
google-cloud-* 系列SDK |
Service Account JSON Key |
GCE, GCS, Cloud SQL, GKE |
自动检测云平台与区域
Skill应能自动检测当前环境中已配置的云平台凭据,并智能识别默认区域。以下是一个自动检测的实现思路:
def detect_cloud_providers():
"""自动检测当前环境中可用的云平台配置"""
providers = {}
# 检测AWS配置
try:
import boto3
session = boto3.Session()
credentials = session.get_credentials()
if credentials:
region = session.region_name or 'us-east-1'
providers['aws'] = {
'status': 'configured',
'region': region,
'account': sts.get_caller_identity().get('Account')
}
except Exception:
providers['aws'] = {'status': 'not_configured'}
# 检测阿里云配置
try:
import os
access_key = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID')
if access_key:
region = os.environ.get('ALIBABA_CLOUD_REGION_ID', 'cn-hangzhou')
providers['aliyun'] = {
'status': 'configured',
'region': region
}
except Exception:
providers['aliyun'] = {'status': 'not_configured'}
return providers
切换不同云账户/Profile
对于管理多个云账户的团队,Skill需要支持账户级别的切换。设计上可以通过参数指定profile或账户别名:
# 通过profile名称切换AWS账户
/cloud-list --profile production
/cloud-list --profile staging
# 通过账户别名切换阿里云账户
/cloud-list --account prod-account
/cloud-list --account dev-account
# 同时指定平台和区域
/cloud-list --provider aws --region us-west-2
/cloud-list --provider aliyun --region cn-beijing
最佳实践: 在Skill内部维护一个账户配置映射表,将友好的账户别名映射到实际的凭据配置。这样用户无需记忆复杂的账户ID和区域名称,使用自然语言即可切换。
三、资源清单和状态
资源清单是云运维最基础也最常用的功能。通过Skill可以快速获取所有云资源的概览信息,并按需进行过滤和排序。准确掌握资源状态是成本控制和故障排查的前提。
资源类型覆盖
一个完整的云资源管理Skill应能查询以下类型的资源:
- 计算资源: EC2实例(AWS)、ECS实例(阿里云)、CVM(腾讯云)、GCE(GCP)
- 存储资源: S3存储桶(AWS)、OSS存储桶(阿里云)、COS存储桶(腾讯云)、GCS(GCP)
- 数据库资源: RDS实例、Redis/Memcache、MongoDB、Aurora
- 网络资源: VPC/专有网络、ELB/CLB/SLB负载均衡、NAT网关、VPN连接
- 容器资源: EKS/ACK/TKE/GKE集群、Pod状态、Service暴露情况
- Serverless资源: Lambda函数、API网关、CloudFront/CDN
资源清单的Skill实现
以下是一个展示AWS EC2实例列表的Skill处理逻辑示例:
def list_ec2_instances(region=None, tag_filter=None):
"""列出EC2实例及其状态信息"""
ec2 = boto3.client('ec2', region_name=region)
filters = []
if tag_filter:
key, value = tag_filter.split('=')
filters.append({'Name': f'tag:{key}', 'Values': [value]})
instances = ec2.describe_instances(Filters=filters)
result = []
for reservation in instances['Reservations']:
for instance in reservation['Instances']:
name = 'Unnamed'
if instance.get('Tags'):
for tag in instance['Tags']:
if tag['Key'] == 'Name':
name = tag['Value']
result.append({
'id': instance['InstanceId'],
'name': name,
'type': instance['InstanceType'],
'state': instance['State']['Name'],
'private_ip': instance.get('PrivateIpAddress', 'N/A'),
'public_ip': instance.get('PublicIpAddress', 'N/A'),
'launch_time': instance['LaunchTime'].isoformat()
})
return result
识别未使用/闲置资源
闲置资源是云成本浪费的主要来源。Skill可以自动检测以下类型的闲置资源:
闲置资源检测规则:
- EC2实例:CPU使用率连续7天低于5% → 建议降配或停止
- EBS卷:未挂载到任何实例超过3天 → 建议删除快照后释放
- ELB负载均衡:无后端实例或流量为零超过14天 → 建议删除
- RDS实例:连接数为零超过7天 → 建议停止或降配
- Elastic IP:未关联到实例超过7天 → 建议释放
- S3存储桶:30天内无任何读写请求 → 建议归档或删除
注意: 识别闲置资源时,一定要排除测试环境和预发布环境的特殊需求。建议先输出闲置资源列表让用户确认,再执行清理操作。
资源标签和分组管理
良好的标签策略是云资源管理的基础。Skill应支持按标签进行资源分组和批量操作:
- 环境标签: Environment=Production / Staging / Development
- 项目标签: Project=ProjectX / Team=Backend
- 成本标签: CostCenter=Finance / Department=Engineering
- 自动标签: Auto-Shutdown=true / Backup-Daily=true
# 按环境和项目标签列出资源
/cloud-list --tag Environment=Production
/cloud-list --tag Project=MyApp --type ec2
# 列出所有未打标签的资源(即标签合规检查)
/cloud-list --untagged
四、成本分析和优化
云成本管理是云运维的核心关注点之一。通过成本分析Skill,运维人员可以快速了解费用构成、识别异常增长趋势,并获得可执行的优化建议。
费用明细分析
Skill可以按服务、区域、账户维度和时间范围进行费用查询,帮助定位成本热点:
# AWS Cost Explorer API调用示例
def get_cost_by_service(start_date, end_date):
"""按服务维度查询费用明细"""
ce = boto3.client('ce')
response = ce.get_cost_and_usage(
TimePeriod={
'Start': start_date,
'End': end_date
},
Granularity='MONTHLY',
Metrics=['UnblendedCost', 'UsageQuantity'],
GroupBy=[
{'Type': 'DIMENSION', 'Key': 'SERVICE'}
]
)
cost_data = []
for group in response['ResultsByTime'][0]['Groups']:
cost_data.append({
'service': group['Keys'][0],
'cost': float(group['Metrics']['UnblendedCost']['Amount']),
'currency': group['Metrics']['UnblendedCost']['Unit']
})
# 按费用降序排列
cost_data.sort(key=lambda x: x['cost'], reverse=True)
return cost_data
成本异常检测
Skill可以通过环比和同比分析自动发现成本异常增长:
检测规则:
- 月度费用环比增长超过20% → 标记为异常
- 单服务费用突增超过$500 → 触发告警
- 新创建的高成本资源(如GPU实例)→ 主动提示
- 预留实例(RI)覆盖率低于60% → 建议购买预留实例
- 数据传输费用异常增高 → 检查是否有DDoS或数据泄露风险
成本优化建议
根据资源使用情况,Skill可以生成针对性的优化建议:
| 优化项目 |
适用场景 |
预估节省比例 |
| 预留实例/节省计划 |
稳定运行的长期工作负载 |
30%-60% |
| 实例降配 |
CPU/内存利用率长期低于20% |
20%-50% |
| 删除闲置资源 |
未关联的EBS卷、未使用的EIP |
5%-15% |
| 自动变配 |
有明确高峰低谷的工作负载 |
10%-30% |
| 存储降频 |
访问频率低的S3/OSS数据 |
40%-70% |
月度费用趋势报告
Skill可以生成格式化的费用趋势报告,支持对比上月的费用变化:
云成本月度报告 (2026年4月)
━━━━━━━━━━━━━━━━━━━━━━━
本月总费用: $12,345.67
上月总费用: $10,234.56
环比增长: +20.6% ⚠️
按服务排名:
1. EC2 $4,567.89 (37.0%) ↑15.2%
2. RDS $2,345.67 (19.0%) ↑5.1%
3. Lambda $1,234.56 (10.0%) ↑45.3% ⚠️
4. S3 $987.65 (8.0%) ↑2.1%
5. DataTransfer $876.54 (7.1%) ↑32.8% ⚠️
优化建议:
1. 购买EC2节省计划 → 预计节省 $1,370/月
2. 删除6个闲置EBS卷 → 预计节省 $45/月
3. 检查DataTransfer异常增长原因
提示: 可以将成本分析Skill设置为定时任务,每周自动运行并发送报告到团队通讯工具(飞书/钉钉/Slack),让成本可视化成为常态化机制。
五、安全组和网络配置
网络安全是云运维的重中之重。安全组作为云环境的虚拟防火墙,其规则配置直接关系到业务系统的安全防护水平。Skill可以自动化安全组审计和修复流程。
安全组规则检查
Skill可以快速列出所有安全组及其规则,并自动识别高危配置:
def audit_security_groups():
"""安全组审计:检测高危规则"""
ec2 = boto3.client('ec2')
sgs = ec2.describe_security_groups()['SecurityGroups']
high_risk_rules = []
for sg in sgs:
for rule in sg.get('IpPermissions', []):
for ip_range in rule.get('IpRanges', []):
# 检测开放到所有IP的规则
if ip_range.get('CidrIp') == '0.0.0.0/0':
high_risk_rules.append({
'sg_id': sg['GroupId'],
'sg_name': sg['GroupName'],
'port': rule.get('FromPort', 'All'),
'protocol': rule.get('IpProtocol', 'All'),
'cidr': '0.0.0.0/0',
'risk': 'HIGH - 开放到所有IP'
})
# 检测大端口范围
elif ip_range.get('CidrIp') == '0.0.0.0/0':
from_port = rule.get('FromPort', 0)
to_port = rule.get('ToPort', 0)
if to_port - from_port > 1000:
high_risk_rules.append({
'sg_id': sg['GroupId'],
'sg_name': sg['GroupName'],
'port': f'{from_port}-{to_port}',
'protocol': rule.get('IpProtocol', 'All'),
'cidr': ip_range.get('CidrIp'),
'risk': 'MEDIUM - 端口范围过大'
})
return high_risk_rules
高危规则自动修复
对于检测到的高危规则,Skill可以提供一键修复能力:
# 自动修复:将0.0.0.0/0替换为指定的可信IP范围
/cloud-security --fix --trusted-ip 203.0.113.0/24
# 或者交互式修复:先展示所有高危规则让用户选择
/cloud-security --interactive
安全提醒: 自动修复高危安全组规则前,务必确认不会影响正在运行的生产服务。建议先以只读模式运行安全组检查,生成报告后再逐个确认修复。
SSL证书过期检查
SSL证书过期是导致生产事故的常见原因之一。Skill可以定期检查SSL证书的有效期:
def check_ssl_certificates(domain_list):
"""批量检查SSL证书到期时间"""
import ssl
import socket
from datetime import datetime
results = []
for domain in domain_list:
try:
ctx = ssl.create_default_context()
with ctx.wrap_socket(
socket.socket(), server_hostname=domain
) as s:
s.settimeout(5)
s.connect((domain, 443))
cert = s.getpeercert()
expire_date = datetime.strptime(
cert['notAfter'], '%b %d %H:%M:%S %Y %Z'
)
days_left = (expire_date - datetime.now()).days
results.append({
'domain': domain,
'issuer': dict(cert['issuer']).get('commonName', 'N/A'),
'expire_date': expire_date.isoformat(),
'days_left': days_left,
'status': 'ok' if days_left > 30
else 'warning' if days_left > 7
else 'critical'
})
except Exception as e:
results.append({
'domain': domain,
'error': str(e),
'status': 'error'
})
return results
# 检查所有已配置的域名证书
/cloud-cert --check-all
# 列出30天内即将过期的证书
/cloud-cert --expiring-soon --days 30
# 自动更新证书(集成Let's Encrypt / ACM)
/cloud-cert --renew --domain example.com
DNS记录管理
Skill可以将常见的DNS管理操作封装为简单命令,避免频繁登录云控制台:
# 查看域名DNS记录
/cloud-dns --domain example.com
# 添加A记录
/cloud-dns --add --type A --name www --value 192.0.2.1 --ttl 600
# 添加CNAME记录
/cloud-dns --add --type CNAME --name api --value api-backend.example.com
# 批量迁移DNS记录
/cloud-dns --migrate --from-zone old-zone.com --to-zone new-zone.com
六、存储桶管理(S3/OSS/COS)
对象存储是云上最常用的存储服务之一。Skill应提供便捷的存储桶管理能力,包括文件操作、权限配置和生命周期管理。
存储桶操作
# 列出所有存储桶
/cloud-list --type bucket
# 查看存储桶中的文件
/cloud-list --bucket my-bucket --prefix logs/
# 上传文件到存储桶
/cloud-upload --bucket my-bucket --local ./backup.sql --remote backups/
# 配置存储桶生命周期规则
/cloud-bucket-lifecycle --bucket my-bucket \
--rule "30天后转为标准IA, 90天后转为Glacier, 365天后删除"
存储桶安全配置检查
存储桶权限配置错误是导致数据泄露的主要原因。Skill可以自动检查存储桶的公共访问设置:
安全检查项:
- 存储桶是否允许公共访问(BlockPublicAccess配置)
- 存储桶策略是否过于宽松(如 Principal: "*")
- 是否启用服务器端加密(SSE-S3/SSE-KMS)
- 是否启用访问日志记录
- 跨区域复制配置是否正常
七、计算实例管理(EC2/ECS/VM)
计算实例是云上最主要的资源类型,Skill可以覆盖实例的全生命周期管理操作。
实例日常操作
# 列出所有正在运行的实例
/cloud-list --type instance --state running
# 启动/停止/重启实例
/cloud-instance --action start --id i-0abcd1234efgh5678
/cloud-instance --action stop --id i-0abcd1234efgh5678
/cloud-instance --action reboot --id i-0abcd1234efgh5678
# 批量操作(按标签筛选)
/cloud-instance --action stop --tag Environment=Development
# 查看实例详情
/cloud-instance --describe --id i-0abcd1234efgh5678
实例弹性伸缩
结合监控数据,Skill可以辅助进行弹性伸缩策略的管理和调整:
- 查询当前Auto Scaling组的状态和实例数量
- 手动调整期望实例数(应对突发的流量高峰)
- 查看伸缩活动和历史记录
- 建议基于CPU/内存/请求数的伸缩策略
八、核心要点总结
1. Skill设计原则: 每个云资源管理Skill应聚焦单一运维场景,命令简洁明确,输出格式统一。将复杂API调用封装为自然语言可理解的命令。
2. 多云统一抽象: 在不同云平台之上构建统一的资源模型抽象层,屏蔽各平台API差异。通过配置文件管理多账户/多区域信息。
3. 安全优先: 所有资源操作默认为只读模式,写操作(启动/停止/删除)需要用户显式确认。高危操作(如删除资源)建议增加二次确认机制。
4. 成本可视化: 将成本数据以直观的格式呈现,自动标注异常增长和优化机会。建立常态化的成本巡检机制。
5. 自动化与人工审核结合: 日常巡检和报告生成完全自动化,但变更操作保留人工审核环节,确保安全可控。
九、进一步思考与实践
在构建云资源管理Skill时,以下进阶方向值得探索:
1. 与工单系统集成: 将云资源变更操作与ITSM/工单系统联动,确保所有变更经过审批流程,满足合规审计要求。
2. 智能运维告警: 结合CloudWatch/AliCloud Monitor等监控数据,Skill可以主动推送告警信息并给出处理建议,从被动响应转变为主动运维。
3. 基础设施即代码(IaC)集成: 将Skill与Terraform/Pulumi/CDK等IaC工具集成,实现基础设施的声明式管理和版本控制。
4. 灾难恢复演练: 编写跨区域故障转移和灾备切换的Skill,定期自动化执行DR演练,验证灾备方案的有效性。
5. AI驱动的异常检测: 利用机器学习模型分析云资源使用模式,预测未来容量需求,提前发现潜在的性能瓶颈和成本异常。
云资源管理Skill的最终目标不是替代运维人员,而是将运维人员从繁琐的日常操作中解放出来,让他们能够专注于架构优化、故障预防和业务创新等更高价值的工作。