Google Compute Engine にインストールされた R Studio から BigQuery を呼び出そうとしています。
インスタンスに bq python ツールがインストールされており、そのサービス アカウントと system() を使用して、R に bq コマンド ライン ツールを呼び出してデータを取得させたいと考えていました。
ただし、認証の問題が発生し、ブラウザ キーが要求されます。サービス アカウントのためにキーを取得する必要はないと確信していますが、R を使用して認証を構築する方法がわかりません (RStudio で実行されるため、複数のユーザーが存在します)。
次のような認証トークンを取得できます。
library(RCurl)
library(RJSONIO)
metadata <- getURL('http://metadata/computeMetadata/v1beta1/instance/service-accounts/default/token')
tokendata <- fromJSON(metadata)
tokendata$$access_token
しかし、これを使用して .bigqueryrc トークンを生成するにはどうすればよいでしょうか? これがないと、認証の試行がトリガーされます。
これはうまくいきます:
system('/usr/local/bin/bq')
bq が正常にインストールされていることを示しています。
しかし、次のようなことを試みると:
system('/usr/local/bin/bq ls')
私はこれを得る:
Welcome to BigQuery! This script will walk you through the process of initializing your .bigqueryrc configuration file.
First, we need to set up your credentials if they do not already exist.
******************************************************************
** No OAuth2 credentials found, beginning authorization process **
******************************************************************
Go to the following link in your browser:
https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fbigquery&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&client_id=XXXXXXXX.apps.googleusercontent.com&access_type=offline
Enter verification code: You have encountered a bug in the BigQuery CLI. Google engineers monitor and answer questions on Stack Overflow, with the tag google-bigquery: http://stackoverflow.com/questions/ask?tags=google-bigquery
etc.
編集:
RStudio を使用してユーザーとしてターミナルにログインし、ブラウザ経由でサインインして認証し、RStudio に再度ログインして system("bq ls") など..これで十分です:)
ただし、多くのユーザーがログインする可能性があり、すべてのユーザーに対してターミナルを介して認証する必要があるため、RStudio 自体で BQ を認証できる場合は、それでもなお望ましいと思います。そして、サービス アカウントのドキュメントと、認証トークンを取得できるという事実から、これがより簡単であることを示唆しています。