我既在本地,也在我们的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云端硬盘相同的方式。
答案 0 :(得分:0)
正如@DazWilkin指出的那样,许多GCP客户端库(例如您的GCS)都知道如何自动检测可用的“应用程序默认凭据”。
这些ADC凭据当前仅在Google Cloud Platform API上起作用(Google Drive早于此)。您可以阅读Google云端硬盘Java快速入门,以了解如何检索凭据:https://developers.google.com/drive/api/v3/quickstart/java
作为参考,GCP客户端库将通过以下方式寻找ADC:
GOOGLE_APPLICATION_CREDENTIALS
环境变量(如果已设置),指向服务帐户的JSON密钥文件。%APPDATA%/gcloud/application_default_credentials.json
命令,则找到$HOME/.config/gcloud/application_default_credentials.json
(Windows)或gcloud auth application-default login
(其他)。appengine.AccessToken
API。在您的情况下,您的GKE吊舱正在使用方法#4检索GCS存储区操作的令牌;但不适用于云端硬盘API。