AWS Command Line Interface (AWS CLI)

AWS CLI — это интерфейс командной строки для работы с сервисами AWS. Общий порядок вызова команд смотрите в официальной документации Amazon.

Для работы с Yandex Object Storage с помощью AWS CLI вы можете использовать следующие наборы команд:

  • s3api — команды, соответствующие операциям в REST API. Перед использованием ознакомьтесь с перечнем поддерживаемых операций.
  • s3 — дополнительные команды, упрощающие работу с большим количеством объектов.

Подготовка к работе

  1. Создайте сервисный аккаунт.
  2. Назначьте роль сервисному аккаунту.
  3. Создайте статический ключ доступа.

Установка

Для установки AWS CLI воспользуйтесь инструкцией на сайте производителя.

Настройка

Для настройки AWS CLI используйте команду aws configure. Команда запросит значения для следующих параметров:

  1. AWS Access Key ID — введите идентификатор ключа, который вы получили при генерации статического ключа.

  2. AWS Secret Access Key — введите секретный ключ, который вы получили при генерации статического ключа.

  3. Default region name — введите значение ru-central1.

    Примечание

    Для работы с Yandex Object Storage всегда указывайте регион — ru-central1. Другие значения региона могут привести к ошибке авторизации.

  4. Значения остальных параметров оставьте без изменений.

Конфигурационные файлы

В результате своей работы команда 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.
  • При работе в macOS, в некоторых случаях требуется запуск вида:
    export PYTHONPATH=/Library/Python/2.7/site-packages; aws --endpoint-url=https://storage.yandexcloud.net s3 ls
    

Примеры операций

Создать бакет

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