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 ``
- Через менеджер пакетов —
pip install awscli(требует Python 3.6+),brew install awscli(macOS),apt install awscli(Debian/Ubuntu). - В контейнерах Docker — образ
amazon/aws-cliна Docker Hub.
Настройка
После установки требуется аутентификация. Основные методы:
- Команда
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.
- Создание корзины:
aws s3 mb s3://my-website-bucket - Загрузка файлов:
aws s3 sync ./build s3://my-website-bucket - Настройка статического хостинга:
aws s3 website s3://my-website-bucket --index-document index.html --error-document error.html - Установка политики доступа (публичный доступ):
aws s3api put-bucket-policy --bucket my-website-bucket --policy file://policy.json
Источники
- Amazon Web Services. «AWS Command Line Interface User Guide». AWS Documentation, 2024.
- Amazon Web Services. «AWS CLI Version 2 Release Notes». AWS GitHub Repository, 2023.
- «AWS CLI: Installation and Configuration». DigitalOcean Community Tutorials, 2022.
- «Automating AWS with CLI». O'Reilly Media, 2021.
- «AWS CLI Best Practices». AWS Security Blog, 2023.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →