Скачивание объекта
Чтобы работать с объектами в зашифрованном бакете, у пользователя или сервисного аккаунта вместе с ролью storage.configurer
должны быть следующие роли на ключ шифрования:
kms.keys.encrypter
— для чтения ключа, шифрования и загрузки объектов;kms.keys.decrypter
— для чтения ключа, расшифровки и скачивания объектов;kms.keys.encrypterDecrypter
— включает разрешения, предоставляемые ролямиkms.keys.encrypter
иkms.keys.decrypter
.
Подробнее см. Сервисные роли Key Management Service.
Примечание
- В консоли управления
в списке сервисов выберите Object Storage и перейдите в бакет, из которого вы хотите скачать объект. - На панели слева выберите
Объекты, найдите в списке нужный объект. - Напротив объекта, который вы хотите скачать, нажмите
→ Скачать или откройте объект и на панели сверху нажмите Скачать.
Если у вас еще нет 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.