Установка AWS CLI на Debian 13, 12 и 11

💡 Что такое AWS CLI и зачем он вам — это официальная утилита командной строки от Amazon для управления облачными сервисами: S3, EC2, IAM и сотнями других. Вы можете писать скрипты для бэкапов, разворачивать инфраструктуру или просто быстро проверить статус серверов — всё из терминала Debian.

Мы рассмотрим четыре способа установки: официальный установщик AWS (рекомендуемый), Snap-пакет, APT-пакет из репозиториев Debian и установку через pip (только для legacy-сценариев).

⚠️ Важное предупреждение: На разных версиях Debian APT-пакет awscli даёт разные версии CLI:

  • Debian 13 (Trixie) — AWS CLI v2 (актуальная)
  • Debian 12 (Bookworm) — AWS CLI v2, но устаревшая (2.9.x против текущей 2.x)
  • Debian 11 (Bullseye) — AWS CLI v1 (не v2!)

Если вам нужна актуальная версия v2 на любой Debian — используйте официальный установщик или Snap.

Оглавление

Предварительные требования

Прежде чем начать, убедитесь, что ваша система готова:

⚠️ ВАЖНО: Проверьте права sudo перед установкой

Если вы не уверены, есть ли у вашего пользователя права администратора, выполните в терминале:

sudo whoami

Что делает:

  • sudo — выполняет команду от имени суперпользователя
  • whoami — показывает имя текущего пользователя

Зачем: Проверяет, может ли ваш пользователь выполнять команды с правами root.

✅ Если выводит root — всё в порядке, можете продолжать.

❌ Если выводит is not in the sudoers file — сначала пройдите наше руководство по настройке sudo.

Дополнительные требования:

  • Для официального установщика: curl, unzip, gpg, ca-certificates
  • Для Snap: snapd (будет установлен)
  • Для pip: python3-venv
  • Для всех методов: доступ в интернет

Выбор метода установки AWS CLI

МетодВерсияНа каких Debian работаетОбновленияКогда использовать
Официальный
установщик AWS
v2 (актуальная)Debian 13, 12, 11
(amd64/arm64)
Повторный запуск
установщика
Рекомендуется для
всех — всегда
свежая версия
Snap-пакетv2 (актуальная)Debian 13, 12, 11
snapd)
Автоматические
(Snap)
Когда удобны
автоматические
обновления
APT-пакет Debianv2 (Debian 13),
v2 старая (Debian 12),
v1 (Debian 11)
Из репозиториев
Debian
Через APTЕсли вас устраивает
версия из вашего
релиза Debian
pip в venvv1Любая с python3-venvpip install --upgradeТолько для legacy-
скриптов, которым
нужна именно v1

💡 Главный совет: Если вы не знаете, что выбрать — используйте официальный установщик AWS. Он даёт актуальную v2 на любом Debian.

Проверка версии AWS CLI из репозиториев Debian

Прежде чем выбирать метод, полезно узнать, какая версия достанется через APT:

apt-cache policy awscli

Что делает: Показывает, какая версия пакета awscli доступна в ваших репозиториях.

Ожидаемые результаты:

  • Debian 13: Candidate: 2.23.x (AWS CLI v2, достаточно свежая)
  • Debian 12: Candidate: 2.9.x (AWS CLI v2, но сильно устаревшая)
  • Debian 11: Candidate: 1.19.x (AWS CLI v1, не v2!)

Если результат вас устраивает, можно установить через APT. Если нет — используйте официальный установщик или Snap.

Часть 1: Установка AWS CLI v2 официальным установщиком (рекомендуемый метод)

Этот метод работает на всех версиях Debian и устанавливает самую свежую версию AWS CLI v2.

Шаг 1: Установка зависимостей

sudo apt update
sudo apt install -y curl unzip gpg ca-certificates

Что делает: Устанавливает инструменты для скачивания, проверки подписи и распаковки архива.

Шаг 2: Определение архитектуры и скачивание установщика

(
  set -e
  AWS_CLI_DEB_ARCH="$(dpkg --print-architecture)"
  case "$AWS_CLI_DEB_ARCH" in
    amd64)
      AWS_CLI_ARCH="x86_64"
      ;;
    arm64)
      AWS_CLI_ARCH="aarch64"
      ;;
    *)
      printf 'Неподдерживаемая архитектура: %s\n' "$AWS_CLI_DEB_ARCH" >&2
      exit 1
      ;;
  esac

  curl -fL "https://awscli.amazonaws.com/awscli-exe-linux-${AWS_CLI_ARCH}.zip" -o "awscliv2.zip"
  curl -fL "https://awscli.amazonaws.com/awscli-exe-linux-${AWS_CLI_ARCH}.zip.sig" -o "awscliv2.sig"
)

