, Так что-то вроде:

аюсь собрать программу Hello World для тестирования Google Cloud Storage. Моя цель - создать простейшую программу, которая просто загружает жестко запрограммированный файл в облачное хранилище.

Я искал интернет для основного учебника, но самое близкое, что я мог найти, этоэто руководство для использования облачного хранилища из App Engine. Я собрал эту программу:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;

import com.google.cloud.storage.Acl;
import com.google.cloud.storage.Acl.Role;
import com.google.cloud.storage.Acl.User;
import com.google.cloud.storage.BlobInfo;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;

public class Main {
    public static void main(String[] args) throws FileNotFoundException{

        FileInputStream fileInputStream = new FileInputStream("my-file.txt");

        Storage storage = StorageOptions.getDefaultInstance().getService();

        BlobInfo blobInfo =
            storage.create(
                BlobInfo
                    .newBuilder("my-cloud-storage-bucket", "my-file.txt")
                    .setAcl(new ArrayList<>(Arrays.asList(Acl.of(User.ofAllUsers(), Role.READER))))
                    .build(),
                fileInputStream);

        String fileUrl = blobInfo.getMediaLink();

        System.out.println("Uploaded URL: " + fileUrl);
    }
}

Когда я запускаю этот код, я получаю401 Unauthorized ошибка при звонкеstorage.create()и это не удивительно, потому что я не предоставляю имя пользователя или пароль. Я понимаю, это потому, что пример работает в App Engine, который предоставляет учетные данные таким образом.

Я попытался передать свои учетные данные через файл свойств:

Credential credential = new GoogleCredential.Builder()
                .setTransport(httpTransport)
                .setJsonFactory(jsonFactory)
                .setServiceAccountId("accountId")
                .setServiceAccountPrivateKeyFromP12File(
                        new File("PRIVATE_KEY_PATH"))
                .setServiceAccountScopes(scopes).build();

Storage storage = new StorageOptions.DefaultStorageFactory().create(StorageOptions.newBuilder().setCredentials(credential).build());

Но это не компилируется, потому чтоsetCredentials() функция нуждается вCredentials экземпляр, а неCredential экземпляр.

Я гуглил и читалAPI облачного хранилища, но я все еще не могу понять, как я должен передать учетные данные, не пройдя запутанный процесс установки.

Так,мой вопрос: Какой самый простой способ предоставить учетные данные в облачное хранилище Google для загрузки файла?

Для справки: я пытаюсь сравнить и сопоставить Google Cloud Storage и Amazon S3. Я могу создать такую ​​программу на S3 без проблем, но по какой-то причине я попал в кирпичную стену с Cloud Storage. Определенно ценю любые идеи или базовые уроки, которые кто-нибудь может мне дать.

Ответы на вопрос(0)

Ваш ответ на вопрос