Скачивание объекта
Чтобы работать с объектами в зашифрованном бакете, у пользователя или сервисного аккаунта вместе с ролью storage.configurer
должны быть следующие роли на ключ шифрования:
kms.keys.encrypter
— для чтения ключа, шифрования и загрузки объектов;kms.keys.decrypter
— для чтения ключа, расшифровки и скачивания объектов;kms.keys.encrypterDecrypter
— включает разрешения, предоставляемые ролямиkms.keys.encrypter
иkms.keys.decrypter
.
Подробнее см. Сервисные роли Key Management Service.
Примечание
- В консоли управления
в списке сервисов выберите Object Storage и перейдите в бакет, из которого вы хотите скачать объект. - На панели слева выберите
Объекты, найдите в списке нужный объект. - Напротив объекта, который вы хотите скачать, нажмите
→ Скачать или откройте объект и на панели сверху нажмите Скачать.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для скачивания объекта из бакета:
yc storage s3api get-object --help
-
Получите список бакетов в каталоге по умолчанию:
yc storage bucket list
Результат:
+------------------+----------------------+-------------+-----------------------+---------------------+ | NAME | FOLDER ID | MAX SIZE | DEFAULT STORAGE CLASS | CREATED AT | +------------------+----------------------+-------------+-----------------------+---------------------+ | first-bucket | b1gmit33ngp6******** | 53687091200 | STANDARD | 2022-12-16 13:58:18 | +------------------+----------------------+-------------+-----------------------+---------------------+
-
Выполните команду:
yc storage s3api get-object \ --bucket <имя_бакета> \ --key <ключ_объекта> \ <путь_для_скачивания>
Где:
--bucket
— имя вашего бакета.--key
— ключ объекта.<путь_для_скачивания>
— локальный путь для скачивания.
Результат:
etag: '"d41d8cd98f00b204e9800998********"' request_id: af194b83******** accept_ranges: bytes content_type: application/octet-stream last_modified_at: "2024-10-08T12:36:36Z" server_side_encryption: aws:kms sse_kms_key_id: abj497vtg3h0********
Если у вас еще нет AWS CLI, установите и сконфигурируйте его.
Скачать один объект
aws s3 cp \
--endpoint-url=https://storage.yandexcloud.net \
s3://<имя_бакета>/<ключ_объекта> \
<локальный_путь>
Где:
--endpoint-url
— эндпоинт Object Storage.<имя_бакета>
— имя бакета, из которого вы хотите скачать объект.<ключ_объекта>
— ключ объекта, который вы хотите скачать.<локальный_путь>
— путь к папке, в которую будет сохранен скачанный объект. Например,~/downloads/
.
Скачать папку (все объекты с определенным префиксом)
Подробнее о папках в Object Storage см. в разделе Папка.
aws s3 cp \
--endpoint-url=https://storage.yandexcloud.net \
--recursive \
s3://<имя_бакета>/<префикс>/ \
<локальный_путь>
Где:
--endpoint-url
— эндпоинт Object Storage.--recursive
— параметр для скачивания всех объектов с указанным префиксом.<имя_бакета>
— имя бакета, из которого вы хотите скачать объекты.<префикс>
— префикс (папка) объектов, которые вы хотите скачать, напримерtest/folder
.<локальный_путь>
— путь к папке, в которую будут сохранены скачанные объекты, например~/downloads/
.
Скачать все объекты из бакета
aws s3 cp \
--endpoint-url=https://storage.yandexcloud.net \
--recursive \
s3://<имя_бакета> \
<локальный_путь>
Где:
--endpoint-url
— эндпоинт Object Storage.--recursive
— параметр для скачивания всех объектов бакета в локальную папку.<имя_бакета>
— имя бакета, из которого вы хотите скачать объекты.<локальный_путь>
— путь к папке, в которую будут сохранены скачанные объекты. Например,~/downloads/
.
Команда aws s3 cp
— высокоуровневая, ее функциональность ограничена. Подробнее см. в справочнике AWS CLI
Объекты из бакета можно скачать выборочно с помощью команды aws s3api
и шаблона запроса в формате JMESPath. Для скачивания объектов по шаблону выполните команду:
-
Bash:
aws s3api list-objects \ --endpoint-url https://storage.yandexcloud.net \ --bucket <имя_бакета> \ --query '<запрос>' \ --output text | xargs -I {} aws s3api get-object --endpoint-url https://storage.yandexcloud.net --bucket <имя_бакета> --key {} <локальный_путь>{}
Где:
--endpoint-url
— эндпоинт Object Storage.--bucket
— имя бакета, из которого вы хотите скачать объекты.--query
— запрос в формате JMESPath .<локальный_путь>
— путь к папке, в которую будут сохранены скачанные объекты. Например,~/downloads/
.
Пример команды для скачивания из бакета
sample-bucket
в локальную папку~/downloads/
всех объектов, имена файлов которых начинаются сdate-20231002
:aws s3api list-objects \ --endpoint-url https://storage.yandexcloud.net \ --bucket sample-bucket \ --query 'Contents[?starts_with(Key, `date-20231002`) == `true`].[Key]' \ --output text | xargs -I {} aws s3api get-object --endpoint-url https://storage.yandexcloud.net --bucket sample-bucket --key {} ~/downloads/{}
-
PowerShell:
Foreach($x in (aws s3api list-objects ` --endpoint-url https://storage.yandexcloud.net ` --bucket <имя_бакета> ` --query '<запрос>' ` --output text)) ` {aws s3api get-object --endpoint-url https://storage.yandexcloud.net --bucket <имя_бакета> --key $x <локальный_путь>$x}
Где:
--endpoint-url
— эндпоинт Object Storage.--bucket
— имя бакета, из которого вы хотите скачать объекты.--query
— запрос в формате JMESPath .<локальный_путь>
— путь к папке, в которую будут сохранены скачанные объекты. Например,d:\downloads\
.
Пример команды для скачивания из бакета
sample-bucket
в локальную папкуd:\downloads\
всех объектов, имена файлов которых начинаются сdate-20231002
:Foreach($x in (aws s3api list-objects ` --endpoint-url https://storage.yandexcloud.net ` --bucket sample-bucket ` --query 'Contents[?starts_with(Key, `date-20231002`) == `true`].[Key]' ` --output text)) ` {aws s3api get-object --endpoint-url https://storage.yandexcloud.net --bucket sample-bucket --key $x d:\downloads\$x}
Чтобы скачать объект, воспользуйтесь методом S3 API get.