Ответ
Я активно использую AWS CLI для автоматизации, оперативного управления инфраструктурой и интеграции в CI/CD-пайплайны. Мой опыт включает:
- Управление инфраструктурой как код (IaC): Автоматизация создания и конфигурации ресурсов (EC2, VPC, S3, RDS, IAM) через bash-скрипты, часто в качестве дополнения к Terraform для одноразовых задач или динамических операций.
- Оперативное администрирование: Быстрая диагностика (просмотр логов CloudWatch, метрик), изменение конфигураций "на лету", управление инстансами.
- Взаимодействие с сервисами: Глубоко работал с ECS/EKS (управление кластерами, сервисами, задачами), S3 (копирование, настройка политик), Lambda (развертывание функций, управление алиасами).
- Автоматизация и скрипты: Парсинг JSON-вывода с помощью
jqдля извлечения конкретных данных (например, ARN ресурсов, IP-адресов) и передачи их в следующие команды.
Пример скрипта для создания AMI из инстанса и очистки старых образов:
#!/bin/bash
INSTANCE_ID="i-1234567890abcdef0"
AMI_NAME="my-app-backup-$(date +%Y%m%d-%H%M)"
# Создание AMI
AMI_ID=$(aws ec2 create-image
--instance-id $INSTANCE_ID
--name "$AMI_NAME"
--no-reboot
--query 'ImageId' --output text)
echo "Created AMI: $AMI_ID"
# Поиск и удаление старых AMI старше 30 дней
aws ec2 describe-images --owners self
--query "Images[?CreationDate<='$(date --date='-30 days' +%Y-%m-%d)'].ImageId"
--output text | while read OLD_AMI; do
echo "Deregistering old AMI: $OLD_AMI"
aws ec2 deregister-image --image-id $OLD_AMI
# Здесь также нужно найти и удалить связанные snapshots
aws ec2 describe-snapshots --filters "Name=description,Values=*$OLD_AMI*" --query "Snapshots[*].SnapshotId" --output text | xargs -r aws ec2 delete-snapshot --snapshot-ids
done
Я предпочитаю использовать профили и именованные профили для работы с несколькими аккаунтами, а также активно применяю --query и --output для эффективной работы в скриптах.