(初めてQiitaの記事を書きます。)
GoogleのCloud Speech-to-Textを使用するために公式のクイックスタートガイドを参照しながら進めてみたものの、APIキーが取得できず詰まった。
次の方法で無事に解決し、クイックスタートを完了することができた。
環境 : mac
引っかかっていたエラー
ここでは、ダウンロードした秘密鍵をservice-account-file.jsonと表記します。
公式のクイックスタートガイドの、「始める前に」の「2. 環境変数の設定」より次のように設定。
$ export GOOGLE_APPLICATION_CREDENTIALS="~/Download/service-account-file.json"
それから、「音声文字変換をリクエストする」の「2. curlを使用して~」より次のように実行すると次のエラーが発生した。
$ 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
ERROR: (gcloud.auth.application-default.print-access-token) File ~/Download/service-account-file.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"
}
}
解決できた方法
service-account-file.json
を、~/Download
ではなく、カレントディレクトリ./
に置いて
$ export GOOGLE_APPLICATION_CREDENTIALS="./service-account-file.json"
として、curl
を実行した。
すると、正常にレスポンスが表示された。
問題だったと思われること
公式のクイックスタートガイドの、「始める前に」の「2. 環境変数の設定」の例で、
$ export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"`
としていたため、それに習って**service-account-file.json
を、~/Download
(カレントディレクトリではない場所)に置いていた。**
これが原因だったと思われる。
しかし、以下のように確認するとservice-account-file.json
がreadできていないことが確認できた。
$ gcloud auth activate-service-account --key-file=~/Downloads/creative-mochi-ce695e1b1e22.json
ERROR: (gcloud.auth.activate-service-account) Unable to read file [~/Downloads/service-account-file.json]: [Errno 2] No such file or directory: '~/Downloads/service-account-file.json'
そこで試しにservice-account-file.json
をカレントディレクトリ./
に置いてみると
$ gcloud auth activate-service-account --key-file=./service-account-file.json
Activated service account credentials for: [username@XXXX.com]
無事に認証することができた。
解決できるまでに試していたこと・確認したこと
- トラブルシューティングを読む
- Google CloudのコンソールでAPIが有効になっているか
-
service-account-file.json
のアクセス権限の確認(readすることができるか) - プロキシに引っかかっていないか
-
service-account-file.json
のパスは正しく指定されているか
感想
解決するまでに20時間くらい悩んでしまったのでとても疲れた、Google大先生の公式のクイックスタートでこんなに詰まることがあるとは思わなかった。
一応、.jsonの場所を変えることで解決はできたが、何故カレントディレクトリでないと正常に実行できなかったかが不明のままなので、理由を見つけてスッキリしたい。
追記
今日初めてQiitaの記事(これ)を書いた。
習慣的に今後も書くようにしたい。