
字节笔记本
2026年4月20日
GCP 永久免费层完全指南:20 个零成本产品 + 账单 API 监控
最近在整理云服务账单的时候,我重新审视了一下 Google Cloud Platform 的 Always Free 层级。说实话,很多人只知道 GCP 有 90 天 $300 的试用额度,用完就跑。但他们忽略了一个更重要的事实:GCP 有 20 个产品提供永久免费额度,不会过期。
这篇文章就是一份实用指南——帮你搞清楚哪些服务免费、怎么用 API 监控用量、以及如何避免不小心被扣费。
GCP 账单查询的三种方式
先说账单。你想查自己花了多少钱,GCP 提供了三种路径。
Cloud Billing API
最直接的方式。这个 API 可以查询账单账户信息、项目关联、费用预算和告警。但有一个坑:它只提供管理接口,不给你逐笔消费明细。适合看总账,不适合查明细。
from google.cloud import billing_v1
client = billing_v1.CloudBillingClient()
accounts = client.list_billing_accounts()
for account in accounts:
print(account.name, account.display_name, account.open)BigQuery Export(查明细的正确方式)
这是 GCP 官方推荐的做法——把账单数据导出到 BigQuery,然后用 SQL 查。好处是精确到每个 SKU,坏处是你得先开启导出功能。
SELECT
service.description,
SUM(cost) as total_cost,
currency
FROM `project.dataset.gcp_billing_export_v1_*`
WHERE DATE(usage_start_time) >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
GROUP BY 1, 3
ORDER BY total_cost DESC好消息是,BigQuery 本身每月有 1 TB 的免费查询额度,加上 Cloud Storage 的 5 GB 免费存储,账单导出和查询这个流程完全零成本。
gcloud CLI 快速查看
临时查一下,不想折腾 API 的话:
# 列出所有账单账户
gcloud billing accounts list
# 查看项目关联的账单账户
gcloud billing projects describe PROJECT_ID20 个永久免费产品一览
重点来了。以下产品只要不超过免费用量限额,就不必支付费用。不会过期,随时可能有变化。
计算服务
| 产品 | 免费额度 |
|---|---|
| Compute Engine | 每月 1 个 e2-micro 实例 |
| Cloud Run | 每月 200 万个请求 |
| Cloud Run functions | 每月 200 万次调用 |
| Google Kubernetes Engine | 每月 1 个 Autopilot 集群 |
| Cloud Build | 每天 120 分钟构建时间 |
这几个里面,Compute Engine 的 e2-micro 是真正的常驻免费 VM,适合跑轻量服务。Cloud Run 的 200 万请求对低频 API 服务绰绰有余。
存储与数据
| 产品 | 免费额度 |
|---|---|
| Cloud Storage | 5 GB/月 Standard Storage |
| BigQuery | 每月 1 TB 查询 |
| Firestore | 1 GB 存储 + 50K 读/20K 写/天 |
| Pub/Sub | 每月 10 GB 消息 |
Firestore 值得单独说一下。它的免费层不只是存储,完整的额度包括:
| 项目 | 免费额度 |
|---|---|
| 存储 | 1 GB(总量) |
| 读操作 | 50,000 次/天 |
| 写操作 | 20,000 次/天 |
| 删除操作 | 20,000 次/天 |
| 出站流量 | 10 GB/月 |
低频配置存储、用户偏好、小型 CMS,每天几百用户以内完全没问题。但要注意——读操作消耗最快。前端如果用 onSnapshot 实时监听文档,每次数据变化都会触发读,50,000 次/天比想象中消耗得快。
AI/ML 服务
| 产品 | 免费额度 |
|---|---|
| Vision AI | 每月 1,000 个单元 |
| Speech-to-Text | 每月 60 分钟 |
| Natural Language API | 每月 5,000 个单元 |
| Video Intelligence API | 每月 1,000 个单元 |
运维工具
| 产品 | 免费额度 |
|---|---|
| Operations | 每月日志 + 监控配额 |
| Cloud KMS Autokey | 100 个密钥版本 + 10,000 次操作/月 |
| Workflows | 每月 5,000 个免费内部步骤 |
| Secret Manager | 每月 6 个 Secret 版本 |
| Cloud Source Repositories | 5 用户免费 |
| Cloud Shell | 5 GB 永久磁盘 |
| Workload Manager | 每月 5,000 次资源评估 |
防止超额扣费的实用建议
免费额度虽然不会过期,但不代表你不会意外超支。这里有三种监控方案。
方案一:Budget API 设告警(最直接)
给每个关心的服务设置预算告警,超过阈值自动通知。最简单的做法是设一个 $0 预算——只要有任何扣费就立刻通知你。
from google.cloud import billing_budgets_v1
client = billing_budgets_v1.BudgetServiceClient()
budget = billing_budgets_v1.Budget(
billing_account="billingAccounts/XXXXXX",
display_name="Free Tier Monitor",
amount=billing_budgets_v1.BudgetAmount(
specified_amount={"currency_code": "USD", "units": 0}
),
threshold_rules=[
billing_budgets_v1.ThresholdRule(threshold_percent=100),
]
)方案二:BigQuery Export + SQL(最精确)
针对具体服务查用量,精确到每个 SKU:
SELECT
service.description,
sku.description,
SUM(usage.amount) as usage_amount,
usage.unit,
SUM(cost) as billed_cost
FROM `dataset.gcp_billing_export_v1_*`
WHERE
DATE(usage_start_time) >= DATE_TRUNC(CURRENT_DATE(), MONTH)
AND service.description IN ('Cloud Run', 'Cloud Storage', 'Compute Engine')
GROUP BY 1, 2, 4
ORDER BY billed_cost DESC方案三:Cloud Monitoring API(实时监控)
不同服务有专属监控指标,通过 Cloud Monitoring API 查:
from google.cloud import monitoring_v3
client = monitoring_v3.MetricServiceClient()
results = client.list_time_series(
name="projects/YOUR_PROJECT",
filter='metric.type="storage.googleapis.com/storage/total_bytes"',
interval=...,
view=monitoring_v3.ListTimeSeriesRequest.TimeSeriesView.FULL
)实际使用建议
根据不同需求,我的推荐组合:
| 目标 | 推荐方案 |
|---|---|
| 防止意外超额扣费 | Budget API 设 $1 告警 |
| 精确查每个服务用了多少 | BigQuery Export + SQL |
| 实时监控某个服务指标 | Cloud Monitoring API |
说实话,GCP 的 Always Free 层级在三大云厂商(AWS、Azure、GCP)中是最慷慨的。一个 e2-micro VM 加上 Cloud Storage 5 GB 加上 BigQuery 1 TB 查询,这个组合对于个人开发者和小型项目来说,完全可以跑起来零成本的完整技术栈。
关键不是省多少钱,而是这些免费额度给了你一个低风险的环境去学习和实验。不需要信用卡过期之前拼命用完 $300,也不需要担心忘关某个服务导致下个月账单爆炸。
用好免费层,比贪多嚼不烂的试用额度实在得多。