10 основных команд AWS CLI для ежедневного управления ресурсами

Держите эту шпаргалку по AWS CLI под рукой для ежедневных проверок S3, EC2 и IAM, передачи данных, действий с инстансами и проверки разрешений.

10 основных команд AWS CLI для ежедневного управления ресурсами

AWS CLI часто является самым быстрым способом ответить на повседневные операционные вопросы: какие инстансы EC2 запущены, что изменилось в префиксе S3 или какие политики прикреплены к пользователю. Консоль полезна, но CLI даёт повторяемые команды, которые можно вставить в runbook или скрипт.

Эта шпаргалка по AWS CLI сосредоточена на практических командах S3, EC2 и IAM, которые вы, вероятно, будете использовать во время рутинных проверок и устранения неполадок.

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

Перед началом убедитесь, что AWS CLI установлен и настроен в вашей системе. Если нет, следуйте официальной документации AWS для установки и настройки учётных данных (идентификатор ключа доступа, секретный ключ доступа и регион по умолчанию).

# Проверка версии AWS CLI
aws --version

# Настройка AWS CLI, если вы ещё этого не сделали
aws configure

Основные команды AWS CLI для Amazon S3

Используйте эти команды для проверки корзин, перемещения объектов и предварительного просмотра изменений перед передачей.

1. aws s3 ls - Список корзин и объектов S3

Эта команда позволяет вывести список ваших корзин S3 или объектов внутри конкретной корзины. Часто это первый шаг для понимания вашего хранилища.

Назначение: Просмотр корзин S3 или содержимого корзины.

Пример:

# Список всех корзин S3 в вашем аккаунте
aws s3 ls

# Список объектов в конкретной корзине
aws s3 ls s3://your-bucket-name/

# Рекурсивный список объектов с читаемыми размерами и датами
aws s3 ls s3://your-bucket-name/ --recursive --human-readable --summarize

Советы:

  • Используйте --recursive для вывода всех объектов в префиксе. В S3 есть префиксы, а не настоящие папки, хотя CLI отображает их в виде папок. --summarize предоставляет общее количество и размер.
  • Вы также можете указать путь внутри корзины: aws s3 ls s3://your-bucket-name/prefix/.

2. aws s3 cp - Копирование файлов в S3 и из S3

Команда cp является основной для передачи файлов между вашей локальной файловой системой и S3, а также между корзинами S3.

Назначение: Копирование локальных файлов в S3, объектов S3 на локальный компьютер или объектов S3 между корзинами.

Пример:

# Копирование локального файла в корзину S3
aws s3 cp local-file.txt s3://your-bucket-name/folder/remote-file.txt

# Копирование объекта из S3 на локальный компьютер
aws s3 cp s3://your-bucket-name/folder/remote-file.txt local-copy.txt

# Копирование объекта из одной корзины S3 в другую
aws s3 cp s3://source-bucket/file.txt s3://destination-bucket/new-file.txt

# Рекурсивное копирование локальной директории в S3
aws s3 cp --recursive local-folder/ s3://your-bucket-name/remote-folder/

Советы:

  • --recursive важен для копирования целых директорий.
  • Используйте --exclude и --include для фильтрации файлов при рекурсивном копировании.

3. aws s3 sync - Синхронизация локальных директорий с S3

sync — это мощная команда, которая синхронизирует содержимое директории с префиксом S3 и наоборот. Она копирует только новые или изменённые файлы, что делает её очень эффективной для резервного копирования и развёртывания.

Назначение: Эффективная синхронизация локальной директории с корзиной/префиксом S3.

Пример:

# Синхронизация локальной директории с корзиной S3
aws s3 sync local-directory/ s3://your-bucket-name/remote-path/

# Синхронизация корзины S3 с локальной директорией
aws s3 sync s3://your-bucket-name/remote-path/ local-directory/

# Пробный запуск для просмотра изменений без их фактического выполнения
aws s3 sync local-directory/ s3://your-bucket-name/remote-path/ --dryrun

Лучшая практика: Всегда сначала используйте --dryrun, чтобы просмотреть изменения перед выполнением операции sync, особенно для критически важных данных.

4. aws s3 rm - Удаление объектов и корзин S3

Эта команда используется для удаления объектов из корзины S3 или для удаления пустой корзины.

Назначение: Удаление объектов или пустых корзин из S3.

Пример:

# Удаление одного объекта из корзины
aws s3 rm s3://your-bucket-name/path/to/object.txt

# Рекурсивное удаление всех объектов в папке (префиксе)
aws s3 rm s3://your-bucket-name/folder/ --recursive

# Удаление пустой корзины
aws s3 rb s3://your-bucket-name/

# Принудительное удаление корзины и всего её содержимого (ИСПОЛЬЗУЙТЕ С КРАЙНЕЙ ОСТОРОЖНОСТЬЮ!)
aws s3 rb s3://your-bucket-name/ --force

Предупреждение: aws s3 rb --force является разрушительным. Он удаляет объекты перед удалением корзины, но для корзин с версиями может потребоваться очистка версий с помощью команд API S3 более низкого уровня перед удалением.

Основные команды AWS CLI для Amazon EC2 (Elastic Compute Cloud)

EC2 предоставляет масштабируемые вычислительные мощности в облаке AWS. Эти команды помогут вам управлять вашими виртуальными серверами.

5. aws ec2 describe-instances - Получение информации об инстансах EC2

