Ошибка: пользователь не авторизован при создании проекта GCP с использованием служебного аккаунта
Я пытаюсь создать проект GCP программно с помощью Google API. Вот пример кода:
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: Ошибка: пользователь не авторизован.
Может ли кто-нибудь помочь мне, почему я получаю эту ошибку? И как я могу это исправить?
PS
- API Google Resource Manager включен.
- Учетная запись службы имеет разрешение роль = владелец.
1 ответ
Вы создаете проект внутри организации. Есть ли у пользователя роль Создателя проекта в организации?
При создании организации всем пользователям в вашем домене автоматически назначаются роли IAM "Создатель проекта" и "Создатель платежной учетной записи" на уровне организации. Это позволяет пользователям вашего домена продолжать создавать проекты без перебоев.
Администратор организации решит, когда они хотят начать активное использование организации. Затем они могут изменить разрешения по умолчанию и при необходимости применить более строгие политики.
Также, если вы аутентифицируетесь с использованием учетной записи службы (SA), тогда SA должна иметь роль