0

Из узла я пытаюсь использовать API Google Cloud Vision для анализа изображения, хранящегося в Google Storage. Я успешно base64 закодировал изображение и загрузил его, но хотел бы ускорить процесс, выполнив против файлов, которые у меня есть в Google Storage. Мой запрос таков:Авторизовать API Google Cloud Vision для хранилища Google image

{"request": [{"image": {"source": {"gcsImageUri": "gs: //mybucket/10001.jpg"}}, "features": [{ "Тип": "LABEL_DETECTION", "maxResults": 10}]}]}

, но я получаю эту ошибку от моего вызова,

{ "ответы": [{ "ошибка": { "код" : 7, «message»: «image-annotator :: Пользователь не имеет разрешения: ACCESS_DENIED: У анонимных абонентов нет доступа к хранилищу.objects.get к объекту mybucket/10001.jpg." }}]}

Я не использую ни один из SDK Google или node_modules для этого запроса, просто ключ API браузера и модуль http. Существуют ли некоторые разрешения, которые я должен установить в Cloud Storage, чтобы позволить Vision API доступ к объектам в ведре? Если да, то что бы это было, я новичок в Облачной платформе Google, но имею большой опыт работы с ролими IAM AWS.

Спасибо, VIPER

ответ

2

Вы, вероятно, вызывая API Cloud Видения анонимно с ГКС изображение, которое не читаемый. Вероятно, вы предоставляете ключ API, но ключи API не аутентифицируют запрос. Вы можете решить эту проблему одним из двух способов:

  1. Сделать аутентификацию запрос на API Cloud Vision, аутентичности в качестве конкретного пользователя, который имеет разрешение на чтение файла ГКС или

  2. Установить GCS, чтобы разрешить анонимный доступ для чтения. Вы можете сделать это с консоли, установив флажок «общедоступный» на объект или используя клиент командной строки следующим образом: gsutil acl ch -g AllUsers:R gs://mybucket/10001.jpg.

+0

Отлично. Итак, продвигаясь вперед, используя google-auth-library-nodejs, я смог получить заголовок авторизации, который включал токен-носитель, теперь, когда я делаю вызов w/добавленный токен, я получаю эту ошибку, «сообщение»: «Проект имеет не активирован API vision.googleapis.com. Включите API для проекта google.com:cloudsdktool (# 32555940559). " Любая идея, как «активировать» это для учетной записи службы, которую я использую? Спасибо! – Viper

+0

Если API Vision не включен для вашего проекта, нажмите эту ссылку: https://console.developers.google.com/apis/api/vision.googleapis.com/overview, затем убедитесь, что ваш проект выбран в вверху справа, затем нажмите «Включить». Однако, я не думаю, что это ваша проблема: «google.com:cloudsdktool» - это не ваш проект. Это демонстрационный проект. Убедитесь, что вы выполняете аутентификацию с помощью идентификатора клиента вашего собственного проекта, а не демонстрационного проекта. –

+1

Похоже, вы используете 'gcloud auth login' для получения вашего токена авторизации. Попробуйте загрузить [ключ учетной записи службы] (https://developers.google.com/identity/protocols/OAuth2ServiceAccount#creatinganaccount) и вместо этого используйте 'gcloud auth activate-service-account' или [setting] (https: // developers .google.com/identity/protocols/application-default-credentials # howtheywork) переменную среды GOOGLE_APPLICATION_CREDENTIALS, путь к файлу json учетной записи службы. – jerjou

0

На самом деле есть два ways.First путь 1) Откройте ведро вашего Google облако видения и будет вариантом под названием «публикует» и отметьте это да для документа, который вы хотели бы проверить . Затем запустите код, и вы получите требуемый результат.