Skip to content

AWS CLI

AWS CLI — консольная утилита для управления сервисами AWS. Подробное руководство по работе доступно на сайте Amazon.

В работе с Object Storage можно использовать два набора команд:

  • s3api — команды, которые соответствуют вызовам REST API;
  • s3 — дополнительные команды для работы с бакетами и объектами.

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

  1. Cоздайте сервисный аккаунт.
  2. Назначьте сервисному аккаунту роль storage.bucket.editor или выше.
  3. Создайте HMAC-ключ.
  4. Скопируйте и сохраните обе части HMAC-ключа: Access key и Secret key.

Настройка AWS CLI

Внимание!

Поддерживается работа с AWS CLI до версии 2.22.35 включительно.
Если вы используете более новую версию, то при загрузке объекта может возникать ошибка MissingContentLength.

  1. Установите поддерживаемую версию AWS CLI.

    Инструкция по установке

    Linux:

    bash
    curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-2.22.35.zip" -o "awscliv2.zip"
    unzip awscliv2.zip
    sudo ./aws/install

    MacOS:

    bash
    curl "https://awscli.amazonaws.com/AWSCLIV2-2.22.35.pkg" -o "AWSCLIV2.pkg"
    sudo installer -pkg AWSCLIV2.pkg -target /

    Также вы можете установить AWS CLI с помощью менеджера пакетов brew:

    bash
    brew install awscli

    Windows:

    Скачайте установочный файл https://awscli.amazonaws.com/AWSCLIV2-2.22.35.msi.
    Дважды щелкните по файлу, и мастер установки проведет вас через весь процесс.

  2. Выполните команду:

    bash
    aws configure
  3. Введите следующие параметры:

    • AWS Access Key ID — значение Access key из HMAC-ключа (пример — _Ukpnpw3RiCx3iuPhn-t);
    • AWS Secret Access Key — значение Secret key из HMAC-ключа (пример — 3LIK2LbwYqER7oGr3cX4WSC31YN83yZnDgcXyjewX);
    • Default region name — регион по умолчанию (укажите ru-central1);
    • Default output format — формат вывода по умолчанию (json, text или table), см. подробнее в документации Amazon.

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

Обе части HMAC-ключа — Access key и Secret key по умолчанию сохраняются в конфигурационном файле .aws/credentials в секции default, например:

bash
[default]
aws_access_key_id = _Ukpnpw3RiCx3iuPhn-t #Access key из HMAC-ключа
aws_secret_access_key = 3LIK2LbwYqER7oGr3cX4WSC31YN83yZnDgcXyjewX #Secret key из HMAC-ключа

Регион по умолчанию и эндпоинт будут сохранены в конфигурационном файле ./aws/config в секции default:

bash
[default]
region = ru-central1
endpoint_url = https://storage.mwsapis.ru

При необходимости вы можете создать несколько профилей для разных учетных записей. Для этого укажите настройки для каждого профиля в конфигурационном файле .aws/credentials:

bash
[default]
aws_access_key_id = <Access key>
aws_secret_access_key = <Secret key>

[profile1]
aws_access_key_id = <Access key1>
aws_secret_access_key = <Secret key1>

[profile2]
aws_access_key_id = <Access key2>
aws_secret_access_key = <Secret key2>

Профиль, указанный в секции default, используется в качестве профиля по умолчанию. Чтобы переключаться между профилями, используйте в командах AWS CLI опцию --profile. Например, приведенная ниже команда создаст бакет bucket1 от имени пользователя с профилем profile1:

bash
aws --profile=profile1 s3 mb s3://bucket1

Примеры команд

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

bash
aws s3 mb s3://<имя_бакета>
bash
aws s3api create-bucket --bucket <имя_бакета>

Загрузить объект в бакет

bash
aws s3 cp <путь_к_локальному_файлу>/ s3://<имя_бакета>/<ключ_объекта>
bash
aws s3api put-object --bucket <имя_бакета> --key <ключ объекта> --body <путь клокальному_файлу>

Скачать объект из бакета

bash
aws s3 cp s3://<имя бакета>/<ключ ключ объекта> <путь для сохранения файла>
bash
aws s3api get-object --bucket <имя бакета> --key <ключ объекта> <путь для сохранения файла>

Получить список объектов в бакете

bash
aws s3 ls --recursive s3://<имя бакета>
bash
aws s3api list-objects-v2 --bucket <имя бакета>

Удалить объект

bash
aws s3 rm s3://bucket/object
bash
aws s3api delete-object --bucket <имя бакета> --key <ключ объекта>