Как устранить неполадку «Файл ... не существует!»ошибка (код 403) в gcloud - PullRequest
1 голос
/ 10 мая 2019

Я пытаюсь выполнить пример кода из cloud.googe.com , который преобразует образец аудиофайла в текст, но я получаю сообщение об ошибке, которое не имеет смысла.

Я прошел все указанные шаги:

  • Создать проект
  • Включить API преобразования речи в текст
  • Создать учетную запись службы
  • скачать приватный ключ в виде файла JSON
  • Я открываю Терминал (Версия 2.9.4 (421.1.1)) MacOS 10.14.4
  • Я выполняю следующий код для установки переменной среды: export GOOGLE_APPLICATION_CREDENTIALS="[PATH]" (путь - это местоположение загруженного мной файла JSON)
  • Затем я создаю файл запроса JSON, который, как они говорят, создают, в основном это инструкции для получения образца аудиофайла.
  • Затем я выполняю следующий код после инициализации gcloud и проверки того, что я нахожусь в том же каталоге, в котором содержится созданный мной файл запроса JSON:
curl -s -H "Content-Type: application/json" \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    https://speech.googleapis.com/v1/speech:recognize \
    -d @sync-request.json

Итак, вместо того, чтобы получить ответ, который будет получен на странице учебника, я получаю сообщение об ошибке, которого нет на странице справки GCP:

ERROR: (gcloud.auth.application-default.print-access-token) File /pathofFile/nameofFile.json (pointed by GOOGLE_APPLICATION_CREDENTIALS environment variable) does not exist!
{
  "error": {
    "code": 403,
    "message": "The request is missing a valid API key.",
    "status": "PERMISSION_DENIED"
  }
}

Эта ошибка, очевидно, не связана с тем, что я не смог установить переменную среды, поскольку в сообщении об ошибке указано «(указано переменной среды GOOGLE_APPLICATION_CREDENTIALS)», а в сообщении об ошибке отображается правильный путь к правильному файлу учетных данных JSON. Файл учетных данных JSON точно есть; Я вижу это в поиске.

Что здесь может пойти не так?

Редактировать : Когда я попытался запустить gcloud auth application-default login или же gcloud auth application-default print-access-token, Я получил сообщение об ошибке gcloud: command not found

Похоже, у меня не был полностью установлен Cloud SDK. Теперь мне интересно, какие компоненты SDK мне нужно установить, чтобы выполнить эту задачу. Что из следующего мне нужно будет установить?

The latest available version is: 246.0.0

┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│                                                   Components                                                   │
├──────────────────┬──────────────────────────────────────────────────────┬──────────────────────────┬───────────┤
│      Status      │                         Name                         │            ID            │    Size   │
├──────────────────┼──────────────────────────────────────────────────────┼──────────────────────────┼───────────┤
│ Update Available │ BigQuery Command Line Tool                           │ bq                       │   < 1 MiB │
│ Update Available │ Cloud SDK Core Libraries                             │ core                     │  10.5 MiB │
│ Not Installed    │ App Engine Go Extensions                             │ app-engine-go            │  56.4 MiB │
│ Not Installed    │ Cloud Bigtable Command Line Tool                     │ cbt                      │   6.3 MiB │
│ Not Installed    │ Cloud Bigtable Emulator                              │ bigtable                 │   5.6 MiB │
│ Not Installed    │ Cloud Datalab Command Line Tool                      │ datalab                  │   < 1 MiB │
│ Not Installed    │ Cloud Datastore Emulator                             │ cloud-datastore-emulator │  18.4 MiB │
│ Not Installed    │ Cloud Datastore Emulator (Legacy)                    │ gcd-emulator             │  38.1 MiB │
│ Not Installed    │ Cloud Firestore Emulator                             │ cloud-firestore-emulator │  40.5 MiB │
│ Not Installed    │ Cloud Pub/Sub Emulator                               │ pubsub-emulator          │  34.8 MiB │
│ Not Installed    │ Cloud SQL Proxy                                      │ cloud_sql_proxy          │   3.7 MiB │
│ Not Installed    │ Emulator Reverse Proxy                               │ emulator-reverse-proxy   │  14.5 MiB │
│ Not Installed    │ Google Cloud Build Local Builder                     │ cloud-build-local        │   5.9 MiB │
│ Not Installed    │ Google Container Registry's Docker credential helper │ docker-credential-gcr    │   1.8 MiB │
│ Not Installed    │ gcloud Alpha Commands                                │ alpha                    │   < 1 MiB │
│ Not Installed    │ gcloud Beta Commands                                 │ beta                     │   < 1 MiB │
│ Not Installed    │ gcloud app Java Extensions                           │ app-engine-java          │ 105.6 MiB │
│ Not Installed    │ gcloud app PHP Extensions                            │ app-engine-php           │  21.9 MiB │
│ Not Installed    │ gcloud app Python Extensions                         │ app-engine-python        │   6.0 MiB │
│ Not Installed    │ gcloud app Python Extensions (Extra Libraries)       │ app-engine-python-extras │  28.5 MiB │
│ Not Installed    │ kubectl                                              │ kubectl                  │   < 1 MiB │
│ Installed        │ Cloud Storage Command Line Tool                      │ gsutil                   │   3.8 MiB │
└──────────────────┴──────────────────────────────────────────────────────┴──────────────────────────┴───────────┘
To install or remove components at your current SDK version [245.0.0], run:
  $ gcloud components install COMPONENT_ID
  $ gcloud components remove COMPONENT_ID

Редактировать : Большое спасибо за помощь всем. В итоге я переустановил SDK. Прежде чем я установил SDK, сначала загрузив файлы, а затем запустив ./google-cloud-sdk/install.sh

Но на этот раз я удалил все файлы SDK на моем компьютере и запустил curl https://sdk.cloud.google.com | bash Кроме того, я позаботился о том, чтобы сохранить каталог "google-cloud-sdk" в моем корневом каталоге, что позволило мне использовать путь к файлу .rc по умолчанию.

1 Ответ

0 голосов
/ 14 мая 2019

Команда cURL использует инструмент gcloud для аутентификации: gcloud auth application-default print-access-token. Поскольку вы используете локальный компьютер для запуска или отправки запросов API, вам потребуется установить и инициализировать Cloud SDK (MAC) на своем компьютере, чтобы использовать инструмент gcloud.

...