Google Cloudのサービスアカウントキーファイルを環境変数に設定する

Google Cloudのサービスアカウントキーファイルを環境変数に設定する

2021-01-19
gcp, golang

Google Translation APIのガイドでは、Advanced Editionを使用する場合、サービスアカウントのキーファイルを使用するように案内されております。しかし、認証情報をストレージに配置したくない場合もあるかと思います。
このような場合、次のようにすればサービスアカウントのキーファイルを環境変数で使用できます。

サービスアカウントキーファイルの JSON を環境変数に設定する 

次のコマンドでキーファイル内のJSONを1行の文字列にします。

$ cat <GOOGLE_APPLICATION_CREDENTIALS key.json> | tr -d '\n'  

利用している環境に応じて、環境変数に設定します。

# e.g. .env
GOOGLE_API_KEY=<上記のコマンドで出力した1行のJSON文字列>

WithCredentialsJSONで認証情報を読み込む

クライアント構造体を作るとき、WithCredentialsJSON で環境変数のJSONを読み込むようにします。

client, err := translate.NewTranslationClient(ctx, option.WithCredentialsJSON([]byte(os.Getenv("GOOGLE_API_KEY"))))
if err != nil {
    return fmt.Errorf("api initialize error: %w", err)
}
defer client.Close()
...

ためしに、option.WithAPIKeyでクライアント構造体を作ろうとしたのですが、“GRPCではサポートしていない"と表示されました。

Ref.

環境でのサービス アカウント キー ファイルの使用 2021.1.19