Запрос 403 имел недостаточные области аутентификации. При выполнении запросов к google cloud NLP API с учетными данными приложения по умолчанию

#google-cloud-platform #nlp

#google-cloud-platform #nlp

Вопрос:

Мне нужно отправлять запросы из скрипта python, который размещен на уже созданном экземпляре Google Cloud Compute engine, в google cloud NLP API. Итак, я выполнил шаги, которые были необходимы для выполнения этой задачи.

  1. Я активировал NLP API для своего проекта, который также включает экземпляр виртуальной машины
  2. Я загрузил служебный ключ (в формате JSON) для учетной записи службы по умолчанию, которая была создана с помощью виртуальной машины (потому что я пытаюсь пройти аутентификацию с учетными данными приложения по умолчанию)
  3. Я установил переменную среды GOOGLE_APPLICATION_CREDENTIALS в путь к загруженным ключам
  4. Установлена клиентская библиотека Google Cloud для python

Затем я продолжил проверять, работают ли учетные данные, запустив пример с Google storage API, и он вернул пустой список, что означает, что он работал так, как предполагалось.

Но я получаю следующую ошибку при попытке выполнить вызовы NLP API

  Traceback (most recent call last):
 File "/home/user/anaconda3/lib/python3.7/site- 
 packages/google/api_core/grpc_helpers.py", line 57, in 
 error_remapped_callable
 return callable_(*args, **kwargs)
 File "/home/user/anaconda3/lib/python3.7/site- 
 packages/grpc/_channel.py", line 549, in __call__
 return _end_unary_response_blocking(state, call, False, None)
 File "/home/user/anaconda3/lib/python3.7/site- 
 packages/grpc/_channel.py", line 466, in _end_unary_response_blocking
 raise _Rendezvous(state, None, None, deadline)
 grpc._channel._Rendezvous: <_Rendezvous of RPC that terminated with:
 status = StatusCode.PERMISSION_DENIED
 details = "Request had insufficient authentication scopes."
 debug_error_string = " 
 {"created":"@1552931720.241957477","description":"Error received from peer","file":"src/core/lib/surface/call.cc","file_line":1039,"grpc_message":"Request had insufficient authentication scopes.","grpc_status":7}">

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/user/anaconda3/lib/python3.7/site- 
packages/google/cloud/language_v1/gapic/language_service_client.py", 
line 230, in analyze_sentiment
request, retry=retry, timeout=timeout, metadata=metadata
File "/home/user/anaconda3/lib/python3.7/site- 
packages/google/api_core/gapic_v1/method.py", line 143, in __call__
return wrapped_func(*args, **kwargs)
File "/home/user/anaconda3/lib/python3.7/site- 
packages/google/api_core/retry.py", line 270, in retry_wrapped_func
on_error=on_error,
File "/home/user/anaconda3/lib/python3.7/site- 
packages/google/api_core/retry.py", line 179, in retry_target
return target()
File "/home/usere/anaconda3/lib/python3.7/site- 
packages/google/api_core/timeout.py", line 214, in func_with_timeout
return func(*args, **kwargs)
File "/home/user/anaconda3/lib/python3.7/site- 
packages/google/api_core/grpc_helpers.py", line 59, in 
error_remapped_callable
six.raise_from(exceptions.from_grpc_error(exc), exc)
File "<string>", line 3, in raise_from
google.api_core.exceptions.PermissionDenied: 403 Request had 
insufficient authentication scopes.
  

Есть идеи, почему это происходит?