gpt4 book ai didi

java - 在 Spring 中设置 GOOGLE_APPLICATION_CREDENTIALS

转载 作者:行者123 更新时间:2023-11-30 10:16:20 25 4
gpt4 key购买 nike

我正在尝试使用 Spring 访问 Google 存储桶中的文件,最终目标是使用 MultiResourceItemReader 从存储桶中读取多个 XML 文件。当 XML 文件在我的本地机器(不是 GCP)上时,我目前让 Spring 处理这个过程

现在,我想做同样的事情,但不是我机器上的 XML 文件,而是这些文件位于 GCP 存储桶中。我可以在 Spring 之外访问存储桶内容,一次访问一个文件。例如,这段测试代码允许我访问存储桶,然后查看存储桶中的文件。在此代码段中,我通过 JSON key 文件设置了凭据。 (不是环境变量)

public static void storageDriver() throws IOException {
// Load credentials from JSON key file. If you can't set the GOOGLE_APPLICATION_CREDENTIALS
// environment variable, you can explicitly load the credentials file to construct the
// credentials.

String name = "";
String bucketName = "";
String bucketFileName = "";
String bucketFullPath = "";
Resource myBucker;
GoogleCredentials credentials;
File credentialsPath = new File("mycreds.json");
try (FileInputStream serviceAccountStream = new FileInputStream(credentialsPath)) {
credentials = ServiceAccountCredentials.fromStream(serviceAccountStream);
}


Storage storage = StorageOptions.newBuilder()
.setCredentials(credentials)
.setProjectId("myProject")
.build()
.getService();

for (Bucket bucket:storage.list().iterateAll()){
if(bucket.getName().equalsIgnoreCase("myGoogleBucket")){
bucketName = bucket.getName();
System.out.println(bucket);
for (Blob blob : bucket.list().iterateAll()){
bucketFileName = blob.getName();
bucketFullPath = "gs://"+bucketName+"/"+bucketFileName;
System.out.println(bucketFullPath);

}
}
};

但是,当我尝试使用 Spring 执行以下操作时,Spring 提示我没有定义 GOOGLE_APPLICATION_CREDENTIALS。 (我当然不会这样做,因为我是以编程方式进行的。

例如,我会添加

@Value("gs://myGoogleBucket")
private Resource[] resources;

应用程序默认凭据不可用。如果在 Google Compute Engine 中运行,它们就可用。否则,环境变量 GOOGLE_APPLICATION_CREDENTIALS 必须定义为指向定义凭据的文件。

最佳答案

Spring Cloud GCP 简化了您的 GCS 配置。

您可以添加 Storage support到你的应用程序。然后,通过 spring.cloud.gcp.storage.credentials.location 属性或 logging in with application default credentials using the Google Cloud SDK 指定服务帐户凭据的位置。 .

这将自动为您提供一个完全配置的 Storage 对象,像 @Value(gs://YOUR-BUCKET/YOUR-FILE) 这样的东西应该可以正常工作。

关于java - 在 Spring 中设置 GOOGLE_APPLICATION_CREDENTIALS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50121516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com