0

クラウドで実行されている plumbeR API があり、同じプロジェクト内の Google ストレージ バケット内のファイルにアクセスしたいと考えています。API は正常に動作しますが、認証を通過できません。googleAuthR と gargle ライブラリを使用しようとしていますが、何か問題があります。

ここに私のapi.Rがあります

#* @get /
function(){
  text <- "Hello, this is from a cloud run function...."
  return ( text )
}

#* @get /haveToken
function(){
  require(googleAuthR)
  require(googleCloudStorageR)
  require(gargle)
  text <- paste0("Do I have a token: ",gar_has_token())
  #gcs_auth(token = token_fetch())
  gar_auth( gar_gce_auth_default()  )
  text <- paste0(text,"<br>Do I have a token: ",gar_has_token())
  return ( gcs_list_buckets(projectId = "<MYPROJECT>") )
}

私のdockerfileは次のとおりです。

FROM gcr.io/gcer-public/googlecloudrunner:master
COPY api.R .
ENTRYPOINT ["R", "-e", "pr <- plumber::plumb(commandArgs()[4]); pr$run(host='0.0.0.0', port=as.numeric(Sys.getenv('PORT')))"]
CMD ["api.R"]
docker build -t gcs_test1 .
docker image tag gcs_test1:latest gcr.io/<MYPROJECT>/gcscr:latest
gcloud run deploy gcs-test1 --image=gcr.io/<MYPROJECT>/gcscr:latest  --platform managed --allow-unauthenticated --service-account=gcs-sa@<MYPROJECT>.iam.gserviceaccount.com

私のサービス アカウントには現在編集者の役割がありますが、それをストレージ管理者 + Cloud Run サービス エージェントに減らしたいと考えています。

GCS へのアクセス方法について何かアドバイスがありましたら、よろしくお願いいたします。

4

1 に答える 1