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