Проблемы с аутентификацией в Google Cloud AutoML - PullRequest
0 голосов
/ 11 января 2020

Я делал демонстрацию Google Cloud AutoML для извлечения сущностей и столкнулся с несколькими проблемами аутентификации. Я создал модель, используя примеры, которые они нам дали, и моя модель создана и развернута. Тем не менее, я не могу получить свои данные. Вот учебный раздел , который я использую, и вот код , который я пытаюсь запустить.

Я заполнил правильные значения project_id и model_id, но дело в том, что я не могу запустить программу без этой ошибки:

(venv) C:\Users\willi\Documents\machinelearningtest>py retrieveresult.py
Traceback (most recent call last):
  File "C:\Users\willi\Documents\machinelearningtest\venv\lib\site-packages\google\api_core\grpc_helpers.py", line 57, in error_remapped_callable
    return callable_(*args, **kwargs)
  File "C:\Users\willi\Documents\machinelearningtest\venv\lib\site-packages\grpc\_channel.py", line 824, in __call__
    return _end_unary_response_blocking(state, call, False, None)
  File "C:\Users\willi\Documents\machinelearningtest\venv\lib\site-packages\grpc\_channel.py", line 726, in _end_unary_response_blocking
    raise _InactiveRpcError(state)
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
        status = StatusCode.PERMISSION_DENIED
        details = "The caller does not have permission"
        debug_error_string = "{"created":"@1578714342.247000000","description":"Error received from peer ipv4:172.217.14.74:443","file":"src/core/lib/surface/call.cc","file_line":1056,"grpc_message":"The caller does not have permission","grpc_status":7}"
>

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

Traceback (most recent call last):
  File "retrieveresult.py", line 20, in <module>
    response = prediction_client.predict(model_full_id, payload)
  File "C:\Users\willi\Documents\machinelearningtest\venv\lib\site-packages\google\cloud\automl_v1\gapic\prediction_service_client.py", line 322, in predict
    return self._inner_api_calls["predict"](
  File "C:\Users\willi\Documents\machinelearningtest\venv\lib\site-packages\google\api_core\gapic_v1\method.py", line 143, in __call__
    return wrapped_func(*args, **kwargs)
  File "C:\Users\willi\Documents\machinelearningtest\venv\lib\site-packages\google\api_core\retry.py", line 281, in retry_wrapped_func
    return retry_target(
  File "C:\Users\willi\Documents\machinelearningtest\venv\lib\site-packages\google\api_core\retry.py", line 184, in retry_target
    return target()
  File "C:\Users\willi\Documents\machinelearningtest\venv\lib\site-packages\google\api_core\timeout.py", line 214, in func_with_timeout
    return func(*args, **kwargs)
  File "C:\Users\willi\Documents\machinelearningtest\venv\lib\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 The caller does not have permission

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

1 Ответ

0 голосов
/ 11 января 2020

Из официальной документации GCP :

  1. Убедитесь, что API-интерфейс AutoML включен для вашего проекта - ссылка

  2. Создайте учетную запись службы , которую вы будете использовать для аутентификации - учетные записи службы являются единственной опцией аутентификации, доступной с AutoML API .

  3. Создание и загрузка файла ключа для этой учетной записи службы.

  4. Задайте для переменной среды GOOGLE_APPLICATION_CREDENTIALS путь к файлу ключа учетной записи службы. который вы скачали при создании учетной записи службы:

    • export GOOGLE_APPLICATION_CREDENTIALS=key-file
  5. Задайте для переменной среды PROJECT_ID идентификатор проекта. Вызовы API AutoML и имена ресурсов включают в себя ваш ID проекта. Переменная среды PROJECT_ID предоставляет удобный способ указать идентификатор:

    • export PROJECT_ID=your-project-id
  6. Если вы являетесь владельцем своего проекта, добавьте свою служебную учетную запись с ролью AutoML Editor IAM, заменив «service-account-name» именем новой учетной записи службы. Например, service-account1@myproject.iam.gserviceaccount.com:


gcloud auth login
gcloud projects add-iam-policy-binding $PROJECT_ID \
   --member="serviceAccount:service-account-name" \
   --role="roles/automl.editor"

Если вы не являетесь владельцем проекта, попросите владельца проекта добавить свой идентификатор пользователя и учетную запись службы в роль IAM редактора AutoML
...