Открыть сервис

AWS CLI

AWS CLI (Amazon Web Services Command Line Interface) — это кроссплатформенный инструмент с открытым исходным кодом, предназначенный для управления сервисами Amazon Web Services через командную строку. AWS CLI позволяет автоматизировать взаимодействие с облачной инфраструктурой AWS, выполняя те же операции, что и веб-консоль или программные интерфейсы (API), но в виде текстовых команд. Инструмент поддерживается операционными системами Linux, macOS и Windows, а также может использоваться в скриптах и конвейерах непрерывной интеграции (CI/CD).

История и версии

AWS CLI был впервые выпущен компанией Amazon Web Services в сентябре 2010 года. Первая версия (v1) основывалась на библиотеке boto для Python 2.7 и предоставляла базовые команды для управления сервисами EC2, S3 и IAM. В 2013 году вышла вторая версия (v2), которая полностью переписана на Python 3 с использованием библиотеки aws-cli и поддерживает новые сервисы AWS, такие как Lambda, DynamoDB и CloudFormation.

В 2020 году AWS CLI v2 получила статус стабильного релиза и стала рекомендованной версией для использования. Основные отличия v2 от v1 включают:

  • Поддержка более 200 сервисов AWS (против ~100 в v1).
  • Встроенная поддержка JSON и YAML для вывода данных.
  • Улучшенная обработка ошибок и автодополнение команд.
  • Возможность установки через диспетчер пакетов (pip, brew, apt) или автономный установщик.

По состоянию на 2025 год AWS CLI v2 является основной версией, а v1 находится в режиме ограниченной поддержки (end-of-life).

Установка и настройка

Установка

AWS CLI можно установить несколькими способами:

  • Автономный установщик — загружается с официального сайта AWS. Поддерживает Linux, macOS и Windows. Пример для Linux:

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

Настройка

После установки требуется аутентификация. Основные методы:

  • Команда aws configure — интерактивный ввод ключей доступа (Access Key ID, Secret Access Key), региона по умолчанию (например, us-east-1) и формата вывода (json, text, table). Данные сохраняются в файле ~/.aws/credentials и ~/.aws/config.
  • Переменные окруженияAWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION.
  • Роли IAM — через aws sts assume-role для временных сессий.
  • Профили — несколько конфигураций в файле ~/.aws/config, переключаемых флагом --profile.

Пример настройки: ``bash aws configure AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: ru-central1 Default output format [None]: json ``

Основные команды и синтаксис

AWS CLI использует единый синтаксис: aws <сервис> <команда> [параметры]. Команды группируются по сервисам, каждый из которых имеет свой набор подкоманд. Ниже приведены примеры для наиболее популярных сервисов.

Управление вычислительными ресурсами (EC2)

  • aws ec2 describe-instances — вывод информации о всех виртуальных машинах.
  • aws ec2 start-instances --instance-ids i-1234567890abcdef0 — запуск конкретного инстанса.
  • aws ec2 stop-instances --instance-ids i-1234567890abcdef0 — остановка инстанса.

Работа с объектным хранилищем (S3)

  • aws s3 lsсписок корзин (bucket).
  • aws s3 cp file.txt s3://my-bucket/ — загрузка файла.
  • aws s3 sync ./local_folder s3://my-bucket/синхронизация локальной папки с корзиной.
  • aws s3 rm s3://my-bucket/old-file.txtудаление файла.

Управление базами данных (RDS)

  • aws rds describe-db-instances — список баз данных.
  • aws rds create-db-instance --db-instance-identifier mydb --db-instance-class db.t3.micro --engine mysql — создание инстанса MySQL.

Управление бессерверными функциями (Lambda)

  • aws lambda list-functions — список функций.
  • aws lambda invoke --function-name my-function output.txt — вызов функции.

Управление инфраструктурой (CloudFormation)

  • aws cloudformation create-stack --stack-name my-stack --template-body file://template.yaml — создание стека.
  • aws cloudformation describe-stacks — описание стеков.

