如何将现有 billing account 关联到新的 App Engine 项目?
明确结论
Billing account 与 Google Cloud 项目的关联属于项目级配置。创建新的 App Engine 项目时,无须重新创建账号。只要你对新项目和现有 Cloud Billing account 拥有相应权限,就能直接在 Google Cloud Console 中关联。
如果控制台只显示“创建新的 billing account”,常见原因有:
- 当前登录账号无权将项目关联到现有 billing account;
- 现有 billing account 已关闭或被冻结;
- 登录账号有误,或 billing account 位于另一个组织,而该组织尚未向你授权;
- 你看到的是 Google Payments profile,并非可关联项目的 Google Cloud Billing account。
在 Google Cloud Console 中关联
控制台界面的名称可能随版本变化,但操作路径通常是:
- 登录 Google Cloud Console。
- 在项目选择器中切换到新项目。
- 打开 Billing(结算)。
- 选择 Link a billing account(关联结算账号) 或 Manage billing accounts(管理结算账号)。
- 从列表中选择已有的 billing account。
- 点击 Set account(设置账号) 或 Link account(关联账号)。
你也可以从 billing account 页面操作:
- 打开 Billing。
- 进入 My projects(我的项目)。
- 找到新项目。
- 打开项目右侧的操作菜单,选择 Change billing(更改结算账号)。
- 选择现有 billing account 并确认。
关联后,App Engine、Compute Engine、Cloud Storage 等服务产生的费用都会计入该项目关联的 billing account。一个项目同一时间只能关联一个 billing account,一个 billing account 则可以关联多个项目。
使用 gcloud 命令关联
如果在控制台中找不到相应入口,可以使用 Google Cloud CLI:
gcloud billing projects link PROJECT_ID \
--billing-account=BILLING_ACCOUNT_ID
例如:
gcloud billing projects link my-new-app-project \
--billing-account=012345-ABCDEF-678901
列出当前可访问的 billing account:
gcloud billing accounts list
查看项目当前的 billing 配置:
gcloud billing projects describe PROJECT_ID
关联成功后,输出通常包含类似内容:
billingAccountName: billingAccounts/012345-ABCDEF-678901
billingEnabled: true
name: projects/my-new-app-project/billingInfo
projectId: my-new-app-project
命令中的 PROJECT_ID 必须是项目 ID,不能使用项目显示名称或项目编号。
所需权限
关联项目与 billing account 时,需要同时满足两项权限要求:
- 能够修改目标项目的 billing 关联;
- 能够将项目关联到现有 billing account。
常用的预定义 IAM 角色组合是:
- 项目上的 Project Billing Manager,即
roles/billing.projectManager; - billing account 上的 Billing Account User,即
roles/billing.user。
项目 Owner 或组织管理员未必自动拥有 billing account 的使用权限。billing account 管理员可以通过以下路径授权:
Billing
→ 选择现有 billing account
→ Account management
→ Permissions / IAM
→ 添加成员
→ Billing Account User
如果 gcloud billing accounts list 没有显示已有账号,先检查当前使用的身份:
gcloud auth list
需要时切换账号:
gcloud config set account USER@example.com
为什么只出现创建新账号的表单
控制台只会列出当前用户有权使用的 Cloud Billing accounts。如果没有任何可用账号,页面通常会引导你创建新账号,而不会显示你无权访问的现有账号。
遇到这种情况,不要急着重复创建 billing account。先检查:
- 当前登录邮箱是否与早期项目使用的邮箱一致;
- 现有 billing account 的状态是否为
OPEN; - 当前用户是否拥有
roles/billing.user或相应的自定义权限; - 新项目所在组织是否限制跨组织关联;
- 组织策略是否禁止项目关联外部 billing account。
如果账号属于公司或学校组织,一般需要 billing account 管理员授予权限,或请管理员代为关联。
注意事项
Billing 关联作用于整个 Google Cloud 项目,并非只针对 App Engine。关联完成后,不需要再为 App Engine 单独配置。
更换 billing account 不会迁移历史费用。更换前的费用仍保留在原账号中,之后产生的费用才会计入新关联的账号。如果项目已有资源正在运行,操作前还应确认预算、配额、税务设置和付款方式是否符合预期。
备注:内容仅供参考。
