PERMISSION_DENIED:调用者没有权限

问题描述

我正在尝试使用服务帐户和密钥文件调用预算 API,但出现此错误

PERMISSION_DENIED:调用没有权限

我的代码

async function listBillingAccounts() {
    const [account] = await client.getBillingAccount({ name: `billingAccounts/${BILLING_ACCOUNT_ID}` });
    console.info({ account });
}
listBillingAccounts();

我的 CLI 设置

gcloud config set project my-project-id

Their Docs 中提到的环境变量:

价值
GOOGLE_APPLICATION_CREDENTIALS path\to\gcp-credentials.json
GCP_PROJECT 我的项目编号

服务帐号设置

当我转到 https://console.cloud.google.com/iam-admin/iam?project=my-project-id 时,它会在表中显示服务帐户:

会员 姓名 角色 继承
[email protected] 所有者 所有者 我的项目编号

我不知道接下来要做什么。

解决方法

项目的 owner 角色未授予您查看结算帐户信息的必要权限。

根据API documentation描述getBillingAccount操作时:

获取有关结算帐户的信息。当前经过身份验证的用户必须是结算帐号的查看者。

您可以在组织或结算帐号级别授予结算帐号查看者的权限。请参阅相关的 docs