Это ваша основная команда для сбора информации об инстансах EC2, включая их состояние, публичные/частные IP-адреса, теги и многое другое.

Назначение: Получение подробной информации об одном или нескольких инстансах EC2.

Пример:

# Описание всех инстансов EC2 в текущем регионе
aws ec2 describe-instances

# Описание инстансов с определённым тегом (например, Environment=Production)
aws ec2 describe-instances \
    --filters "Name=tag:Environment,Values=Production"

# Описание инстансов по идентификатору инстанса
aws ec2 describe-instances --instance-ids i-0abcdef1234567890

# Описание инстансов и фильтрация для получения конкретной информации с помощью JMESPath (например, PublicIpAddress)
aws ec2 describe-instances \
    --query "Reservations[*].Instances[*].{InstanceId:InstanceId,PublicIp:PublicIpAddress,State:State.Name}" \
    --output table

Советы:

  • --filters мощен для сужения результатов на основе состояния инстанса, тегов, типов инстансов и многого другого.
  • --query позволяет извлекать определённые поля данных и переформатировать вывод (например, с помощью выражений JMESPath).

6. aws ec2 start-instances - Запуск остановленных инстансов EC2

Используйте эту команду для запуска одного или нескольких остановленных инстансов EC2. Инстансы обычно сохраняют свои частные IPv4-адреса, но публичные IPv4-адреса могут измениться, если вы не используете Elastic IP-адрес.

Назначение: Запуск процесса запуска остановленных инстансов EC2.

Пример:

# Запуск одного инстанса EC2
aws ec2 start-instances --instance-ids i-0abcdef1234567890

# Запуск нескольких инстансов EC2
aws ec2 start-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

7. aws ec2 stop-instances - Остановка запущенных инстансов EC2

Эта команда останавливает запущенные инстансы EC2. Для большинства инстансов на базе EBS биллинг за часы работы инстанса прекращается, пока он остановлен, но прикреплённые тома EBS, Elastic IP-адреса, снимки и некоторые связанные ресурсы могут продолжать тарифицироваться.

Назначение: Остановка запущенных инстансов EC2.

Пример:

# Остановка одного инстанса EC2
aws ec2 stop-instances --instance-ids i-0abcdef1234567890

# Остановка нескольких инстансов EC2
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

# Принудительная остановка инстанса (используйте с осторожностью для производственных систем)
aws ec2 stop-instances --instance-ids i-0abcdef1234567890 --force

Предупреждение: Принудительная остановка инстанса может привести к потере данных или повреждению файловой системы, если приложения не были корректно завершены.

8. aws ec2 terminate-instances - Завершение инстансов EC2

Завершение инстанса безвозвратно удаляет инстанс. Прикреплённые тома EBS удаляются только в том случае, если для них включена настройка DeleteOnTermination.

Назначение: Безвозвратное удаление инстансов EC2.

Пример:

# Завершение одного инстанса EC2
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890

# Завершение нескольких инстансов EC2
aws ec2 terminate-instances --instance-ids i-0abcdef1234567890 i-0fedcba9876543210

Предупреждение: Завершение — это необратимое действие. Убедитесь, что у вас есть резервные копии или снимки критически важных данных перед завершением инстансов.

Основные команды AWS CLI для IAM (Identity and Access Management)

IAM позволяет безопасно управлять доступом к сервисам и ресурсам AWS. Эти команды помогают управлять пользователями и их разрешениями.

9. aws iam list-users - Список пользователей IAM

Эта команда предоставляет список всех пользователей IAM в вашем аккаунте AWS, а также их ARN, даты создания и идентификаторы пользователей.

Назначение: Просмотр всех пользователей IAM, настроенных в вашем аккаунте AWS.

Пример:

# Список всех пользователей IAM
aws iam list-users

# Список пользователей и извлечение определённых полей с помощью JMESPath
aws iam list-users --query "Users[*].{UserName:UserName,CreateDate:CreateDate,Arn:Arn}" --output table

Лучшая практика: Регулярно проверяйте список пользователей IAM, чтобы убедиться, что существуют только необходимые пользователи, а старые неиспользуемые учётные записи удалены.

10. aws iam list-attached-user-policies - Список политик, прикреплённых к пользователю IAM

Понимание того, какие разрешения есть у пользователя IAM, критически важно для безопасности и устранения проблем с доступом. Эта команда выводит список управляемых политик, напрямую прикреплённых к конкретному пользователю.

Назначение: Отображение управляемых политик, прикреплённых к пользователю IAM.

Пример:

# Список всех управляемых политик, прикреплённых к конкретному пользователю IAM
aws iam list-attached-user-policies --user-name YourIAMUserName

# Список встроенных политик, прикреплённых к конкретному пользователю IAM
aws iam list-user-policies --user-name YourIAMUserName

Советы:

  • Помните, что пользователи IAM могут получать разрешения от прикреплённых управляемых политик, встроенных политик и членства в группах. Роли — это отдельные сущности IAM; пользователи не наследуют разрешения ролей, если им не разрешено принимать роль.
  • Чтобы получить детали конкретной политики, используйте aws iam get-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess, а затем aws iam get-policy-version.

Вывод

Начните с команд только для чтения, таких как aws s3 ls, aws ec2 describe-instances и aws iam list-users. Добавляйте операции записи, такие как sync, stop-instances и terminate-instances, только после того, как подтвердите аккаунт, регион, профиль и идентификаторы целевых ресурсов.