web-dev-qa-db-ja.com

GoogleクラウドストレージにアクセスするAppEngineプロジェクトのデフォルトの認証情報?

アプリエンジンプロジェクトがあります。Googleクラウドストレージのデフォルトバケットにアクセスしたいと思います。資格情報オブジェクトを取得する最初のステップは失敗し、ライブインスタンスで次のことを行います。

Credential creds = GoogleCredential.getApplicationDefault();

私が受け取る例外メッセージ:

「アプリケーションのデフォルトの認証情報は利用できません。GoogleComputeEngineで実行している場合は利用できます。それ以外の場合は、認証情報を定義するファイルを指す環境変数GOOGLE_APPLICATION_CREDENTIALSを定義する必要があります。 https://developers.google.com)を参照してください。詳細については、/ accounts/docs/application-default-credentials をご覧ください。」

ここのドキュメントには、本番アプリエンジンプロジェクトはデフォルトの認証情報にアクセスできる必要があると書かれていますか?:

https://developers.google.com/identity/protocols/application-default-credentials

「3.GoogleApp Engineの本番環境で実行している場合は、アプリケーションに関連付けられている組み込みのサービスアカウントが使用されます。」

不足しているセットアップはありますか?

私のアプリエンジンバージョン(gradle):

com.google.appengine:appengine-Java-sdk:1.9.18

およびGoogleクラウドストレージのライブラリバージョン:

com.google.apis:google-api-services-storage:v1-rev35-1.20.0

ありがとう

13
user1219278

Google Developers Console-> Credentialsに移動し、デフォルトのサービスアカウント.jsonキーを作成します。これを行うと、_default-account-credentials.json_のようなファイルがダウンロードされます。次に、そのファイルをAppEngineプロジェクトのどこかに配置する必要があります。このファイルは、呼び出すときに参照されます

Credential creds = GoogleCredential.getApplicationDefault();

ただし、それが機能する前に、環境変数をそのファイルの場所に設定する必要があります。これを行うには、_appengine-web.xml_ファイルを開き、次の行をそのファイルに挿入します。

_<env-variables>
            <env-var name="GOOGLE_APPLICATION_CREDENTIALS"
                value="WEB-INF/default-account-credentials.json" />
        </env-variables>
_

ここで、valueは、ダウンロードした_.json_ credsファイルへのパスです。

今それは動作します。 (gradleのインポートは問題ありません)

7
Micro