Comment obtenir la liste d'objets Google Cloud Storage en Java.
J'ai eu du mal à trouver un moyen simple de m'authentifier ou d'obtenir uniquement un répertoire spécifique: fatigué_face:
build.gradle Il suffit de "google-cloud-storage".
build.gradle
apply plugin: 'java'
apply plugin: 'application'
repositories {
mavenCentral()
}
dependencies {
compile 'com.google.cloud:google-cloud-storage:0.9.4-beta'
}
mainClassName = "GCSList"
run {
if (project.hasProperty('args')) {
args project.args.split('\\s+')
}
}
Code qui génère une liste d'objets dans un répertoire spécifique.
Vous pouvez maintenant spécifier le chemin d'accès à la clé JSON pour le compte de service avec un argument de ligne de commande. S'il n'y a pas d'argument, le compte par défaut est utilisé. [^ 1]
[^ 1]: Quelque chose comme gcloud auth login
src/main/java/GCSList.java
import com.google.auth.oauth2.ServiceAccountCredentials;
import com.google.cloud.Page;
import com.google.cloud.storage.Blob;
import com.google.cloud.storage.Bucket;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import java.io.*;
import java.util.Iterator;
public class GCSList {
private static final String BUCKET = "mybucket";
private static final String PREFIX = "dir1/dir2/";
public static void main(String args[]) throws IOException {
Storage storage;
if (args.length > 0) {
storage = getStorageFromJsonKey(args[0]);
} else {
storage = StorageOptions.getDefaultInstance().getService();
}
Bucket bucket = storage.get(BUCKET);
//Se restreindre à des répertoires spécifiques
Storage.BlobListOption option = Storage.BlobListOption.prefix(PREFIX);
Page<Blob> blobs = bucket.list(option);
Iterator<Blob> blobIterator = blobs.iterateAll();
while (blobIterator.hasNext()) {
System.out.println(blobIterator.next().getName());
}
}
private static Storage getStorageFromJsonKey(String key) throws IOException {
return StorageOptions.newBuilder()
.setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream(key)))
.build()
.getService();
}
}
Lors de l'utilisation de la clé JSON
$ ./gradlew run -Pargs="/path/to/key.json"
Lorsqu'il n'est pas utilisé
$ ./gradlew run
Le code pour cette fois est ici: crayon: https://github.com/nownabe/examples/tree/master/list-gcs-java
Recommended Posts