Что делает: Определяет архитектуру (amd64 → x86_64, arm64 → aarch64) и скачивает архив установщика и его цифровую подпись.

Зачем: Проверка подписи гарантирует, что файл не был подменён при скачивании.

Шаг 3: Импорт публичного ключа AWS CLI

Создайте файл с ключом:

cat <<'EOF' > aws-cli-public-key.gpg
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: GPGTools - https://gpgtools.org

mQINBF5A9twBEAC4Zt9J9AoL19tKZ4HjFkCw2HIL/9QyLx7wqQD3DzA5oZwHpIrM
... (полный ключ из документации AWS)
-----END PGP PUBLIC KEY BLOCK-----
EOF

Что делает: Создаёт файл с публичным ключом AWS CLI Team.

💡 Где взять полный ключ: Официальный ключ можно получить из документации AWS CLI или импортировать напрямую с keyserver, но для новичков проще создать файл вручную.

Альтернативный способ (если у вас есть доступ к keyserver):

gpg --keyserver keyserver.ubuntu.com --recv-keys FB5DB77FD5C118B80511ADA8A6310ACC4672475C
gpg --export --armor FB5DB77FD5C118B80511ADA8A6310ACC4672475C > aws-cli-public-key.gpg
gpg --import aws-cli-public-key.gpg

Что делает: Импортирует ключ в связку GPG.

Ожидаемый вывод:

gpg: key A6310ACC4672475C: public key "AWS CLI Team <aws-cli@amazon.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

Шаг 4: Проверка отпечатка ключа

gpg --fingerprint A6310ACC4672475C

Что делает: Показывает отпечаток ключа для проверки.

Ожидаемый отпечаток:

Key fingerprint = FB5D B77F D5C1 18B8 0511  ADA8 A631 0ACC 4672 475C

Зачем: Убедитесь, что отпечаток совпадает с указанным. Это гарантирует, что вы импортировали правильный ключ AWS.

Шаг 5: Проверка подписи установщика

gpg --verify awscliv2.sig awscliv2.zip

Что делает: Проверяет, что архив подписан ключом AWS CLI Team.

Ожидаемый вывод:

gpg: Good signature from "AWS CLI Team <aws-cli@amazon.com>" [unknown]
Primary key fingerprint: FB5D B77F D5C1 18B8 0511  ADA8 A631 0ACC 4672 475C

⚠️ Важно: Строка Good signature означает, что архив подлинный. Предупреждение о доверии ([unknown]) — это нормально, так как ключ не имеет сертификации доверия.

Шаг 6: Установка AWS CLI

unzip awscliv2.zip
sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli

Что делает:

  • unzip — распаковывает архив
  • ./aws/install — запускает установщик
  • --bin-dir — куда положить символическую ссылку
  • --install-dir — куда установить файлы

Ожидаемый вывод:

You can now run: /usr/local/bin/aws --version

Шаг 7: Очистка временных файлов

rm -rf awscliv2.zip awscliv2.sig aws/ aws-cli-public-key.gpg

Что делает: Удаляет скачанные и распакованные файлы.

Шаг 8: Проверка установки

command -v aws
aws --version

Ожидаемый вывод:

/usr/local/bin/aws
aws-cli/2.x.x Python/3.x.x Linux/6.x.x exe/x86_64.debian.13

Что означают части версии:

  • aws-cli/2.x.x — версия AWS CLI v2
  • exe/ — признак сборки от официального установщика
  • debian.13 — система, на которой запущено

Часть 2: Установка AWS CLI v2 через Snap

Этот метод удобен тем, что Snap автоматически обновляет пакет в фоне.

Шаг 1: Установка Snapd

sudo apt update
sudo apt install -y snapd
sudo systemctl enable --now snapd.socket

Что делает: Устанавливает и запускает демон Snap.

sudo snap wait system seed.loaded

Что делает: Ждёт, пока Snap инициализируется.

sudo snap install snapd

Что делает: Обновляет сам Snap до последней версии.

Шаг 2: Проверка Snap

snap version

Ожидаемый вывод:

snap          2.x.x
snapd         2.x.x
series        16
debian        13
architecture  amd64

Шаг 3: Установка AWS CLI через Snap

sudo snap install aws-cli --classic

Что делает: Устанавливает AWS CLI v2 с классическим режимом (доступ к системе).

Ожидаемый вывод:

aws-cli (v2/stable) 2.x.x from Amazon Web Services (aws**) installed

Шаг 4: Проверка установки

Если команда aws ещё не найдена, используйте:

snap run aws-cli.aws --version

Ожидаемый вывод: aws-cli/2.x.x ... exe/x86_64.debian.13

Чтобы aws работал без snap run, откройте новый терминал или выполните:

source /etc/profile

