AWS SDK для Java
Примечание
Чтобы подключиться к Object Storage в регионе Казахстан, используйте следующие параметры:
- Регион —
kz1
. - Эндпоинт —
https://storage.yandexcloud.kz/
.
AWS SDK для Java
С помощью AWS SDK для Java вы создадите бакет, загрузите в него объекты, очистите содержимое бакета и удалите бакет.
Подготовка к работе
-
Назначьте сервисному аккаунту роли, которые нужны для вашего проекта, например storage.editor на бакет — для работы с конкретным бакетом, или на каталог — для работы со всеми бакетами в каталоге. Подробнее о ролях см. на странице Управление доступом с помощью Yandex Identity and Access Management.
Чтобы работать с объектами в зашифрованном бакете, у пользователя или сервисного аккаунта вместе с ролью
storage.configurer
должны быть следующие роли на ключ шифрования:kms.keys.encrypter
— для чтения ключа, шифрования и загрузки объектов;kms.keys.decrypter
— для чтения ключа, расшифровки и скачивания объектов;kms.keys.encrypterDecrypter
— включает разрешения, предоставляемые ролямиkms.keys.encrypter
иkms.keys.decrypter
.
Подробнее см. Сервисные роли Key Management Service.
-
Создайте статический ключ доступа.
В результате вы получите данные статического ключа доступа. Для аутентификации в Object Storage вам понадобятся:
key_id
— идентификатор статического ключа доступа;secret
— секретный ключ.
Сохраните
key_id
иsecret
, так как повторное получение значения ключа будет невозможно.
Примечание
Сервисный аккаунт может просматривать список бакетов только в том каталоге, в котором он был создан.
Сервисный аккаунт может выполнять действия с объектами в бакетах, которые созданы в каталогах, отличных от каталога сервисного аккаунта. Для этого назначьте сервисному аккаунту роли на нужный каталог или бакет в нем.
Установка
Важно
31 декабря 2025 года прекращается поддержка AWS SDK для Java версии 1.x. Чтобы продолжать получать новые функции и обновления безопасности, рекомендуется перейти на AWS SDK для Java версии 2.x.
-
Установите Apache Maven
для сборки проекта. -
Создайте проект
согласно инструкции из документации AWS.Ниже приведена структура созданного проекта:
getstarted ├── README.md ├── pom.xml └── src ├── main │ ├── java │ │ └── org │ │ └── example │ │ ├── App.java │ │ ├── DependencyFactory.java │ │ └── Handler.java │ └── resources │ └── simplelogger.properties └── test └── java └── org └── example └── HandlerTest.java 10 directories, 7 files
-
Внесите изменения в код проекта
согласно инструкции из документации AWS.
Для установки AWS SDK для Java v.1.x воспользуйтесь инструкцией
Настройка
-
Создайте директорию для хранения аутентификационных данных и перейдите в нее:
Для macOS и Linux:
mkdir ~/.aws/
Для Windows:
mkdir C:\Users\<имя_пользователя>\.aws\
-
В директории
.aws
создайте файлcredentials
и скопируйте в него аутентификационные данные, полученные ранее:[default] aws_access_key_id = <идентификатор_статического_ключа> aws_secret_access_key = <секретный_ключ>
-
Создайте файл
config
с параметрами региона по умолчанию и скопируйте в него следующую информацию:[default] region = ru-central1 endpoint_url = https://storage.yandexcloud.kz
Примечание
Некоторые приложения, предназначенные для работы с Amazon S3, не позволяют указывать регион, поэтому Object Storage принимает также значение
us-east-1
.
Для доступа к Object Storage используйте эндпоинт https://storage.yandexcloud.kz
.
Изменение эндпоинта
-
В директории
/src/main/java/org/example
откройте файлDependencyFactory.java
и измените классDependencyFactory
:public class DependencyFactory { private DependencyFactory() {} public static S3Client s3Client() { return S3Client.builder() .endpointOverride(URI.create("https://storage.yandexcloud.kz")) .httpClientBuilder(ApacheHttpClient.builder()) .build(); } }
-
Запустите код
согласно инструкции из документации AWS.
Другие примеры использования AWS SDK для Java вы можете найти в репозитории с примерами
В директории aws-java-sdk/samples/AmazonS3
в архиве с дистрибутивом SDK находится код, который нужно изменить.
Чтобы подключиться к Object Storage замените в примере код:
AmazonS3 s3 = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withRegion("us-west-2")
.build();
на
AmazonS3 s3 = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withEndpointConfiguration(
new AmazonS3ClientBuilder.EndpointConfiguration(
"storage.yandexcloud.kz","ru-central1"
)
)
.build();
Другие примеры использования AWS SDK для Java вы можете найти в репозитории с примерами