Загрузка объектов в бакет Yandex Object Storage с помощью эфемерного ключа доступа
Эфемерные ключи доступа — это временные ключи с ограниченным сроком действия, которые предоставляют безопасный способ доступа к ресурсам Yandex Object Storage без необходимости хранить статические ключи. В этом руководстве вы научитесь создавать эфемерные ключи и использовать их для создания бакетов и загрузки объектов с помощью AWS CLI
Чтобы загрузить объекты в бакет Object Storage с помощью эфемерного ключа доступа:
- Подготовьте облако к работе.
- Создайте сервисный аккаунт.
- Создайте эфемерный ключ доступа.
- Настройте AWS CLI.
- Создайте бакет.
- Загрузите объект в бакет.
Если созданные ресурсы вам больше не нужны, удалите их.
Подготовьте облако к работе
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры входит:
- плата за хранение данных в бакете (см. тарифы Object Storage);
- плата за операции с данными (см. тарифы Object Storage).
Настройте окружение
Установите и настройте интерфейс командной строки AWS CLI.
Создайте сервисный аккаунт
Создайте сервисный аккаунт, от имени которого вы будете создавать бакет и загружать объекты. Назначьте ему роль storage.editor на каталог.
- В консоли управления
выберите сервис Identity and Access Management. - Нажмите Создать сервисный аккаунт.
- В поле Имя укажите
ephemeral-sa. - Нажмите
Добавить роль и выберите рольstorage.editor. - Нажмите Создать.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Создайте сервисный аккаунт:
yc iam service-account create \ --name ephemeral-saРезультат:
id: ajeab0cnib1p******** folder_id: b0g12ga82bcv******** created_at: "2025-10-03T09:44:35.989446Z" name: ephemeral-sa -
Назначьте сервисному аккаунту роль
storage.editorна каталог:yc resource-manager folder add-access-binding <имя_каталога> \ --service-account-name ephemeral-sa \ --role storage.editorРезультат:
effective_deltas: - action: ADD access_binding: role_id: storage.editor subject: id: ajeab0cnib1p******** type: serviceAccount
- Создайте сервисный аккаунт
ephemeral-sa. Для этого воспользуйтесь методом REST API create для ресурса ServiceAccount или вызовом gRPC API ServiceAccountService/Create. - Назначьте сервисному аккаунту в текущем каталоге роль
storage.editor. Для этого воспользуйтесь методом REST API setAccessBindings для ресурса Folder или вызовом gRPC API FolderService/SetAccessBindings.
Чтобы управлять доступом к бакету, у сервисного аккаунта должна быть роль storage.admin.
Чтобы работать с объектами в зашифрованном бакете, у пользователя или сервисного аккаунта вместе с ролью storage.configurer должны быть следующие роли на ключ шифрования:
kms.keys.encrypter— для чтения ключа, шифрования и загрузки объектов;kms.keys.decrypter— для чтения ключа, расшифровки и скачивания объектов;kms.keys.encrypterDecrypter— включает разрешения, предоставляемые ролямиkms.keys.encrypterиkms.keys.decrypter.
Подробнее см. Сервисные роли Key Management Service.
Создайте эфемерный ключ доступа
Создайте эфемерный ключ доступа для сервисного аккаунта ephemeral-sa.
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --folder-name или --folder-id.
-
Получите идентификатор сервисного аккаунта:
yc iam service-account get --name ephemeral-sa --format json | jq -r .id -
Создайте эфемерный ключ доступа:
yc iam access-key issue-ephemeral \ --subject-id <идентификатор_сервисного_аккаунта> \ --session-name ephemeral-key-storage \ --duration 2hГде:
--subject-id— идентификатор сервисного аккаунтаephemeral-sa, полученный на предыдущем шаге.--session-name— имя сессии.--duration— срок жизни ключа.
Результат:
access_key_id: ajelprpohp8t******** secret: YCOs05v-KRXqhYpUINdWArH4MINhMyJ6CGU******** session_token: s1.9muilY******** expires_at: "2025-12-16T06:23:51.383485065Z" -
Сохраните идентификатор ключа
access_key_id, секретный ключsecretи токен сессииsession_token.Внимание
Получить эти значения повторно будет невозможно.
Настройте AWS CLI
Настройте AWS CLI для работы с эфемерным ключом доступа.
-
Создайте новый профиль в файле
~/.aws/credentials:[ephemeral-profile] aws_access_key_id = <идентификатор_ключа> aws_secret_access_key = <секретный_ключ> aws_session_token = <токен_сессии>Укажите в профиле значения, полученные при создании эфемерного ключа:
aws_access_key_id— идентификатор ключаaccess_key_id.aws_secret_access_key— секретный ключsecret.aws_session_token— токен сессииsession_token.
-
Настройте эндпоинт Object Storage для нового профиля:
aws configure set endpoint_url https://storage.yandexcloud.net/ --profile ephemeral-profileПримечание
Вместо настройки эндпоинта вы можете указывать его при выполнении команд с помощью параметра
--endpoint-url. -
Проверьте конфигурацию:
aws s3 ls --profile ephemeral-profileЕсли конфигурация выполнена правильно, команда выполнится без ошибок.
Создайте бакет
Создайте бакет для хранения объектов.
Выполните команду, указав имя бакета:
aws s3 mb s3://<имя_бакета> \
--profile ephemeral-profile
Результат:
make_bucket: my-bucket
Подробности см. в документе Создание бакета.
Загрузите объект в бакет
Загрузите объект в созданный бакет.
-
Создайте тестовый файл:
echo "Hello, Yandex Cloud!" > test-file.txt -
Выполните команду для загрузки файла, указав путь к локальному файлу, имя вашего бакета и ключ, по которому объект будет храниться в бакете:
aws s3 cp test-file.txt \ s3://<имя_бакета>/test-file.txt \ --profile ephemeral-profileРезультат:
upload: ./test-file.txt to s3://my-bucket/test-file.txt -
Проверьте, что объект успешно загружен:
aws s3 ls s3://<имя_бакета>/ \ --profile ephemeral-profileРезультат:
2025-10-03 09:45:12 23 test-file.txt
Подробности см. в документе Загрузка объекта.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы:
- удалите объекты из бакета;
- удалите бакет.