Java 存储对象的GCS凭据刷新
我在谷歌云计算中有一项服务,它是多租户应用程序的一部分。我们使用vault通过位于以下位置的临时帐户每隔4-5小时刷新一次凭据:Java 存储对象的GCS凭据刷新,java,google-cloud-storage,credentials,Java,Google Cloud Storage,Credentials,我在谷歌云计算中有一项服务,它是多租户应用程序的一部分。我们使用vault通过位于以下位置的临时帐户每隔4-5小时刷新一次凭据:/dev/shm/gcp\u credentials.json 创建GCS存储对象时,我想找出更新这些凭据的最佳方法。 我注意到有一种构建存储对象的方法,它允许我传递凭证对象。我使用的是google-auth-credentials-library:0.16.2credentials对象有一个方法credentials.refresh(),根据文档参考:对于存储对象,我
/dev/shm/gcp\u credentials.json
创建GCS存储对象时,我想找出更新这些凭据的最佳方法。
我注意到有一种构建存储对象的方法,它允许我传递凭证对象。我使用的是google-auth-credentials-library:0.16.2
credentials对象有一个方法credentials.refresh()
,根据文档参考:对于存储对象,我使用的是google-cloud-storage:1.83.0
Storage refreshStorage() {
return StorageOptions.newBuilder().setCredentials(credentials)
.setProjectId("project_id").build().getService();
}
我想了解的是,如果我调用
credentials.refresh()
,这会保证当我调用storage.create(blobInfo,records)时代码>它将重新验证,还是我必须再次调用上述方法以传递凭据已刷新的新存储对象?凭据。刷新()将删除凭据的缓存状态,因此正确的过程将是:
刷新凭据>调用凭据。刷新()以避免
读取缓存凭据>使用存储时出错
你的问题我真的不清楚。首先,“我不完全理解私有存储时的流;对象”这是什么意思?第二,你在哪里运行这个代码,在应用程序引擎中,在云函数中,K8,在GCP之外?如果您还包括一些指向您正在使用的库的链接,那就太棒了,因为我不确定您从哪里获得凭据。refresh()
和一些关于您要做什么的上下文achieve@Chris32谢谢回复,我更新了原始信息。让我知道这是否合理如果您是正确的,credentials.refresh()
将删除凭据的缓存状态,因此正确的过程将是刷新凭据>调用credentials.refresh()
,以避免读取缓存凭据>使用存储时出现任何错误。