2016-06-22 9 views
1

appengineウェブアプリケーション内からGoogle Cloud Storageにアクセスする際に認証に問題があります。私は、アプリケーションの既定の資格情報を使用します。たぶん誰かが私に助言することができます。gcloud:クラウドストレージ用appengineのデフォルトのアプリケーション認証情報(java)

私は、サービスアカウント「[email protected]」を持ったプロジェクトを持っています。

IAMのセクションでは、このプロジェクトのメンバーは、所有者がロールのyメンバーyygmail.com(自分のメールアドレス)のみです。

私は2つのCloud Storageバケットstaging.x.appspot.comとx.appspot.comを持っています。私はその権限を編集していません。

私はJavaで書かれたappengineウェブアプリを持っています。私は

mvn clean appengine:devserver 

で開発用サーバを起動して

mvn clean appengine:update 
で展開Mavenの依存関係

<dependency> 
     <groupId>com.google.appengine</groupId> 
     <artifactId>appengine-api-1.0-sdk</artifactId> 
     <version>1.9.38</version> 
    </dependency> 

    <dependency> 
     <groupId>com.google.auth</groupId> 
     <artifactId>google-auth-library-appengine</artifactId> 
     <version>0.4.0</version> 
    </dependency> 

    <dependency> 
     <groupId>com.google.cloud</groupId> 
     <artifactId>gcloud-java</artifactId> 
     <version>0.2.3</version> 
    </dependency> 

import com.google.cloud.AuthCredentials; 
    import com.google.cloud.storage.Storage; 

    AuthCredentials credentials=AuthCredentials.createApplicationDefaults(); 
    Storage storage=StorageOptions.builder().authCredentials(credentials).build().service(); 

:そのコードから、私はこのようなクラウドストレージにアクセスしたいです

それだけで十分だと思った。

しかし、あるコンピュータではdevserverで動作しますが、別のコンピュータでは「401無効な認証」などの例外が発生します。私はコンピュータの違いは何か分かりません。

デプロイされたアプリでは、禁止403例外が発生します。

に起因:com.google.api.client.googleapis.json.GoogleJsonResponseException:403 { "コード":403、 "エラー":[{ "ドメイン": "グローバル"、 「メッセージ": ""、 "禁じられた理由": "禁じられた" }]、 "メッセージ": "禁断" }

私が間違って何をしているのですか?

+1

https://developers.google.com/identity/protocols/application-default-credentials#toolsupportで、App Engine自体で実行しているときにアプリケーションのデフォルトの認証情報が正常に動作するはずですが、Appengineを起動するとデフォルトでローカルでしか動作しません「gcloud preview app run」を使用します。または、サンプルを実行する前に 'gcloud auth login'を実行してみてください。 –

+0

^^これをエコーし​​ます。デフォルトの資格情報が有効になる前に 'gcloud auth login'または' gcloud auth activate-service-account'([docs](https://cloud.google.com/sdk/gcloud/reference/auth/))を実行する必要があります開発者の仕事。 – Nick

+0

このスレッドのアップデートはありますか? – Nick

答えて

0

BrandonとNickが言っているように、オーナー(サービスアカウントではありません)のgoogleユーザーのgcloud auth loginはこのトリックを行いました。ご協力いただきありがとうございます。

関連する問題