从R中的GCP项目访问数据存储区

时间:2020-06-18 14:54:42

标签: r google-cloud-platform google-cloud-storage google-colaboratory

我正在尝试建立一个在R中运行并可以从GCP项目读取GCS存储桶的Google合作实验室笔记本。我正在使用googleCloudStorageR软件包。为了验证和读取存储桶,初始的Co-lab笔记本运行以下Python命令:

!gcloud auth login
!gcloud config set project project_name
!gcloud sql instances describe project_name 

如何使用googleCloudStorageR软件包在R中运行以上命令?在软件包的文档中,他们提到使用gcs_auth函数来读取身份验证JSON文件。但是,由于我将通过在R上运行的Co-Lab笔记本访问存储桶,因此我不想使用身份验证文件,而是希望通过Co-Lab笔记本进行身份验证并实时连接到GCP存储。谢谢!

1 个答案:

答案 0 :(得分:3)

弄清楚了。在合作实验室笔记本中,运行以下代码段:

install.packages("httr")
install.packages("R.utils")
install.packages("googleCloudStorageR")
if (file.exists("/usr/local/lib/python3.6/dist-packages/google/colab/_ipython.py")) {
      library(R.utils)
      library(httr)
      reassignInPackage("is_interactive", pkgName = "httr", function() return(TRUE))
    }
library(googleCloudStorageR)
 options(
      rlang_interactive = TRUE,
      gargle_oauth_email = "email_address",
      gargle_oauth_cache = TRUE
    )
token <- gargle::token_fetch(scopes = "https://www.googleapis.com/auth/cloud-platform")
    googleAuthR::gar_auth(token = token)

googleCloudStorageR软件包使用的含漱液身份验证存在问题。一种与此处列出的(https://github.com/r-lib/gargle/issues/140)类似的解决方法是为云范围生成令牌,这将为我们提供一个令牌对象,然后在gar_auth函数中使用该对象。