2

我正在尝试使用调用 IAM api curl,特别是organizations.roles.list方法。

https://cloud.google.com/iam/reference/rest/v1/organizations.roles/list

从文档中,我的请求应该是这样构造的:

https://iam.googleapis.com/v1/organizations/<org-id>/roles

但是,调用它会导致此错误:

{ "error": { "code": 404, "message": "Method ListRoles not found for service iam.googleapis.com", "status": "NOT_FOUND" } }

完整请求:curl -H "Authorization: Bearer $(gcloud auth print-access-token)" https://iam.googleapis.com/v1/organizations/<org-id>/roles

我究竟做错了什么?

4

1 回答 1

0

根据文档,端点https://iam.googleapis.com/v1/organizations/<ORG_ID>/roles用于列出在组织级别定义的角色(即自定义角色)。

要获取默认角色列表(预定义角色、策划角色,无论您想调用它们...),您必须调用 API 而不指定任何资源:

curl -H"Authorization: Bearer $(gcloud auth print-access-token)" https://iam.googleapis.com/v1/roles

因此,要获取资源中角色的完整列表(无论是项目还是组织),您必须获取精选角色并将它们聚合到资源级别定义的自定义角色和父级定义的自定义角色资源(因此,要获得项目中的角色,您可以获得策划的角色+项目自定义角色+父组织自定义角色)。

至于您收到的错误,我现在测试时没有收到。我已经进行了一些测试,并且收到:

  • 403 当我没有适当的权限时
  • {}当没有定义自定义角色时,200 响应为空 ( )
  • 当资源中定义了自定义角色时,200 具有文档中定义的角色列表

由于问题来自 17 年 7 月,并且自定义角色于 17 年 9 月开始测试,我假设您测试 API 的速度太快,这就是您收到 404 的原因。

于 2018-06-23T16:55:35.193 回答