Рубрики
Без рубрики

AWS S3 с Java – Загрузка файлов, создание и удаление сегментов S3

В этой статье мы рассмотрим AWS Java SDK и API для создания корзины S3, загрузки файлов в корзину и удаления корзины.

Автор оригинала: Jacob Stopak.

Вступление

В этой статье мы будем использовать Java AWS SDK и API для создания корзины S3, загрузки в нее файлов и, наконец, ее удаления.

Одной из самых популярных услуг, доступных в Amazon Web Services , является Служба простого хранения (S3).

S3 упрощает разработчикам и другим пользователям реализацию хранилища данных для личного использования или их приложений. Данные хранятся с использованием модели под названием Облачное хранилище объектов , в которой хранятся сами данные (обычно из файла), некоторые метаданные, описывающие объект, и идентификатор для уникальной идентификации объекта.

S3 предоставляет веб-интерфейс, который позволяет легко загружать файлы для хранения и извлекать их. Файлы могут быть организованы в отдельные “корзины S3” , которые являются контейнерами для данных.

Файлы данных могут быть дополнительно классифицированы по папкам в корзинах для организации и доступа на основе привычных путей. Каждая корзина сопоставляется с URL-адресом, который позволяет получать доступ к файлам внутри корзины по протоколу HTTP. Пользователи имеют полный контроль над настройкой разрешений на уровне корзины или файлов и, таким образом, определяют доступ к корзинам и их содержимому.

В дополнение к созданию и работе с сегментами S3 через веб-интерфейс AWS предоставляет SDK, которые предоставляют нам доступ к операциям с сегментами.

Учетные данные AWS

Давайте начнем с изучения того, как создать набор учетных данных AWS, которые необходимы для доступа к AWS и выполнения вызовов API через SDK. Самый простой способ сделать это-войти в консоль AWS и создать новую роль IAM (Управление идентификацией и доступом).:

  1. Войдите в консоль AWS .

  2. Нажмите на меню Услуги в левом верхнем углу экрана, найдите IAM и нажмите на выпадающий список , который появится.

  1. В разделе Статус безопасности разверните параметр Создать отдельных пользователей Я и нажмите кнопку Управление пользователями .
  1. Нажмите кнопку Добавить пользователя .

  2. Введите имя пользователя для вашего нового пользователя IAM и установите флажок Программный доступ .

  1. Нажмите кнопку Далее: Разрешения , а затем выберите Прикрепить существующие политики напрямую .

  2. Введите S3 в поле поиска и в результатах установите флажок AmazonS3FullAccess .

  1. Нажмите кнопку Далее: Теги , затем нажмите кнопку Далее: Обзор .

  2. Просмотрите конфигурацию пользователя IAM и нажмите кнопку Создать пользователя .

  3. Вы перейдете на страницу подтверждения, где вы можете скопировать Идентификатор ключа доступа и Секретный ключ доступа , которые являются учетными данными, которые вы будете использовать для доступа к API AWS через Java SDK.

По умолчанию SDK будет искать учетные данные в файле Профиля учетных данных по умолчанию , который обычно находится в ~/.aws/учетные данные на вашем локальном компьютере. Вам нужно будет самостоятельно создать этот файл и добавить в него учетные данные IAM.

Чтобы настроить это самостоятельно, создайте новый файл ~/.aws/учетные данные и добавьте следующее содержимое, заменив ключ доступа и секретный ключ значениями только что созданного пользователя IAM в консоли AWS:

aws_access_key_id = YOUR_ACCESS_KEY_ID
aws_secret_access_key = YOUR_SECRET_ACCESS_KEY

Создайте файл региона по умолчанию для использования AWS SDK, добавив новый файл с именем ~/.aws/config со следующим содержимым (вы можете заменить регион на тот, который ближе к месту проживания ваших пользователей для оптимальной производительности).:

region = US_WEST_2

Теперь локальная среда должна быть настроена для успешной аутентификации AWS Java SDK.

Установка SDK с помощью Maven

Если вы используете Maven, добавьте следующую зависимость, чтобы включить пакет AWS Java SDK:


    com.amazonaws
    aws-java-sdk-s3
    ${version}

Или, если вы используете Gradle:

compile group: 'com.amazonaws', name: 'aws-java-sdk', version: '${version}'

Теперь вместо простой зависимости S3 вы можете использовать aws-java-sdk , который представляет собой весь SDK. Если быть точным, во всем SDK – 219 есть много зависимостей, поэтому, если вы используете только S3, нет необходимости загружать их все.

На данный момент мы готовы автоматизировать создание корзин, загрузку в них файлов и удаление корзин с помощью Java!

Создание корзины S3 с помощью Java

Git Essentials

Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!

