我既在本地,也在我们的Kubernetes吊舱中,通过Google云认证。在这两种情况下,我都可以通过gcloud info
获得正确的响应。
但是,当我想访问GoogleDrive时,我需要使用GoogleCredential,如下所示:
GoogleCredential.Builder()
.setTransport(transport)
.setJsonFactory(jsonFactory)
.setServiceAccountPrivateKey(privateKey)
.setServiceAccountId(serviceAccount)
.setServiceAccountScopes(scopes.toList()).build()
意思是-我需要专门设置privateKey和serviceAccount。有没有办法强迫它使用本地身份验证的帐户?
当使用Google桶时,可以很容易地做到这一点:
StorageOptions.getDefaultInstance().service.options.credentials
对于Google,我找不到同样的方法。
发布于 2019-01-22 17:39:35
正如@DazWilkin所指出的,许多GCP客户端库(比如GCS )知道如何自动检测可用的“应用程序默认凭据”。
这些ADC凭证目前只适用于(Google早于此)。您可以阅读Google快速入门,了解如何检索凭据:https://developers.google.com/drive/api/v3/quickstart/java
作为参考,GCP客户端库将通过以下方式查找ADC:
GOOGLE_APPLICATION_CREDENTIALS
环境变量,则指向服务帐户的JSON密钥文件。%APPDATA%/gcloud/application_default_credentials.json
命令,则查找gcloud auth application-default login
(Windows)或$HOME/.config/gcloud/application_default_credentials.json
(其他)。appengine.AccessToken
API。在您的示例中,您的GKE吊舱使用方法#4来检索GCS桶操作的令牌,而不是用于驱动器API。
https://stackoverflow.com/questions/54216859
复制