Доступ к хранилищу данных из проекта GCP в R - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь настроить записную книжку Google Co-lab, которая работает на R и может читать корзину GCS из проекта GCP. Я использую пакет googleCloudStorageR. Для проверки подлинности и чтения корзины исходная записная книжка совместной лаборатории выполняет следующие команды Python:

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

Как я могу выполнить указанные выше команды в R с помощью пакета googleCloudStorageR? В документации к пакету упоминается использование функции gcs_auth, которая читает файл аутентификации JSON. Однако, поскольку я буду получать доступ к корзинам через записную книжку Co-Lab, работающую на R, я не хочу использовать файл аутентификации и вместо этого хочу аутентифицироваться и подключаться к хранилищу GCP в реальном времени из записной книжки Co-Lab. Спасибо!

1 Ответ

3 голосов
/ 19 июня 2020

Разобрался. В записной книжке совместной лаборатории запустите следующий фрагмент кода:

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.

...