Пакет AWS Java SDK для S3 предоставляет несколько классов, которые можно использовать для создания новой корзины. Они находятся в software.amazon.aws sdk библиотека. Эти классы являются:

  • Регион : Представляет регион хостинга AWS, в котором выполняются операции с SDK.
  • Клиент S3 : Используется для настройки и настройки клиента для подключения к AWS S3 через веб-службы.
  • CreateBucketRequest : Представляет веб-запрос для создания сегментов S3.
  • CreateBucketConfiguration : Представляет конфигурацию для создания корзины S3.

Давайте посмотрим, как мы можем настроить ведро для создания:

Region region = Region.US_WEST_2;
S3Client s3 = S3Client.builder().region(region).build();
String bucket = "new-bucket12345";

CreateBucketRequest createBucketRequest = CreateBucketRequest
    .builder()
    .bucket(bucket)
    .createBucketConfiguration(CreateBucketConfiguration.builder()
        .locationConstraint(region.id())
        .build())
    .build();

s3.createBucket(createBucketRequest);

Во-первых, мы создали объект Регион . Если мы пропустили этот шаг, используется регион по умолчанию в ~/.aws/config . Установите регион, ближайший к тому, где будут находиться ваши пользователи.

Затем мы создали клиент S3 объект и использовали его builder() , передав регион, для его создания.

Наконец, чтобы создать корзину, нам нужно будет упаковать все в запрос и для этого запроса использовать экземпляр Клиент S3 .

Чтобы упаковать все в запрос, мы вызываем builder() класса CreateBucketRequest и передаем имя корзины и идентификатор региона.

Наконец, мы вызываем метод create Bucket () .

Примечание : Имена корзин Amazon должны быть уникальными во всем мире. Измените имя new-bucket 12345 на другое.

После запуска этого кода корзина действительно появится в вашей консоли AWS:

Теперь, когда наше ведро запущено и запущено, давайте продолжим и загрузим в него несколько файлов!

Загрузка файла в корзину S3

Чтобы загрузить объект в существующую корзину, AWS Java SDK для S3 предоставляет нам PutObjectRequest и Тело запроса , которые используются с S3Client и Регионом .

  • PutObjectRequest : Представляет веб-запрос на загрузку объекта в корзину S3.
  • Тело запроса : Представляет тело веб-запроса, содержащего объект для загрузки.

Давайте посмотрим, как мы можем использовать эти классы для загрузки файла:

public class UploadObject {
    public static void main(String[] args) throws IOException {
        
        Region region = Region.US_WEST_2;
        S3Client s3 = S3Client.builder().region(region).build();

        String bucket = "new-bucket12345";
        String key = "key";

        // Put Object
        s3.putObject(PutObjectRequest.builder().bucket(bucket).key(key)
                .build(), RequestBody.fromByteBuffer(getRandomByteBuffer(10000)));
    }

    private static ByteBuffer getRandomByteBuffer(int size) throws IOException {
        byte[] b = new byte[size];
        new Random().nextBytes(b);
        return ByteBuffer.wrap(b);
    }
}

Метод putObject() класса S3Client принимает объект PutObjectRequest . Мы заполнили его случайным байтовым буфером. Когда мы запустим этот код, в корзину будет загружен новый файл с именем ключ .

Давайте проверим корзину S3 в консоли AWS:

Удаление корзины S3

В дополнение к предыдущим классам и таким же образом класс DeleteBucketRequest используется для отправки запроса на удаление корзины.

Region region = Region.US_WEST_2;
S3Client s3 = S3Client.builder().region(region).build();

String bucket = "new-bucket12345";

DeleteBucketRequest deleteBucketRequest = DeleteBucketRequest.builder().bucket(bucket).build();

s3.deleteBucket(deleteBucketRequest);

Как и раньше, мы настраиваем клиент S3 с экземпляром Регион и передаем имя корзины. Наконец, мы создаем экземпляр объекта DeleteBucketRequest с ведром в и запускаем метод delete Bucket() из класса S3Client .

После удаления корзины она будет удалена с консоли S3.

Вывод

В этой статье мы обсудили, как настроить и настроить пакет SDK AWS для Java, специально для службы S3. Мы рассмотрели настройку учетных данных для аутентификации AWS SDK и добавление необходимых зависимостей с помощью Maven.

Мы также подробно описали Java-код для некоторых распространенных операций S3, таких как создание новой корзины, загрузка объектов в корзину и удаление корзины.

Об авторе

Эта статья была написана Джейкобом Стопаком, разработчиком программного обеспечения и консультантом, страстно желающим помочь другим улучшить свою жизнь с помощью кода. Джейкоб является автором Руководства по основам кодирования для разработчиков , вводной книги, которая охватывает основные концепции и инструменты кодирования. Он содержит главы, посвященные базовой компьютерной архитектуре, Интернету, командной строке, HTML, CSS, JavaScript, Python, Java, базам данных/SQL, Git и многому другому.