Облачная платформа Google — могу ли я узнать причину ответа 403?

#google-cloud-platform #google-cloud-dataproc #google-cloud-logging

#google-cloud-platform #google-cloud-dataproc #google-cloud-logging

Вопрос:

Я использую https://dataproc.googleapis.com/v1/projects/{projectId}/regions/{region}/clusters для создания кластеров GCP Dataproc, как описано в https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.clusters/create .

Я использую учетные данные учетной записи службы, которые были экспортированы в файл ключей JSON. Эта учетная запись службы ( myserviceaccount@projectA.iam.gserviceaccount.com ) существует в ProjectA, и я смог использовать ее для успешного создания кластеров обработки данных в ProjectA.

Теперь мне нужно использовать ту же учетную запись службы для создания кластеров обработки данных в ProjectB. Я запускаю точно такой же код, используя точно такие же учетные данные, единственное отличие заключается в проекте, в котором я его создаю. Я предоставил myserviceaccount@projectA.iam.gserviceaccount.com точно такие же разрешения в ProjectB, что и в ProjectA, но когда я пытаюсь создать кластер, происходит сбой:

 2019-03-22 10:58:47 INFO: _retrieve_discovery_doc():272: URL being requested: GET https://www.googleapis.com/discovery/v1/apis/dataproc/v1/rest
2019-03-22 10:58:54 INFO: method():873: URL being requested: GET https://dataproc.googleapis.com/v1/projects/dh-coop-no-test-35889/regions/europe-west1/clusters?alt=json
2019-03-22 10:58:54 INFO: new_request():157: Attempting refresh to obtain initial access_token
2019-03-22 10:58:54 DEBUG: make_signed_jwt():100: [b'blahblahblah', b'blahblahblah']
2019-03-22 10:58:54 INFO: _do_refresh_request():777: Refreshing access_token
2019-03-22 10:58:55 WARNING: _should_retry_response():121: Encountered 403 Forbidden with reason "forbidden"
  

Итак, этой учетной записи службы запрещено создавать кластеры в ProjectB, но я не получаю никакой информации о том, почему. Я надеюсь, что есть какие-то журналы аудита, которые объясняют больше о том, почему запрос был запрещен, но я просмотрелhttps://console.cloud.google.com/logs/viewer?project=projectB и не могу найти ни одного.

Может кто-нибудь сказать мне, где я могу получить больше информации, чтобы определить, почему этот запрос не выполняется?

Комментарии:

1. Единственное, что вы могли бы сделать, это настроить gcloud на использование учетной записи службы. Запуск команд gcloud с помощью —log-http может дать дополнительную информацию.

2. Спасибо, я попробую это

3. Я только что попробовал это и смог создавать кластеры в своих ProjectA и ProjectB, используя учетную запись службы, созданную в ProjectA и добавленную в ProjectB с помощью roles / dataproc.admin. Связали ли вы выставление счетов и включили ли службу обработки данных в ProjectB?

Ответ №1:

Как упоминалось в комментариях, один из способов получить дополнительную информацию о сбойном запросе — настроить gcloud на использование учетной записи службы. Запуск команд gcloud с помощью —log-http также может дать дополнительную информацию.

Повторная вставка здесь для удобства чтения / наглядности.