У меня 5-строчный скрипт Python, который не работает.
GCP указывает на проблему с проблемой разрешений GCP-API.Я не уверен, хотя он говорит мне правду.
Вот синтаксис Python:
import googleapiclient.discovery
compute = googleapiclient.discovery.build('compute', 'v1')
project_s = 'shining-sol-241621'
zone_s = 'us-central1-a'
result = compute.instances().list(project=project_s, zone=zone_s).execute()
Приведенный выше синтаксис зависит от установки переменной env:
export GOOGLE_APPLICATION_CREDENTIALS=$HOME/secret.json
Когда я запускаю синтаксис Python, я вижу:
$ python3
Python 3.5.2 (default, Nov 12 2018, 13:43:14)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import googleapiclient.discovery
>>> compute = googleapiclient.discovery.build('compute', 'v1')
>>> project_s = 'shining-sol-241621'
>>> zone_s = 'us-central1-a'
>>> result = compute.instances().list(project=project_s, zone=zone_s).execute()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.5/dist-packages/googleapiclient/_helpers.py", line 130, in positional_wrapper
return wrapped(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/googleapiclient/http.py", line 851, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/compute/v1/projects/shining-sol-241621/zones/us-central1-a/instances?alt=json returned "Required 'compute.instances.list' permission for 'projects/shining-sol-241621'">
>>> >>>
Выше я вижу это сообщение об ошибке:
«Требуется» разрешение compute.instances.list для проектов/ shining-sol-241621 '"
По этому URL:
https://console.cloud.google.com/iam-admin/iam?project=shining-sol-241621
Когда я смотрю разрешения учетной записи службы, прикрепленные к моему файлу secret.json, явижу, что я прикрепил эти разрешения к учетной записи:
- Compute Admin
- Compute Instance Admin (бета)
- Compute Instance Admin (v1)
- Compute Viewer
- Администратор безопасности
- Владелец
Когда я прикрепил разрешения к служебной учетной записи, я не увидел доступных разрешений, похожих на: 'compute.instances.list '
Я заметил, что разрешение Compute Admin имеет следующее описание:
"Полный контроль надвсе ресурсы Compute Engine "
Это описание подсказывает мне, что разрешение должно быть в состоянии сделать: 'compute.instances.list'
Я подозреваю, что GCP сообщает мне, что у меня естьпроблема с разрешениями, но проблема в другом месте.
Исходя из моего описания, какие бы хорошие вопросы можно было задать, чтобы преодолеть это плохое поведение API?