Java 存储对象的GCS凭据刷新

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(),根据文档参考:对于存储对象,我

我在谷歌云计算中有一项服务,它是多租户应用程序的一部分。我们使用vault通过位于以下位置的临时帐户每隔4-5小时刷新一次凭据:
/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()
,以避免读取缓存凭据>使用存储时出现任何错误。