Как создать файл из байтов в S3 Bucket, если он еще не существует, используя AWS Java SDK - PullRequest
0 голосов
/ 19 октября 2018

Я пишу код, который создает файл в S3 Bucket.Этот файл содержит байты, которые являются параметром метода.Я использую этот код, но он возвращает

software.amazon.awssdk.services.s3.model.NoSuchKeyException

S3Client client = S3Client.builder().region(Region.US_EAST_1).build();

public void writeBytesToS3(byte[] data) {
    PutObjectRequest request = PutObjectRequest.builder().bucket("mybucket").key("java-aws-s3/file.tmp").build();
    client.putObject(request, RequestBody.fromBytes(data));
}

Я знаю, что это означает, что«java-aws-s3 / file.tmp» не существует на S3.Но не должен ли putObject автоматически создавать этот файл как контейнер для моих байтов?Или я делаю это неправильно.

1 Ответ

0 голосов
/ 19 октября 2018

Во-первых, я не знаю, какую версию для библиотеки amazon вы используете ..

Поместить любой объект в клиент s3 aws s3 предоставляет множество способов.в вашем случае, увидев подпись метода, мой код ниже поможет мне обернуть ваш запрос в класс PutObjectRequest

Пример: - void putObjectInS3 (byte [] data) {PutObjectRequest por = new PutObjectRequest ("buck_name", ")Java-AWS-s3 / file.tmp», (String) нуль);s3Client.putObject (POR);}

У PutObjectRequest есть перегрузка конструктора с использованием различных конструкторов. В 1-м параметре укажите имя_карты, во 2-м параметре укажите имя_файла, в 3-м параметре используйте указать ссылку на перенаправление (используется, если запрос get для объекта А в s3 you и redirec приходит.в какой-то другой файл в том же ведре или в других ведрах в вашем случае я передал как ноль

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...