Google Cloud APIでIAMを使うとき(Translation v3など)

クラウド

≪≪この記事をすべて読むには約 4 分かかります≫≫

Google Cloud APIのうち最近のバージョンのものを使おうとするとき、APIキー制ではなくなっているものがあります。

私が触ったものだと、Google翻訳のAPI、Google Cloud TranlationのAdvanced(v3)です。ライブラリが公開されているので使い方は簡単ですが、これまでのAPI呼び出しと大きく異なり、サーバーに認証ファイルを置いておく必要がありました。このIAMの認証ファイルって、パーミッションどうしたら良いのでしょうか。

はまったポイントをいくつか書き残しておきます。

IAM設定が必要

Google Cloud Translation APIを使用しますが、これまでのAPIキーのようなものとは違う認証方式です。具体的には、Google CloudのページでTranslation APIを使用するユーザー権限(IAM)を追加する必要があります。

Google Cloudのプロジェクトに紐づけた権限(IAM)を設定します。サービスアカウント(Cloud Translation APIユーザー)を作成し、「サービスアカウント」のメニューからそのサービスアカウントに関連付けた鍵を作成してダウンロードします。Googleのクラウドコンピューティングだと楽にセットできるようですが、通常のサーバーでは、JSON形式の鍵をダウンロードする必要があります。

このJSON形式の鍵をPHPから使用します。

PHP環境変数の設定

PHPの環境変数を設定して実行しないといけません。環境変数の中身は、

GOOGLE_APPLICATION_CREDENTIALS=/PATH/SERVICEKEY.json

です。

一時使用ならシェルからexport

export $GOOGLE_APPLICATION_CREDENTIALS=/PATH/SERVICEKEY.json

GoogleのCloud Translation API v3を触ってみる
自然言語の翻訳APIに興味が出てきたのでちょっと触ってみることにします。ここではすでにテキスト情報になっており、日本語から英語など別の言語に自動的に変換してくれる物を想定しています。 すでに様々なサービスが世に出ています

PHP内ならputenv();

putenv(‘GOOGLE_APPLICATION_CREDENTIALS=/PATH/SERVICEKEY.json’);

で設定します。後半の変数部分に「””」を書いてしまってエラーになってしまっていました。気づくのに時間がかかりました。

一応ハードコードも可

jsonを読み込ませなくても、ハードコーディングするという方法もなくはないようですが、汎用性とセキュリティ面で危ないので避けるべきです。

PHP で GCP を利用する際の認証設定 - Qiita
PHP から GCP を利用するときの credentials の設定について調べてみると「サーバーの環境変数に設定しましょう」という記事が見つかる。必ずしもサーバーの環境変数を設定できる環境とは限らないので、今回は別の方法も調べて...

sourceLanguageが設定できなかった

ドキュメントを探しても見つけられなくて、Bing AIに何度聞いても「I am sorry.」と言われるので、ソースランゲージを設定する方法が見当たりません。

composer google/cloud-translate

require ‘vendor/autoload.php’;
use Google\Cloud\Translate\V3\TranslationServiceClient;

でも、APIそのものでも、設定項目値に原理的には入るようですが、指定方法がわからず。残念。自動判定にお任せで大体問題はなさそうですが。

コメント

タイトルとURLをコピーしました