ここで2つの同様の投稿を見つけましたが、1つは回答されておらず、もう1つはAndroidに関するものでした。Spring Boot プロジェクトがあり、アプリケーション内の GCP ストレージ ファイルにアクセスしたいと考えています。
ローカルではすべてが正常に機能し、バケットにアクセスして、ファイルを読み取り、ストレージに保存できます。しかし、gcp kubernetes にアップロードすると、次の例外が発生します。
"java.nio.file.FileSystemNotFoundException: プロバイダ "gs" が java.nio.file.Paths.get(Paths.java:147) にインストールされていません ~[na:1.8.0_212] xx.xx.StorageService.saveFile(StorageService) に.java:64) ~[classes!/:0.3.20-SNAPSHOT]
それが表示される私のコード行は次のようになります:
public void saveFile(MultipartFile multipartFile, String path) {
String completePath = filesBasePath + path;
Path filePath = Paths.get(URI.create(completePath)); // <- exception appears here
Files.createDirectories(filePath);
multipartFile.transferTo(filePath);
}
}
completePath は、「gs://my-storage/path/to/file/image.jpg」のような結果になる可能性があります。
次の依存関係があります。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-storage</artifactId>
<version>1.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-nio</artifactId>
<version>0.122.5</version>
</dependency>
誰がどこを見ればいいのか手がかりを持っていますか? インフラストラクチャ以外の唯一の実際の違いは、ドキュメントによると必要ないため、kubernetes で認証を明示的に使用しないことです。
Compute Engine、Kubernetes Engine、App Engine などの Google Cloud Platform 環境から Google Cloud ライブラリを使用する場合、追加の認証手順は必要ありません。