Вызов IAM API, но получение ошибки - Method ListRoles не найдены для службы iam.googleapis.com

Я пытаюсь вызвать API-интерфейс IAM, используя 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 не найдены для службы iam.googleapis.com", "status": "NOT_FOUND"}}

Полный запрос: curl -H "Authorization: Bearer $(gcloud auth print-access-token)" https://iam.googleapis.com/v1/organizations/<org-id>/roles

Что я делаю неправильно?


person Graham Polley    schedule 18.07.2017    source источник
comment
Я предполагаю, что этот вопрос уже устарел (почти 1 год), но я скопировал ваш запрос curl, и он правильно вернул пользовательские роли в моей организации. Если это по-прежнему не удается, появляется ли идентификатор организации при попытке curl -H"Authorization: Bearer $(gcloud auth print-access-token)" -H'content-type: application/json' https://cloudresourcemana ger.googleapis.com/v1/organizations:search -d'{}'?   -  person Jofre    schedule 23.06.2018
comment
Я только что проверил примечания к выпуску IAM API, и оказалось, что эти пользовательские роли не вошли в бета-версию до сентября 2017 года. Поскольку ваш вопрос от июля '17, я предполагаю, что теперь он работает правильно, и ошибка была связана с тем, что он не был выпущен в то время.   -  person Jofre    schedule 23.06.2018


Ответы (1)


Согласно документации, конечная точка 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 со списком ролей , как определено в документации, когда есть настраиваемые роли, определенные в ресурсе

Поскольку вопрос задан в июле 2017 г., а бета-тестирование пользовательских ролей началось в сентябре '17, я предполагаю, что вы слишком быстро протестировали API, и это причина того, что вы получили 404.

person Jofre    schedule 23.06.2018