Автор оригинала: 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 (Управление идентификацией и доступом).:
Войдите в консоль AWS .
Нажмите на меню Услуги в левом верхнем углу экрана, найдите IAM и нажмите на выпадающий список , который появится.
- В разделе Статус безопасности разверните параметр Создать отдельных пользователей Я и нажмите кнопку Управление пользователями .
Нажмите кнопку Добавить пользователя .
Введите имя пользователя для вашего нового пользователя IAM и установите флажок Программный доступ .
Нажмите кнопку Далее: Разрешения , а затем выберите Прикрепить существующие политики напрямую .
Введите S3 в поле поиска и в результатах установите флажок AmazonS3FullAccess .
Нажмите кнопку Далее: Теги , затем нажмите кнопку Далее: Обзор .
Просмотрите конфигурацию пользователя IAM и нажмите кнопку Создать пользователя .
Вы перейдете на страницу подтверждения, где вы можете скопировать Идентификатор ключа доступа и Секретный ключ доступа , которые являются учетными данными, которые вы будете использовать для доступа к 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 и многому другому.