S3cmd
S3cmd
Подготовка к работе
- Создайте сервисный аккаунт.
- Назначьте сервисному аккаунту роли, необходимые для вашего проекта. Подробнее о ролях см. в документации Identity and Access Management.
- Создайте статический ключ доступа.
Примечание
Сервисный аккаунт может просматривать список бакетов только в том каталоге, в котором он был создан.
Сервисный аккаунт может выполнять действия с объектами в бакетах, которые созданы в каталогах, отличных от каталога сервисного аккаунта. Для этого назначьте сервисному аккаунту роли на нужный каталог или бакет в нем.
Установка
Чтобы установить S3cmd, ознакомьтесь с разделом установки
Настройка
Для настройки S3cmd используйте команду s3cmd --configure
. При запросе укажите значения для следующих параметров:
-
Access Key
— введите идентификатор ключа, который вы получили при генерации статического ключа. -
Secret Key
— введите секретный ключ, который вы получили при генерации статического ключа. -
Default Region
— введитеru-central1
.Для работы с Object Storage всегда указывайте регион
ru-central1
. Другие значения региона могут привести к ошибке авторизации. -
S3 Endpoint
— введитеstorage.yandexcloud.net
. -
DNS-style bucket+hostname:port template for accessing a bucket
— введите%(bucket)s.storage.yandexcloud.net
. -
Значения остальных параметров оставьте без изменений.
Программа попытается установить соединение с Object Storage и получить список бакетов. В случае успеха, программа выведет Success. Your access key and secret key worked fine :-)
.
Команда s3cmd --configure
сохранит настройки в файле ~/.s3cfg
в формате:
[default]
access_key = id
secret_key = secretKey
bucket_location = ru-central1
host_base = storage.yandexcloud.net
host_bucket = %(bucket)s.storage.yandexcloud.net
При необходимости эти настройки можно изменить напрямую в файле. Также можно указать настройки при запуске программы с помощью соответствующих параметров.
Для корректной работы команд, управляющих хостингом статических сайтов, в конфигурационный файл необходимо вручную добавить параметр
website_endpoint = http://%(bucket)s.website.yandexcloud.net
Особенности
- S3cmd работает с Object Storage как с иерархической файловой системой и ключи объектов имеют вид пути к файлу.
- По умолчанию S3cmd загружает объекты в стандартное хранилище. Чтобы указать класс хранилища, при загрузке объекта используйте ключ
--storage-class
. - По умолчанию при загрузке объекта S3cmd может отправлять дополнительный заголовок
X-Amz-Meta-S3cmd-Attrs
с атрибутами вашего файла (права доступа, владельцы файла, временны́е метки). Значение заголовка сохраняется в метаданных объекта. Отключить отправку атрибутов можно с помощью параметраpreserve_attrs = False
в конфигурационном файле~/.s3cfg
или ключа--no-preserve
.
Примеры операций
Примечание
Для включения отладочного вывода в консоли используйте ключ --debug
.
Получить список бакетов
Примечание
Авторизация в Amazon S3 HTTP API и инструментах с его поддержкой осуществляется с помощью статических ключей, полученных для сервисного аккаунта.
Вы можете просматривать список бакетов только в том каталоге, в котором был создан используемый сервисный аккаунт.
s3cmd ls
Создать бакет
s3cmd mb s3://bucket
При создании бакета помните об ограничениях на имя.
Загрузить объект в холодное хранилище
s3cmd --storage-class COLD put local_file s3://bucket/object
Получить список объектов
s3cmd ls s3://bucket
Получить объект
s3cmd get s3://bucket/object local_file
Удалить объект
s3cmd del s3://bucket/object