AWS Command Line Interface (AWS CLI)
AWS CLI — это интерфейс командной строки для работы с сервисами AWS. Общий порядок вызова команд смотрите в официальной документации Amazon.
Для работы с Object Storage с помощью AWS CLI вы можете использовать следующие наборы команд:
- s3api — команды, соответствующие операциям в REST API. Перед использованием ознакомьтесь с перечнем поддерживаемых операций.
- s3 — дополнительные команды, упрощающие работу с большим количеством объектов.
Подготовка к работе
- Создайте сервисный аккаунт.
- Назначьте нужную роль сервисному аккаунту. Подробнее о ролях см. в документации Identity and Access Management.
- Создайте статический ключ доступа.
Установка
Для установки AWS CLI воспользуйтесь инструкцией на сайте производителя.
Настройка
Для настройки AWS CLI используйте команду aws configure
. Команда запросит значения для следующих параметров:
-
AWS Access Key ID
— введите идентификатор ключа, который вы получили при генерации статического ключа. -
AWS Secret Access Key
— введите секретный ключ, который вы получили при генерации статического ключа. -
Default region name
— введите значениеru-central1
.Примечание
Для работы с Object Storage всегда указывайте регион —
ru-central1
. Другие значения региона могут привести к ошибке авторизации. -
Значения остальных параметров оставьте без изменений.
Конфигурационные файлы
В результате своей работы команда aws configure
сохранит настройки в файлах:
-
Статический ключ в
.aws/credentials
в формате:[default] aws_access_key_id = id aws_secret_access_key = secretKey
-
Регион по умолчанию в
.aws/config
в формате:[default] region=ru-central1
Особенности
При использовании AWS CLI для работы с Object Storage учитывайте следующие особенности этого инструмента:
-
AWS CLI работает с Object Storage как с иерархической файловой системой и ключи объектов имеют вид пути к файлу.
-
При запуске команды
aws
для работы с Object Storage обязателен параметр--endpoint-url
, поскольку по умолчанию клиент настроен на работу с серверами Amazon. Чтобы не указывать параметр вручную при каждом запуске, создайте псевдоним (alias), например:alias ycs3='aws s3 --endpoint-url=https://storage.yandexcloud.net'
С таким псевдонимом будут равносильны, например, две следующие команды:
aws s3 --endpoint-url=https://storage.yandexcloud.net ls ycs3 ls
Чтобы псевдоним создавался при каждом запуске терминала, добавьте команду
alias
в конфигурационный файл~/.bashrc
или~/.zshrc
, в зависимости от типа используемой оболочки. -
При работе в macOS, в некоторых случаях требуется запуск вида:
export PYTHONPATH=/Library/Python/2.7/site-packages; aws --endpoint-url=https://storage.yandexcloud.net s3 ls
Примеры операций
Примечание
Для включения отладочного вывода в консоли используйте ключ --debug
.
Создать бакет
aws --endpoint-url=https://storage.yandexcloud.net s3 mb s3://bucket-name
Примечание
При создании бакета помните об ограничениях на имя.
Загрузить объекты
Загрузить объекты можно разными способами, например:
-
Загрузить все объекты из локальной директории:
aws --endpoint-url=https://storage.yandexcloud.net \ s3 cp --recursive local_files/ s3://bucket-name/path_style_prefix/
-
Загрузить объекты, описанные в фильтре
--include
, и пропустить объекты, описанные в фильтре--exclude
:aws --endpoint-url=https://storage.yandexcloud.net \ s3 cp --recursive --exclude "*" --include "*.log" \ local_files/ s3://bucket-name/path_style_prefix/
-
Загрузить объекты по одному, запуская для каждого объекта команду следующего вида:
aws --endpoint-url=https://storage.yandexcloud.net \ s3 cp testfile.txt s3://bucket-name/path_style_prefix/textfile.txt
Получить список объектов
aws --endpoint-url=https://storage.yandexcloud.net \
s3 ls --recursive s3://bucket-name
Удалить объекты
Удалить объекты можно разными способами, например:
-
Удалить все объекты с заданным префиксом:
aws --endpoint-url=https://storage.yandexcloud.net \ s3 rm s3://bucket-name/path_style_prefix/ --recursive
-
Удалить объекты, описанные в фильтре
--include
, и пропустить объекты, описанные в фильтре--exclude
:aws --endpoint-url=https://storage.yandexcloud.net \ s3 rm s3://bucket-name/path_style_prefix/ --recursive \ --exclude "*" --include "*.log"
-
Удалить объекты по одному, запуская для каждого объекта команду следующего вида:
aws --endpoint-url=https://storage.yandexcloud.net \ s3 rm s3://bucket-name/path_style_prefix/textfile.txt
Получить объект
aws --endpoint-url=https://storage.yandexcloud.net \
s3 cp s3://bucket-name/textfile.txt textfile.txt