通过 R Studio Server 使用 BigQuery 在 Google Compute Engine 上对服务帐户进行身份验证

Posted

技术标签:

【中文标题】通过 R Studio Server 使用 BigQuery 在 Google Compute Engine 上对服务帐户进行身份验证【英文标题】:Authenticating Service Accounts on Google Compute Engine with BigQuery, via R Studio Server 【发布时间】:2013-05-22 15:13:11 【问题描述】:

我希望从安装在 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://***.com/questions/ask?tags=google-bigquery

etc.

编辑:

我已经设法从 RStudio system() 命令中获得 bq 功能,方法是通过以使用 RStudio 的用户身份登录到终端来跳过身份验证,通过浏览器登录进行身份验证,然后重新登录到 RStudio 并调用系统("bq ls") 等等..所以这足以让我继续前进:)

但是,如果 BQ 可以在 RStudio 本身内进行身份验证,我仍然更喜欢它,因为许多用户可能会登录,我需要通过终端对所有用户进行身份验证。从服务帐户文档中,以及我可以获得身份验证令牌的事实,暗示这更容易。

【问题讨论】:

也许你想试试 Hadley Wickham 的 bigrquery 包。 谢谢,我会试一试 - 我也对code.google.com/p/google-bigquery-r-client 进行了处理,但它现在不受支持。如果可能的话,我希望 bigrquery 不提供读写访问权限,但至少它可以显示如何进行身份验证:) ..可悲的是,它没有用。卡在“在浏览器中进行身份验证”并向localhost:8787/custom/OAuth/…发送请求 仔细检查以确保您创建的实例启用了 BigQuery 范围。如果未启用,bq 将不会进行身份验证,并且从元数据服务器返回的访问令牌将无权使用 BigQuery API。 嗨@bquast,简而言之,您在 GCE 上启动 Debian 安装,打开正确的防火墙,安装 R,Rstudio 完成,但 Rstudio 在尝试时是测试版,因此需要一些解决方法。我很快会再做一次,但我有我之前的笔记作为一步一步的指南:docs.google.com/document/d/… - 请注意一点点盐,因为事情可能已经发生了变化,但至少你可以使用参考帮助您安装。 【参考方案1】:

目前,在从 GCE 中的脚本调用 bq 之前,您需要从命令行运行“bq init”来设置您的凭据。但是,bq 的下一个版本将通过新的 --use_gce_service_account 标志包括对 GCE 服务帐户的支持。

【讨论】:

感谢您的回复 - 好的,请稍等,它将可用。我想我被帮助文件中提到的两个不同的“服务帐户”抓住了,把我带进了一条死胡同:)顺便说一句,我在哪里可以订阅更新何时发生?

以上是关于通过 R Studio Server 使用 BigQuery 在 Google Compute Engine 上对服务帐户进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

Google Data Studio:如何使用自定义 Big Query 查询创建时间序列图表

tMatchGroup 在 Talend Open Studio for Big Data 中的位置

在visual studio2017中使用R

Google Data Studio:将用户输入写回 Google Big Query 表

android Leakcanary/Studio Profiler/MAT 处理内存问题(泄漏和Big超大内存对象)

android Leakcanary/Studio Profiler/MAT 处理内存问题(泄漏和Big超大内存对象)