在不设置GOOGLE_APPLICATION_CREDENTIALS的情况下从Java验证Google DLP API?

时间:2018-02-13 01:30:57

标签: google-api google-cloud-platform google-cloud-dlp

我正在使用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

1 个答案:

答案 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 ...
}