S3cmd
S3cmd
Примечание
Подготовка к работе
-
Назначьте сервисному аккаунту роли, которые нужны для вашего проекта, например storage.editor на бакет — для работы с конкретным бакетом, или на каталог — для работы со всеми бакетами в каталоге. Подробнее о ролях см. на странице Управление доступом с помощью Yandex Identity and Access Management.
Чтобы работать с объектами в зашифрованном бакете, у пользователя или сервисного аккаунта вместе с ролью
storage.configurer
должны быть следующие роли на ключ шифрования:kms.keys.encrypter
— для чтения ключа, шифрования и загрузки объектов;kms.keys.decrypter
— для чтения ключа, расшифровки и скачивания объектов;kms.keys.encrypterDecrypter
— включает разрешения, предоставляемые ролямиkms.keys.encrypter
иkms.keys.decrypter
.
Подробнее см. Сервисные роли Key Management Service.
-
Создайте статический ключ доступа.
В результате вы получите данные статического ключа доступа. Для аутентификации в Object Storage вам понадобятся:
key_id
— идентификатор статического ключа доступа;secret
— секретный ключ.
Сохраните
key_id
иsecret
, так как повторное получение значения ключа будет невозможно.
Примечание
Сервисный аккаунт может просматривать список бакетов только в том каталоге, в котором он был создан.
Сервисный аккаунт может выполнять действия с объектами в бакетах, которые созданы в каталогах, отличных от каталога сервисного аккаунта. Для этого назначьте сервисному аккаунту роли на нужный каталог или бакет в нем.
Установка
Чтобы установить 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 не поддерживает работу с версиями объектов. Чтобы работать с версиями объектов, используйте AWS CLI.
- По умолчанию 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
Загрузка объекта с указанием MIME-типов
Для указания MIME-типовput
со следующими флагами:
s3cmd put \
--no-guess-mime-type \
--no-mime-magic \
--mime-type="application/javascript" \
<путь_к_локальному_файлу> \
s3://<имя_бакета>/
Где --mime-type
— MIME-тип вашего объекта.