2017-03-31 12 views
0

Google Cloud Dataflow Java SDKをPubSub Sourceと連携させることに苦労しています。以下の最小限のコードでは、常に401(Unauthorized)エラーが返されます。私は資格情報を提供する方法を理解しようとしましたが、それを動作させる方法を見つけることができませんでした。私は事前にgcloud認証ログインを使用して、ログインしており、サブスクリプションが存在することを確認しています。次のエラーがスローされApache Beam Java SDKとPubSubソースの例

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.4.0:java (default-cli) on project my-dataflow: An exception occured while executing the Java class. null: InvocationTargetException: com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized 
[ERROR] { 
[ERROR] "code" : 401, 
[ERROR] "errors" : [ { 
[ERROR] "domain" : "global", 
[ERROR] "message" : "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.", 
[ERROR] "reason" : "unauthorized" 
[ERROR] } ], 
[ERROR] "message" : "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.", 
[ERROR] "status" : "UNAUTHENTICATED" 
[ERROR] } 

次のように私のコードは次のとおりです。

public class MyDataflow{ 

    public static void main(String[] args) { 

    PipelineOptions options = PipelineOptionsFactory.create(); 

    PubsubOptions dataflowOptions = options.as(PubsubOptions.class); 
    dataflowOptions.setStreaming(true); 

    Pipeline p = Pipeline.create(options); 

    p.apply(PubsubIO.<String>read().subscription("projects/my-project/subscription/my-subscription") 
      .withCoder(StringUtf8Coder.of())); 

    // Run the pipeline. 
    p.run().waitUntilFinish(); 
    } 
} 
+1

あなたが代わりに ''のgcloud認証login'ののgcloud認証アプリケーションのデフォルトlogin'を使用してみましたか? –

+0

ありがとう、あなたは正しい方向に私を指摘した。私は前にこれをやったことがありますが、GOOGLE_APPLICATION_CREDENTIALS環境変数がjson信任状ファイルの代わりにフォルダに直接設定されていました。あなたが答えとしてそれを追加するなら、私はそれを受け入れることができます。 – jimmy

+0

これを回答として追加できますか? –

答えて

関連する問題