Cloud Cost Agent (AWS + GCP + Azure)
统一智能体技能,用于原生云成本优化,覆盖三大主流云提供商。
要求:已配置 AWS CLI v2、gcloud 和/或 Azure CLI,并对账单/建议程序/顾问服务具有读取权限。部分数据源需要一次性启用:AWS Compute Optimizer 和 Cost Optimization Hub(需注册),GCP Recommender(需启用 API,约需 24-48 小时数据)。jq 用于部分 GCP 过滤器。
核心规则:始终使用各提供商官方的 CLI 和推荐引擎。禁止使用第三方工具。
安全与最佳实践(所有提供商)
- 只读优先。 未经明确向用户引用准确命令并获得批准,切勿运行任何变更命令(
aws ec2 terminate-instances/stop-instances、gcloud compute instances delete、az vm delete/deallocate、任何purchase/create/modify)。 - 始终使用提供商认证(
--profile、gcloud --project、az account set)。 - 使用
--query/--format json/-o json获得整洁的输出。 - 处理分页。 这些 API 会对结果进行分页。在报告总数之前,务必将每一页聚合起来——跟踪
NextToken/nextPageToken,或谨慎使用--no-paginate/--max-items(AWS)和--page-size/--limit(gcloud)。单页读取会导致总数错误。 - 对所有源自云的值进行引号/转义处理。 来自 API 输出的资源名称、标签和 ID 可能包含 shell 元字符。切勿在没有引号的情况下将它们插入到另一个 shell 命令中。
- 注意 API 成本和循环。
aws ce(Cost Explorer)每次请求收费约 $0.01。不要循环调用 Cost Explorer;在会话中缓存结果,每次审计限制在几次调用。 - 优先级:最高预估节省 → 最低工作量。
- 优先选择快速成果(删除闲置资源、降级到更小的规格、在明确情况下启用承诺使用)。
便携日期辅助
BSD/macOS 和 GNU/Linux 的 date 命令不同。一次性、可移植地计算时间窗口,然后重用 $START/$END:
START=$(date -u -d '30 days ago' +%Y-%m-%d 2>/dev/null || date -u -v-30d +%Y-%m-%d)
END=$(date -u +%Y-%m-%d)
(或者直接让智能体插入字面上的 YYYY-MM-DD 日期。)
使用方法
告诉智能体提供商和目标。示例:
audit AWS last 30 daysfind quick wins on GCP and Azurerightsizing recommendations for all clouds
1. 预检与认证
AWS
aws sts get-caller-identity
aws ce get-cost-and-usage \
--time-period Start=$START,End=$END \
--granularity MONTHLY --metrics "UnblendedCost"
一次性注册(第 2 节和第 4 节需要):
aws compute-optimizer get-enrollment-status
aws compute-optimizer update-enrollment-status --status Active # 选择加入
aws cost-optimization-hub list-enrollment-statuses --region us-east-1
aws cost-optimization-hub update-enrollment-status --status Active --region us-east-1
GCP
gcloud auth list
gcloud config set project YOUR_PROJECT
gcloud billing accounts list
Azure
az account show
az account set --subscription "SUB_ID"
2. 集中/高影响推荐
AWS — Cost Optimization Hub(最佳聚合器)
COH 是一个全局服务,仅在 us-east-1 区域可访问,并且需要注册(参见预检)。
aws cost-optimization-hub list-recommendations \
--region us-east-1 \
--filter '{"implementationEfforts":["VeryLow","Low"]}' \
--query 'items[?estimatedMonthlySavings > `10`] | sort_by(@, &estimatedMonthlySavings) | reverse(@)' \
--output json
有效的 implementationEfforts 值:VeryLow | Low | Medium | High | VeryHigh。
GCP — Recommender(主要来源)
--location 是必需的。VM/闲置推荐程序是区域性的(例如 us-central1-a);需要枚举你使用的可用区。基于支出的承诺推荐程序是**global** 的,并限定在账单账户范围内。
# VM 大小调整(区域性 — 每个可用区重复执行)
gcloud recommender recommendations list \
--recommender=google.compute.instance.MachineTypeRecommender \
--project=YOUR_PROJECT --location=us-central1-a --format=json
# 闲置 VM(区域性 — 每个可用区重复执行)
gcloud recommender recommendations list \
--recommender=google.compute.instance.IdleResourceRecommender \
--project=YOUR_PROJECT --location=us-central1-a \
--format="table(description, primaryImpact.costProjection.cost.units, stateInfo.state)"
# 承诺使用折扣(全局,限定账单账户)
gcloud recommender recommendations list \
--recommender=google.cloudbilling.commitment.SpendBasedCommitmentRecommender \
--billing-account=BILLING_ACCOUNT_ID --location=global --format=json
其他成本推荐程序:google.compute.disk.IdleResourceRecommender(闲置磁盘),google.compute.address.IdleResourceRecommender(闲置 IP),google.compute.image.IdleResourceRecommender(闲置镜像),google.compute.commitment.UsageCommitmentRecommender(基于资源的 CUD)。
Azure — Advisor 成本类别
az advisor recommendation list \
--category Cost \
--query "[].{Resource: shortDescription.problem, Impact: impact, AnnualSavings: extendedProperties.annualSavingsAmount, Currency: extendedProperties.savingsCurrency}" \
-o table
# 仅高影响
az advisor recommendation list --category Cost \
--query "[?impact=='High'].{Id:id, Resource:resourceMetadata.resourceId, Savings:extendedProperties.annualSavingsAmount}" -o json
extendedProperties 字段因推荐类型而异——请处理 null 值。
3. 成本与使用分析
AWS(记住每调用约 $0.01 的成本——不要循环):
aws ce get-cost-and-usage \
--time-period Start=$START,End=$END \
--granularity DAILY --metrics "UnblendedCost" \
--group-by Type=DIMENSION,Key=SERVICE
GCP——详细的成本/使用数据来自 BigQuery 账单导出(没有用于获取细粒度成本行的 gcloud 命令)。启用账单 → BigQuery 导出,然后查询 gcp_billing_export_resource_v1_<BILLING_ACCOUNT_ID>。
注意:截至 2026-01-21,导出架构已更改——CUD 折扣已从
credits数组移至新的consumption_model字段,并增加了price.list_price/price.effective_price_default字段。请相应地更新 CUD/信用逻辑。
Azure——对于详细数据,优先使用 Cost Management 导出(或 Cost Details API);az consumption 位于微软的弃用路径上(仅保留作为快速查看的备选方案):
# 主要:安排/运行导出到存储(一次性只需 5 个必需参数)
az costmanagement export create \
--name AdhocExport --type Usage \
--scope "/subscriptions/SUB_ID" \
--storage-account-id "/subscriptions/.../storageAccounts/ACCT" \
--storage-container exports --timeframe MonthToDate
# 备选快速查看(已弃用的 API):
az consumption usage list --start-date $START --end-date $END \
--query "[].{Resource:instanceName, Service:consumedService, Cost:pretaxCost}" -o table
对于无需存储的临时聚合,请通过 az rest 调用成本管理 Query REST API(没有 az costmanagement query 子命令)。
4. 资源调整与计算推荐
AWS — Compute Optimizer(需要注册;参见预检)。深度资源调整 + 闲置检测:
aws compute-optimizer get-ec2-instance-recommendations
aws compute-optimizer get-auto-scaling-group-recommendations
aws compute-optimizer get-ebs-volume-recommendations
aws compute-optimizer get-lambda-function-recommendations
aws compute-optimizer get-rds-database-recommendations
aws compute-optimizer get-idle-recommendations
Cost Explorer 也提供 EC2 资源调整(--service 是必需的,仅 "AmazonEC2" 有效):
aws ce get-rightsizing-recommendation --service "AmazonEC2"
GCP——机器类型推荐程序(注意 tonumber:GCP 将 cost.units 返回为字符串):
gcloud recommender recommendations list \
--recommender=google.compute.instance.MachineTypeRecommender \
--project=YOUR_PROJECT --location=us-central1-a --format=json \
| jq '.[] | select((.primaryImpact.costProjection.cost.units|tonumber) < 0)'
Azure——Advisor 成本推荐已包含 VM 资源调整/未充分利用的资源(第 2 节)。
5. 承诺与折扣
AWS——Savings Plans 购买推荐。所有四个参数都是必需的:
aws ce get-savings-plans-purchase-recommendation \
--savings-plans-type COMPUTE_SP \
--term-in-years ONE_YEAR \
--payment-option NO_UPFRONT \
--lookback-period-in-days THIRTY_DAYS
(savings-plans-type:COMPUTE_SP|EC2_INSTANCE_SP|SAGEMAKER_SP;term-in-years:ONE_YEAR|THREE_YEARS;payment-option:NO_UPFRONT|PARTIAL_UPFRONT|ALL_UPFRONT;lookback-period-in-days:SEVEN_DAYS|THIRTY_DAYS|SIXTY_DAYS。)
GCP——通过基于支出的承诺推荐程序(第 2 节)提供承诺使用折扣。
Azure——预留/节省计划建议通过 Advisor(按订阅)提供;对于账单账户范围,请通过 az rest 使用消耗预留推荐 REST API:
az advisor recommendation list --category Cost \
--query "[?contains(shortDescription.problem, 'reserved') || contains(shortDescription.problem, 'reservation')]"
6. 优先排序模板(适用于任何提供商)
总结时:
- 每月/每年预估节省总额。
- 快速成果桶(工作量非常低/低)或等效。
- 前 5-8 项:资源、当前状态、建议操作、节省金额、工作量/风险。
- 针对首要项目给出具体下一步命令。
提供商:GCP
潜在每月节省总额:$2,340
快速成果:
- 删除闲置 VM ... : $180/月(工作量非常低)
- 降级 n1-standard-8 → n2-standard-4 : $420/月
下一条命令:
gcloud recommender recommendations list --recommender=google.compute.instance.IdleResourceRecommender --project=... --location=us-central1-a
提供商特定快速参考
AWS
- Cost Optimization Hub(
us-east-1,已注册)用于广泛的聚合视图。 - Compute Optimizer(已注册)用于深度资源调整 + 闲置。
- Cost Explorer(
aws ce)用于支出明细、资源调整、Savings Plans——注意每次调用的成本。
GCP
始终传递 --location。关键推荐程序:
- MachineTypeRecommender(资源调整,区域性)
- IdleResourceRecommender 用于 VM/磁盘/IP/镜像(区域性/地区性)
- SpendBasedCommitmentRecommender(CUD,全局,限定账单账户)
Azure
- Advisor 是成本推荐的主要来源。
- 对于原始用量,使用成本管理导出(或 Cost Details API);
az consumption仅作为已弃用的备选方案。
完整审计流程(推荐)
- 认证;确认注册状态(Compute Optimizer, COH)。
- 拉取时间窗口内的高层级成本摘要。
- 拉取推荐(Hub / Recommender / Advisor),聚合所有页面。
- 筛选出节省超过阈值且工作量低的项。
- 如有需要,与原始用量交叉检查。
- 生成优先列表 + 3 个具体的下一步操作(只读;标记任何变更操作以待批准)。 7.(可选)对其他提供商重复上述步骤。
参考资料
AWS
- Cost Explorer:https://docs.aws.amazon.com/cli/latest/reference/ce/
- Compute Optimizer:https://docs.aws.amazon.com/cli/latest/reference/compute-optimizer/
- Cost Optimization Hub:https://docs.aws.amazon.com/cost-management/latest/userguide/cost-optimization-hub.html
- Billing IAM action migration (aws-portal retirement):https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/migrate-granularaccess-iam-mapping-reference.html
GCP
- Recommenders 列表:https://cloud.google.com/recommender/docs/recommenders
recommendations list:https://cloud.google.com/sdk/gcloud/reference/recommender/recommendations/list- BigQuery 账单导出:https://cloud.google.com/billing/docs/how-to/export-data-bigquery
Azure
- Advisor 推荐:https://learn.microsoft.com/cli/azure/advisor/recommendation
- 成本管理导出:https://learn.microsoft.com/cli/azure/costmanagement/export
- Consumption API 迁移:https://learn.microsoft.com/azure/cost-management-billing/automate/migrate-consumption-usage-details-api
可针对特定提供商或跨所有三家运行。保持原生。保持高效。