云资源管理Skill:云服务运维

自动化云资源管理

一、云资源管理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应能查询以下类型的资源:

资源清单的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应支持按标签进行资源分组和批量操作:

# 按环境和项目标签列出资源 /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可以辅助进行弹性伸缩策略的管理和调整:

八、核心要点总结

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的最终目标不是替代运维人员,而是将运维人员从繁琐的日常操作中解放出来,让他们能够专注于架构优化、故障预防和业务创新等更高价值的工作。