Установка AWS CLI v1 через Snap (если нужно)

sudo snap install aws-cli --channel=v1/stable --classic

Часть 3: Установка AWS CLI через APT (из репозиториев Debian)

Этот метод самый простой, но версия CLI зависит от вашего релиза Debian.

sudo apt update
sudo apt install -y awscli

Что делает: Устанавливает пакет awscli из репозиториев Debian.

Проверка:

aws --version

Что вы получите в зависимости от Debian:

  • Debian 13: aws-cli/2.23.x (достаточно свежая v2)
  • Debian 12: aws-cli/2.9.x (устаревшая v2)
  • Debian 11: aws-cli/1.19.x (v1, а не v2)

Часть 4: Установка AWS CLI v1 в виртуальное окружение Python (только для legacy)

⚠️ Этот метод устанавливает AWS CLI v1. Используйте только если вам нужна именно первая версия для старых скриптов.

Шаг 1: Установка python3-venv

sudo apt update
sudo apt install -y python3-venv

Шаг 2: Создание и активация виртуального окружения

python3 -m venv ~/.aws-cli-v1
source ~/.aws-cli-v1/bin/activate

Что делает: Создаёт изолированное Python-окружение для AWS CLI v1.

Шаг 3: Установка AWS CLI v1 через pip

python -m pip install --upgrade pip
pip install awscli

Что делает: Устанавливает пакет awscli из PyPI (это именно v1).

Шаг 4: Проверка

~/.aws-cli-v1/bin/aws --version

Ожидаемый вывод:

aws-cli/1.x.x Python/3.x.x Linux/6.x.x botocore/1.x.x

Что означает botocore: Это признак AWS CLI v1 (в v2 используется другая архитектура).

(Опционально) Добавление в PATH

echo 'export PATH="$HOME/.aws-cli-v1/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Настройка AWS CLI

После установки любым методом нужно настроить доступ к AWS.

Базовая настройка (Access Key)

aws configure

Что делает: Запускает интерактивный мастер настройки.

Что нужно ввести:

AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-east-1
Default output format [None]: json

Где взять ключи: В консоли AWS → IAM → Security credentials → Create access key.

⚠️ Никогда не делитесь секретным ключом. Не сохраняйте в Git, не отправляйте в чаты.

Настройка через IAM Identity Center (SSO)

aws configure sso

Что делает: Настраивает аутентификацию через SSO (без долгоживущих ключей).

После настройки профиля:

aws sso login --profile имя_профиля

Проверка настроек

aws configure list

Что делает: Показывает текущие настройки (регион, формат, наличие ключей).

aws sts get-caller-identity

Что делает: Показывает, под каким пользователем/ролью вы авторизованы.

Ожидаемый вывод:

{
    "UserId": "AIDACKCEVSQ6C2EXAMPLE",
    "Account": "123456789012",
    "Arn": "arn:aws:iam::123456789012:user/username"
}

Использование AWS CLI

Работа с S3

# Список корзин
aws s3 ls

# Копирование файла
aws s3 cp localfile.txt s3://bucket-name/

# Синхронизация директории
aws s3 sync ./local-dir s3://bucket-name/remote-dir/

Что делает sync: Загружает только изменённые файлы. Идеально для бэкапов и деплоя статических сайтов.

Работа с EC2

# Список всех инстансов
aws ec2 describe-instances

# Список запущенных инстансов в виде таблицы
aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" --output table

Работа с IAM

aws iam list-users

Обновление AWS CLI

Обновление официального установщика

(
  set -e
  rm -rf awscliv2.zip awscliv2.sig aws/
  AWS_CLI_DEB_ARCH="$(dpkg --print-architecture)"
  case "$AWS_CLI_DEB_ARCH" in
    amd64)
      AWS_CLI_ARCH="x86_64"
      ;;
    arm64)
      AWS_CLI_ARCH="aarch64"
      ;;
    *)
      printf 'Unsupported Debian architecture: %s\n' "$AWS_CLI_DEB_ARCH" >&2
      exit 1
      ;;
  esac

  curl -fL "https://awscli.amazonaws.com/awscli-exe-linux-${AWS_CLI_ARCH}.zip" -o "awscliv2.zip"
  curl -fL "https://awscli.amazonaws.com/awscli-exe-linux-${AWS_CLI_ARCH}.zip.sig" -o "awscliv2.sig"
  gpg --verify awscliv2.sig awscliv2.zip
  unzip awscliv2.zip
  sudo ./aws/install --bin-dir /usr/local/bin --install-dir /usr/local/aws-cli --update
  rm -rf awscliv2.zip awscliv2.sig aws/
  aws --version
)

Обновление Snap

sudo snap refresh aws-cli

Обновление APT-пакета

