我正在使用Google Cloud DLP Java库。我已根据此处的说明设置了我的服务凭据并将其保存在JSON文件中:
https://cloud.google.com/dlp/docs/libraries。
文档指出,首选的身份验证方法是将环境变量GOOGLE_APPLICATION_CREDENTIALS
设置为指向包含凭据的JSON文件的路径。在我的情况下,这并不是那么实用。我有一个Spring Boot应用程序,其中所有代码(以及带有凭据的JSON文件)都嵌入在" fat jar"中。我可以轻松地使用类加载器来获取资源的InputStream,但是我无法从环境变量中指向jar文件中的它。从正在运行的JVM中创建环境变量而不诉诸诸如使用反射之类的黑客也是不切实际的。
其他一些Google Cloud库都有可以使用GoogleCredentials
对象初始化的服务类,但我还没有找到使用DLP库执行此操作的方法。有没有办法将GoogleCredentials
传递到DlpServiceClient
?
答案 0 :(得分:2)
经过相当多的谷歌搜索,我最终搞清楚了。这很好用:
Resource r = new ClassPathResource("/path-to-my-cred-file.json");
GoogleCredentials creds = GoogleCredentials.fromStream(r.getInputStream());
DlpServiceSettings settings = DlpServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider
.create(creds))
.build();
try (DlpServiceClient dlpServiceClient = DlpServiceClient.create(settings)) {
///... other stuff here ...
}