Дополнительные возможности

  • Фильтрация и форматирование — флаг --query для JMESPath-запросов (например, aws ec2 describe-instances --query 'Reservations[].Instances[].InstanceId').
  • Вывод в формате таблицы--output table.
  • Пакетная обработка — использование aws s3 cp с --recursive для рекурсивных операций.

Применение

AWS CLI широко используется в следующих сценариях:

Автоматизация DevOps

Инструмент является ключевым компонентом в конвейерах CI/CD. Например, в GitLab CI или Jenkins с помощью AWS CLI можно автоматически развёртывать приложения в AWS Elastic Beanstalk, обновлять функции Lambda или синхронизировать артефакты сборки с S3.

Управление инфраструктурой как кодом (IaC)

AWS CLI часто используется совместно с Terraform, Ansible или CloudFormation для создания и модификации облачных ресурсов. Команды CLI позволяют выполнять точечные изменения без пересоздания всего стека.

Мониторинг и аудит

С помощью aws cloudwatch и aws logs можно получать метрики, логи и оповещения. Например, aws cloudwatch get-metric-statistics позволяет извлечь среднюю загрузку CPU за последний час.

Миграция данных

aws s3 sync и aws s3 cp используются для переноса больших объёмов данных между локальными хранилищами и S3, а также между регионами AWS.

Интеграция с другими инструментами

AWS CLI может быть встроен в скрипты на Bash, PowerShell, Python или любом другом языке, поддерживающем вызов системных команд. Пример Bash-скрипта для резервного копирования базы данных RDS: ```bash

!/bin/bash

DB_NAME="mydb" SNAPSHOT_NAME="backup-$(date +%Y%m%d%H%M%S)" aws rds create-db-snapshot --db-instance-identifier $DB_NAME --db-snapshot-identifier $SNAPSHOT_NAME ```

Кроме того, AWS CLI поддерживает плагины для расширения функциональности, например, aws-sam-cli для разработки бессерверных приложений.

Ограничения и альтернативы

AWS CLI не лишён недостатков:

  • Сложность синтаксиса — для сложных операций (например, создание VPC с подсетями) требуется длинная цепочка команд.
  • Отсутствие графического интерфейса — для новичков может быть неудобным.
  • Зависимость от Python — v2 требует Python 3.6+, что может быть проблемой на старых системах.

Альтернативы включают:

  • Веб-консоль AWS — для разовых операций.
  • SDK для языков программирования (Python boto3, Java, Go) — для глубокой интеграции.
  • Terraform — для управления инфраструктурой как кодом.
  • AWS Tools for PowerShell — для пользователей Windows.

Безопасность

При использовании AWS CLI важно соблюдать меры безопасности:

  • Не хранить ключи доступа в открытом виде — использовать переменные окружения или AWS Secrets Manager.
  • Ограничивать права IAM — принцип наименьших привилегий.
  • Использовать многофакторную аутентификацию (MFA) для критических операций.
  • Включать шифрование для данных, передаваемых через CLI (по умолчанию используется TLS).

Пример использования

Сценарий: развёртывание статического веб-сайта на S3.

  1. Создание корзины: aws s3 mb s3://my-website-bucket
  2. Загрузка файлов: aws s3 sync ./build s3://my-website-bucket
  3. Настройка статического хостинга: aws s3 website s3://my-website-bucket --index-document index.html --error-document error.html
  4. Установка политики доступа (публичный доступ): aws s3api put-bucket-policy --bucket my-website-bucket --policy file://policy.json

Источники

  1. Amazon Web Services. «AWS Command Line Interface User Guide». AWS Documentation, 2024.
  2. Amazon Web Services. «AWS CLI Version 2 Release Notes». AWS GitHub Repository, 2023.
  3. «AWS CLI: Installation and Configuration». DigitalOcean Community Tutorials, 2022.
  4. «Automating AWS with CLI». O'Reilly Media, 2021.
  5. «AWS CLI Best Practices». AWS Security Blog, 2023.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →