Итак, я пытаюсь создать проект с помощью менеджера развертывания облака Google, Ive структурировал настройку примерно так:
# Structure
Org -> Folder1 -> Seed-Project(Location where I am running deployment manager from)
Organization:
IAM:
-> {Seed-Project-Number}@cloudservices.gserviceaccount.com:
- Compute Network Admin
- Compute Shared VPC Admin
- Organisation Viewer
- Project Creator
# DeploymentManager Resource:
type cloudresourcemanager.v1.project
name MyNewProject
parent
id: '{folder1-id}'
type: folder
projectId: MyNewProject
Желаемый результат - создание MyNewProject в папке Folder1.Тем не мение;Похоже, что учетная запись службы администратора развертывания не имеет достаточных разрешений:
$ CLOUDSDK_CORE_PROJECT=Seed-Project gcloud deployment-manager deployments \
create MyNewDeployment \
--config config.yaml \
--verbosity=debug
Сообщение об ошибке:
- code: RESOURCE_ERROR
location: /deployments/MyNewDeployment/resources/MyNewProject
message: '{"ResourceType":"cloudresourcemanager.v1.project",
"ResourceErrorCode":"403","ResourceErrorMessage":{"code":403,"message":"The
caller does not have permission","status":"PERMISSION_DENIED","statusMessage":"Forbidden","requestPath":"https://cloudresourcemanager.googleapis.com/v1/projects/MyNewProject","httpMethod":"GET"}}'
Я провел некоторое копание, и, похоже, он вызывает resourcemanager.projects.get метод;Роль 'Compute Shared VPC Admin (role / compute.xpnAdmin)' должна предоставить это разрешение, как описано здесь: https://cloud.google.com/iam/docs/understanding-roles
За исключением случаев, когда это не так, чтопроисходит?
Редактировать
Я хотел бы добавить дополнительную информацию, собранную в результате отладки: это запросы API от администратора развертывания (из начального проекта).
Вы можете видеть, что вызывающий абонент является анонимной учетной записью службы, это не то, что id ожидает увидеть.(Я бы ожидал увидеть здесь {Seed-Project-Number‹@cloudservices.gserviceaccount.com в качестве вызывающей учетной записи)
![screenshot](https://i.stack.imgur.com/yBgPN.png)
Edit-2
config.yaml
imports:
- path: composite_types/project/project.py
name: project.py
resources:
- name: MyNewProject
type: project.py
properties:
parent:
type: folder
id: "{folder1-id}"
billingAccountId: billingAccounts/REDACTED
activateApis:
- compute.googleapis.com
- deploymentmanager.googleapis.com
- pubsub.googleapis.com
serviceAccounts: []
композитный_тип / проект / * - точная копия шаблонов, найденных здесь:
https://github.com/GoogleCloudPlatform/deploymentmanager-samples/tree/master/community/cloud-foundation/templates/project