权限云资源管理器API



我正在开发一个应用程序,需要从开发人员控制台创建、编辑和删除项目。

为此,我正在使用云资源管理器API。

需要OAuth2.0向API发出请求,所以我使用OAuth2.0服务器到服务器(两条腿的OAuth或2LO(

一旦我有了授权令牌,我就向API请求创建一个新项目,并被告知我没有许可证:The caller has no permissions

但是,如果我要求列出所有项目,我会得到正确的答复。

如何获得许可?

我遵循了所有步骤,使用OAuth 2.0服务器到服务器,并拥有一个Work的Google帐户,服务帐户具有所有者角色和域的委派。

谢谢!!

我太懒了,无法手动运行OAuth身份验证路径,所以我总是使用旧的gcloud auth print-access-token技巧。

我的工作:

  1. 创建服务帐户密钥文件:gcloud iam service-accounts keys create <PATH/TO/YOUR_KEY_FILE>.json --iam-account=<YOUR_SERVICE_ACCOUNT>

  2. 激活该帐户:gcloud auth activate-service-account <YOUR_SERVICE_ACCOUNT> --key-file=<PATH/TO/YOUR_KEY_FILE>.json

  3. 使用您的新项目调用API:curl -H"Authorization: Bearer $(gcloud auth print-access-token)" -H'content-type:application/json' https://cloudresourcemanager.googleapis.com/v1/projects -d'{"projectId": "<YOUR_PROJECT_ID>", "parent":{"type":"organization","id":"<YOUR_ORG_ID>"}}'

  4. 这将返回一个操作ID,您可以查询它,直到它完成:curl -H"Authorization: Bearer $(gcloud auth print-access-token)" https://cloudresourcemanager.googleapis.com/v1/operations/<OPERATION_ID>

这是我通过普通外壳所做的。您可以使用Google的一个auth库将其外推到任何脚本,并将env变量GOOGLE_APPLICATION_CREDENTIALS设置为步骤1中选择的路径,如GCP auth-docs中所述。谷歌的身份验证库将直接为您提供访问令牌。

对于更简单的解决方案,您可以简单地使用您的语言的云资源管理器客户端库。您只需下载密钥文件,设置GOOGLE_APPLICATION_CREDENTIALSenv变量,客户端就会为您完成所有工作。如果您在GCP(GAE、GCF、GCE、GKE…(中运行此脚本,那么库很可能可以直接从平台获取凭据,甚至无需创建密钥或设置任何env变量。

最新更新