Загрузка объекта
Пользователь может создавать внутри бакета папки и загружать туда объекты. При этом необходимо помнить, что в SDK и HTTP API ключом объекта будет весь путь к объекту от корня бакета. Читайте подробнее в разделе Объект.
Примечание
Через консоль управления нельзя загрузить объекты размером более 5 ГБ (см. Квоты и лимиты в Object Storage). Также при загрузке через консоль нельзя указать content-type
и другие заголовки. Для загрузки больших объектов или указания заголовков объекта используйте другие инструменты.
Простая загрузка
Консоль управления позволяет работать с бакетами Object Storage как с иерархической файловой системой.
Чтобы загрузить объект:
- В консоли управления
выберите каталог, в который нужно загрузить объект. - Выберите сервис Object Storage.
- Нажмите на имя необходимого бакета.
- Если вы хотите загрузить объект в конкретную папку, перейдите в нее, нажав на имя. Если хотите создать новую папку, создайте ее, нажав кнопку Создать папку.
- Оказавшись в нужной папке, нажмите кнопку Загрузить.
- В появившемся окне выберите необходимые файлы и нажмите кнопку Открыть.
- Консоль управления отобразит все объекты, выбранные для загрузки и предложит для каждого из них выбрать класс хранилища. Класс хранилища по умолчанию определяется настройкой бакета.
- Нажмите кнопку Загрузить.
- Обновите страницу.
В консоли управления информация о количестве объектов в бакете и занятом месте обновляется с задержкой в несколько минут.
-
Если у вас еще нет AWS CLI, установите и сконфигурируйте его.
-
Чтобы загрузить один объект, выполните команду:
aws --endpoint-url=https://storage.yandexcloud.net/ \ s3 cp <путь_к_локальному_файлу>/ s3://<имя_бакета>/<ключ_объекта>
Где:
--endpoint-url
— эндпоинт Object Storage.s3 cp
— команда для загрузки объекта. Чтобы загрузить объект, в первой части команды укажите путь к локальному файлу, который нужно загрузить, а во второй — имя вашего бакета и ключ, по которому объект будет храниться в бакете.
Чтобы загрузить все объекты из локальной директории, используйте команду:
aws --endpoint-url=https://storage.yandexcloud.net/ \ s3 cp --recursive <путь_к_локальной_директории>/ s3://<имя_бакета>/<префикс>/
Где:
--endpoint-url
— эндпоинт Object Storage.s3 cp --recursive
— команда для загрузки всех объектов из локальной директории, включая вложенные. Чтобы загрузить объекты, в первой части команды укажите путь к папке, из которой нужно скопировать файлы в бакет, а во второй — имя вашего бакета и идентификатор папки в хранилище.
Команда aws s3 cp
— высокоуровневая, ее функциональность ограничена. Подробнее см. в справочнике AWS CLI
Terraform
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Перед началом работы получите статические ключи доступа — секретный ключ и идентификатор ключа, используемые для аутентификации в Object Storage.
Чтобы создать объект в существующем бакете:
-
Опишите в конфигурационном файле параметры ресурсов, которые необходимо создать.
resource "yandex_storage_object" "test-object" { access_key = "<идентификатор_статического_ключа>" secret_key = "<секретный_ключ>" bucket = "<имя_бакета>" key = "<имя_объекта>" source = "<путь_к_файлу>" }
Где:
-
access_key
— идентификатор статического ключа доступа. -
secret_key
— значение секретного ключа доступа. -
bucket
— имя бакета для добавления объекта. Обязательный параметр. -
key
— имя объекта в бакете. Обязательный параметр. Формат имени:- длина — от 3 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
source
— относительный или абсолютный путь к файлу, который нужно загрузить в бакет.
Более подробную информацию о ресурсах, которые вы можете создать с помощью Terraform, см. в документации провайдера
. -
-
Проверьте корректность конфигурационных файлов.
-
В командной строке перейдите в папку, где вы создали конфигурационный файл.
-
Выполните проверку с помощью команды:
terraform plan
Если конфигурация описана верно, в терминале отобразится список создаваемых ресурсов и их параметров. Если в конфигурации есть ошибки, Terraform на них укажет.
-
-
Разверните облачные ресурсы.
-
Если в конфигурации нет ошибок, выполните команду:
terraform apply
-
Подтвердите создание ресурсов: введите в терминал слово
yes
и нажмите Enter.После этого в указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
.
-
Чтобы загрузить объект, воспользуйтесь методом S3 API upload.
Загрузка версии объекта с блокировкой (object lock)
Если в бакете включены версионирование и блокировки версий объектов, вы можете указать настройки блокировки (запрета на удаление или перезапись) при загрузке версии объекта.
-
Если у вас еще нет AWS CLI, установите и сконфигурируйте его.
-
Выполните команду:
aws --endpoint-url=https://storage.yandexcloud.net/ \ s3api put-object \ --body <путь_к_локальному_файлу> \ --bucket <имя_бакета> \ --key <ключ_объекта> \ --object-lock-mode <тип_временной_блокировки> \ --object-lock-retain-until-date <дата_и_время_окончания_временной_блокировки> \ --object-lock-legal-hold-status <статус_бессрочной_блокировки>
Где:
--endpoint-url
— эндпоинт Object Storage.s3api put-object
— команда для загрузки версии объекта. Чтобы загрузить версии объекта с блокировкой, укажите следующие параметры:-
--body
— путь к файлу, который нужно загрузить в бакет. -
--bucket
— имя вашего бакета. -
--key
— ключ, по которому объект будет храниться в бакете. -
--object-lock-mode
— тип временной блокировки:GOVERNANCE
— временная управляемая блокировка.COMPLIANCE
— временная строгая блокировка.
-
--object-lock-retain-until-date
— дата и время окончания временной блокировки в любом из форматов, описанных в стандарте HTTP . Например,Mon, 12 Dec 2022 09:00:00 GMT
. Указывается только вместе с параметром--object-lock-mode
. -
--object-lock-legal-hold-status
— статус бессрочной блокировки:ON
— блокировка установлена.OFF
— блокировка не установлена.
-
Вы можете установить на версию объекта только временную блокировку (параметры
object-lock-mode
иobject-lock-retain-until-date
), только бессрочную блокировку (object-lock-legal-hold-status
) или обе сразу. Подробнее об их совместной работе см. в разделе Типы блокировок.
Чтобы загрузить версию объекта с блокировкой, воспользуйтесь методом S3 API upload с заголовками X-Amz-Object-Lock-Mode
и X-Amz-Object-Lock-Retain-Until-Date
для временной блокировки и X-Amz-Object-Lock-Legal-Hold
для бессрочной.
Если для бакета также настроены временные блокировки по умолчанию, все объекты в него нужно загружать с указанием их MD5-хешей
-
Вычислите MD5-хэш файла и закодируйте его по схеме Base64
:md5=($(md5sum <путь_к_локальному_файлу>)) md5_base64=$(echo $md5 | base64)
-
Если у вас еще нет AWS CLI, установите и сконфигурируйте его.
-
Загрузите объект в бакет:
aws --endpoint-url=https://storage.yandexcloud.net/ \ s3api put-object \ --body <путь_к_локальному_файлу> \ --bucket <имя_бакета> \ --key <ключ_объекта> \ --content-md5 $md5_base64
Где:
--endpoint-url
— эндпоинт Object Storage.s3api put-object
— команда для загрузки версии объекта. Чтобы загрузить версии объекта, укажите следующие параметры:--body
— путь к файлу, который нужно загрузить в бакет.--bucket
— имя вашего бакета.--key
— ключ, по которому объект будет храниться в бакете.--content-md5
— закодированный MD5-хеш объекта.
Также вы можете добавить к команде параметры:
--object-lock-mode
и--object-lock-retain-until-date
, чтобы установить на версию объекта временную блокировку, отличную от настроек бакета по умолчанию;--object-lock-legal-hold-status
, чтобы установить на версию объекта бессрочную блокировку.
Подробнее об этих параметрах см. в инструкции выше.
Чтобы загрузить версию объекта с временной блокировкой по умолчанию, воспользуйтесь методом S3 API upload с заголовком Content-MD5
.