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

Введение В этой статье мы будем использовать Java AWS SDK и API, чтобы создать корзину S3, загрузить в нее файлы и, наконец, удалить ее. Одним из самых популярных сервисов, доступных на Amazon Web Services, является Simple Storage Service (S3). S3 позволяет разработчикам и другим пользователям легко реализовать хранилище данных для личного использования или своих приложений. Данные хранятся с использованием модели Cloud Object Storage [https://aws.amazon.com/what-is-cloud-object-storage/], в которой хранятся сами данные.

Вступление

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

Одним из самых популярных сервисов, доступных на Amazon Web Services, является Simple Storage Service (S3).

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

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

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

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

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

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

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

  2. Щелкните меню «Службы» в верхнем левом углу экрана, найдите IAM и щелкните появившийся раскрывающийся список.

Меню сервисов AWSIAM{.ezlazyload}

  1. Под заголовком «Состояние безопасности» разверните параметр « Создать отдельных пользователей IAM» и нажмите кнопку « Управление пользователями» .

AWS IAM Управлениепользователями{.ezlazyload}

  1. Щелкните кнопку Добавить пользователя .

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

Сведения о пользователе AWSIAM{.ezlazyload}

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

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

Разрешения AWS IAMS3{.ezlazyload}

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

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

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

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

Чтобы настроить это самостоятельно, создайте новый файл ~/.aws/credentials и добавьте следующее содержимое, заменив ключ доступа и секретный ключ значениями из вашего вновь созданного пользователя 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:

 <dependency> 
 <groupId>com.amazonaws</groupId> 
 <artifactId>aws-java-sdk-s3</artifactId> 
 <version>${version}</version> 
 </dependency> 

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

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

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

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

Создание сегмента S3 с помощью Java

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

  • Регион : представляет регион размещения AWS, в котором будут выполняться операции SDK.
  • S3Client : используется для установки и настройки клиента для подключения к 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); 

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

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

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

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

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

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

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

Ковш AWSS3{.ezlazyload}

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

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

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

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

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

 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 Мы заполнили его случайным байтовым буфером. Когда мы запустим этот код, в корзину будет загружен key

Проверим ведро S3 в консоли AWS:

Ковш AWSS3{.ezlazyload}

Удаление корзины 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); 

Как и раньше, мы настраиваем S3Client с Region и передаем имя сегмента. Наконец, мы создаем экземпляр DeleteBucketRequest с информацией о deleteBucket() из класса S3Client

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

Заключение

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

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

об авторе

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

comments powered by Disqus