установить журналы доступа к хранилищу облачного хранилища Google в java - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу включить ведение журнала для группы в GCS, используя java sdk. По сути, я хочу реализовать эквивалент команды gsutil: gsutil logging set on -b gs://logging-bucket -o AccessLog gs://mycompanybucket, как указано в документации здесь . Я пытался вызвать командную строку с помощью java кода, но это всегда происходит вечно.

public static void checkLoggingBuckets(ArrayList<String> cloudbuckets) throws IOException {
            Runtime rt = Runtime.getRuntime();
            ArrayList<String> bucketList = cloudbuckets;
            try {
                for (String st: bucketList) {
                    String command = "cmd /c cmd.exe gsutil logging set on -b gs://logs-bucket-2019  -o AccessLog  gs://";
                    System.out.println("checking for bucket "  + st);
                    Process proc = rt.exec(command + st);

            int result = proc.waitFor();

            System.out.println("Process exit code: " + result);
            System.out.println();
            System.out.println("Result:");
            BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));

            String line = "";
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
                }

    } catch (IOException e) {
        e.printStackTrace();
    }
}

1 Ответ

1 голос
/ 17 февраля 2020

Вы можете сделать это с клиентом Java, нет необходимости запускать подпроцесс с помощью команды gsutil:

Storage storage = StorageOptions.getDefaultInstance().getService();
Bucket bucket = storage.get("mycompanybucket");

BucketInfo.Logging logging = BucketInfo.Logging.newBuilder()
    .setLogBucket("logging-bucket")  // -b parameter of gsutil logging set command
    .setLogObjectPrefix("AccessLog") // -o parameter of gsutil logging set command
    .build();

bucket = bucket.toBuilder()
    .setLogging(logging)
    .build()
    .update();

Источник : https://github.com/googleapis/google-cloud-java/issues/6981#issuecomment -561648354 .

...