错误:使用服务帐户创建GCP项目时未授权用户

时间:2019-10-22 12:15:28

标签: node.js google-cloud-platform google-auth-library google-auth-library-nodejs

我正在尝试使用Google API以编程方式创建GCP项目。这是示例代码:

const {JWT} = require('google-auth-library')

async function main (keyFile = {PATH_TO_CREDENTIAL_FILE}) {
  const keys = require(keyFile)
  const client = new JWT({
    email: keys.client_email,
    key: keys.private_key,
    scopes: ['https://www.googleapis.com/auth/cloud-platform']
  })
  const url = 'https://cloudresourcemanager.googleapis.com/v1beta1/projects/'
  const data = {
    projectId: 'my-first-project',
    name: 'My First Project',
    parent: {
      type: 'organization',
      id: {ORGANIZATION_ID}
    }
  }
  const res = await client.request({
    url,
    method: 'POST',
    data: JSON.stringify(data)
  })
  console.log('project Info:')
  console.log(res.data)

  const tokenInfo = await client.getTokenInfo(client.credentials.access_token)
  console.log('tokenInfo', tokenInfo)
}

const args = process.argv.slice(2)
main(...args).catch(console.error)

运行此代码后,出现以下错误:

  

UnhandledPromiseRejectionWarning:错误:用户无权。

有人可以帮助我为什么我遇到此错误吗?我该如何解决?

P.S。

  • 已启用Google Resource Manager API。
  • 服务帐户具有role = owner权限。

1 个答案:

答案 0 :(得分:1)

您正在组织内创建项目。用户在组织中是否具有项目创建者角色?

创建组织后,将在组织级别自动授予您域中的所有用户Project Creator和“计费帐户创建者” IAM角色。这样一来,您域中的用户就可以继续创建项目而不会受到干扰。

组织管理员将决定何时开始积极使用组织。然后,他们可以更改默认权限并根据需要实施更多限制性政策

另外,如果您使用service account(SA)进行身份验证,则SA需要具有该角色