Скачивание объекта
Чтобы работать с объектами в зашифрованном бакете, у пользователя или сервисного аккаунта вместе с ролью 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), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров --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********Альтернативная команда:
yc storage s3 cp \ s3://<имя_бакета>/<ключ_объекта> \ <путь_для_скачивания>Результат:
download: s3://my-bucket/object.txt to object.txtНастройка параметров для команды
yc storage s3 cpВы можете настроить следующие параметры для команды
yc storage s3 cp:s3.max-queue-size— максимальное количество задач в очереди. Значение по умолчанию —1000.s3.max-concurrent-requests— максимальное количество одновременных запросов. Значение по умолчанию —10.s3.multipart-threshold— пороговый размер объекта, при превышении которого будет использоваться составная (multipart) загрузка. Значение по умолчанию —8MB.s3.multipart-chunksize— размер частей, на которые будет делиться объект при составной (multipart) загрузке. Значение по умолчанию —8MB.
Чтобы задать эти параметры, используйте команду
yc config set <параметр> <значение>.
Если у вас еще нет 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.