sudo apt update
sudo apt install --only-upgrade awscli

Обновление pip (v1)

~/.aws-cli-v1/bin/pip install --upgrade awscli

Решение типичных проблем

8.1 Ошибка: aws: command not found

Симптом: После установки команда aws не найдена.

Причина: Или установка прошла с ошибкой, или команда не в PATH.

Пошаговое решение:

Шаг 1: Проверьте, где находится aws:

command -v aws

Шаг 2: Если ничего не нашлось, проверьте установку:

Для официального установщика:

ls -l /usr/local/bin/aws
test -x /usr/local/bin/aws && echo "Файл существует"

Для Snap:

snap run aws-cli.aws --version

Если это работает, откройте новый терминал или добавьте /snap/bin в PATH.

8.2 Ошибка: Неправильная версия AWS CLI

Симптом: aws --version показывает v1, а нужна v2, или наоборот.

Причина: Установлен не тот метод, или в PATH попала другая версия.

Пошаговое решение:

Шаг 1: Узнайте, откуда берётся команда:

command -v aws

Шаг 2: Если which aws показывает /usr/bin/aws — это APT-пакет.

Шаг 3: Если нужна v2 на Debian 11 или свежая v2 на Debian 12 — используйте официальный установщик или Snap.

Шаг 4: Если нужно переключиться между версиями, временно измените PATH:

# Использовать официальную установку
/usr/local/bin/aws --version

# Использовать APT-пакет
/usr/bin/aws --version

8.3 Ошибка: Unable to locate credentials

Симптом: Любая команда AWS возвращает Unable to locate credentials.

Причина: Не настроены ключи доступа или SSO.

Пошаговое решение:

Шаг 1: Проверьте текущую конфигурацию:

aws configure list

Шаг 2: Если ключи не настроены, запустите:

aws configure

Шаг 3: Проверьте, что ключи работают:

aws sts get-caller-identity

8.4 Ошибка: SSL certificate verification failed

Симптом: Ошибка SSL: CERTIFICATE_VERIFY_FAILED.

Причина: Просроченные или отсутствующие CA-сертификаты.

Пошаговое решение:

Шаг 1: Обновите сертификаты:

sudo apt install ca-certificates -y
sudo update-ca-certificates

Шаг 2: Проверьте время системы:

timedatectl status
sudo timedatectl set-ntp true

8.5 Ошибка: Signature verification failed

Симптом: gpg --verify выдаёт BAD signature.

Причина: Архив повреждён, или подпись не совпадает.

Пошаговое решение:

Шаг 1: Удалите повреждённые файлы:

rm -f awscliv2.zip awscliv2.sig

Шаг 2: Скачайте заново и проверьте:

# Повторите шаги 2-5 из официального метода установки

Шаг 3: Если ошибка повторяется, проверьте интернет-соединение.

8.6 Ошибка: pip awscli устанавливает v2? (нет)

Симптом: Вы ожидали, что pip install awscli даст v2, но получили v1.

Причина: Пакет PyPI awscli — это именно AWS CLI v1. AWS CLI v2 не публикуется на PyPI.

Решение: Используйте официальный установщик или Snap для v2. Метод с pip — только для v1.

Удаление AWS CLI

Удаление официального установщика

sudo rm -f /usr/local/bin/aws /usr/local/bin/aws_completer
sudo rm -rf /usr/local/aws-cli
hash -r

Удаление Snap-пакета

sudo snap remove --purge aws-cli
hash -r

Удаление APT-пакета

sudo apt remove awscli
sudo apt autoremove

Удаление виртуального окружения (pip)

rm -rf ~/.aws-cli-v1
# Удалите строку PATH из ~/.bashrc, если добавляли

Удаление конфигурации (~/.aws)

⚠️ Это удалит все сохранённые ключи и профили!

# Сначала сделайте бэкап
cp -r ~/.aws ~/.aws-backup

# Затем удалите
rm -rf ~/.aws

Чек-лист: что проверить после установки

  • [ ] sudo whoami выводит root
  • [ ] command -v aws показывает путь (например, /usr/local/bin/aws)
  • [ ] aws --version показывает версию (2.x для v2, 1.x для v1)
  • [ ] aws configure list показывает настройки (хотя бы регион)
  • [ ] aws sts get-caller-identity возвращает информацию об аккаунте
  • [ ] aws s3 ls работает (если у вас есть S3-корзины)
  • [ ] aws ec2 describe-instances работает

Заключение

AWS CLI установлен на Debian. Вы можете управлять облачными ресурсами прямо из терминала.

Что дальше:

💡 Важно: Храните ключи доступа в безопасности. Используйте aws configure sso вместо долгоживущих ключей, где это возможно. Никогда не добавляйте ~/.aws в Git-репозитории.