Как эффективно настраивать и управлять несколькими профилями AWS CLI

Научитесь эффективно управлять несколькими учетными записями и средами AWS с помощью именованных профилей AWS CLI. Это руководство предоставляет пошаговые инструкции по настройке, переключению и обеспечению безопасности различных наборов учетных данных и настроек AWS. Оптимизируйте свой облачный рабочий процесс, освоив управление профилями для повышения производительности и безопасности.

33 просмотров

Понимание профилей AWS CLI

AWS Command Line Interface (AWS CLI) — это мощный инструмент для взаимодействия с Amazon Web Services. Для пользователей, управляющих несколькими учетными записями AWS или различными ролями в рамках одной учетной записи, настройка и переключение между профилями имеют решающее значение для эффективного управления рабочим процессом. Именованные профили позволяют хранить различные наборы учетных данных, регионы по умолчанию и форматы вывода, обеспечивая бесшовные переходы между различными средами AWS без необходимости каждый раз вручную указывать учетные данные.

В этом руководстве мы рассмотрим процесс настройки, управления и использования нескольких профилей AWS CLI. К концу вы сможете оптимизировать взаимодействие с командной строкой в различных учетных записях AWS, повысив безопасность и производительность.

Настройка файла конфигурации AWS CLI

AWS CLI хранит информацию конфигурации в файле с именем config, а учетные данные — в файле с именем credentials. По умолчанию эти файлы находятся в каталоге .aws в домашнем каталоге пользователя (~/.aws/ в Linux/macOS, %USERPROFILE%\.aws\ в Windows).

Профиль по умолчанию

При первой настройке AWS CLI с помощью команды aws configure создается профиль по умолчанию с именем [default]. Этот профиль используется, если не указан другой профиль.

# Пример профиля по умолчанию в ~/.aws/credentials
[default]
aws_access_key_id = YOUR_DEFAULT_ACCESS_KEY
aws_secret_access_key = YOUR_DEFAULT_SECRET_KEY
# Пример профиля по умолчанию в ~/.aws/config
[default]
region = us-east-1
output = json

Создание именованных профилей

Чтобы создать именованный профиль, просто добавьте новый раздел в файлы credentials и config, используя описательное имя для профиля. Например, чтобы создать профиль для производственной учетной записи и другой для среды разработки:

1. Редактирование ~/.aws/credentials:

Добавьте новый раздел с именем профиля (например, [prod], [dev]).

# ~/.aws/credentials

[default]
aws_access_key_id = YOUR_DEFAULT_ACCESS_KEY
aws_secret_access_key = YOUR_DEFAULT_SECRET_KEY

[prod]
aws_access_key_id = YOUR_PROD_ACCESS_KEY
aws_secret_access_key = YOUR_PROD_SECRET_KEY

[dev]
aws_access_key_id = YOUR_DEV_ACCESS_KEY
aws_secret_access_key = YOUR_DEV_SECRET_KEY

2. Редактирование ~/.aws/config:

Аналогично добавьте соответствующие разделы в файл config. Вы можете указать регион и формат вывода для каждого профиля.

# ~/.aws/config

[default]
region = us-east-1
output = json

[profile prod]
region = us-west-2
output = text

[profile dev]
region = eu-central-1
output = json

Важные примечания:
* При определении профилей в ~/.aws/config необходимо предварять имя профиля словом profile (например, [profile prod]). Это отличается от ~/.aws/credentials, где используется только имя профиля (например, [prod]).
* Если настройка определена как в профиле [default], так и в именованном профиле, настройка именованного профиля имеет приоритет.

Переключение между профилями

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

Пример: Список бакетов S3 в вашей производственной учетной записи:

aws s3 ls --profile prod

Пример: Описание экземпляров EC2 в вашей среде разработки:

aws ec2 describe-instances --profile dev

Если опция --profile опущена, CLI будет использовать профиль [default].

Установка профиля по умолчанию для среды

Постоянное ввод --profile может быть утомительным. Вы можете установить переменную среды, чтобы указать, какой профиль AWS CLI следует использовать по умолчанию для текущей сессии.

Использование переменной среды AWS_PROFILE:

В Linux/macOS:

export AWS_PROFILE=prod

# Теперь команды будут использовать профиль 'prod' по умолчанию
aws s3 ls
aws ec2 describe-instances

Чтобы отменить установку:

unset AWS_PROFILE

В Windows (Командная строка):

set AWS_PROFILE=prod

# Теперь команды будут использовать профиль 'prod' по умолчанию
aws s3 ls

Чтобы отменить установку:

set AWS_PROFILE=

В Windows (PowerShell):

$env:AWS_PROFILE = "prod"

# Теперь команды будут использовать профиль 'prod' по умолчанию
aws s3 ls

Чтобы отменить установку:

Remove-Item Env:\AWS_PROFILE

Управление несколькими учетными записями AWS с помощью профилей

Это распространенный сценарий использования именованных профилей. Каждый профиль может быть настроен с ключами доступа IAM-пользователя для другой учетной записи AWS. Это особенно полезно для:

  • Разработка против производства: Разделение сред разработки и производства для безопасности.
  • Различные команды/проекты: Изоляция ресурсов и разрешений для разных команд или проектов.
  • Межучетная запись доступа: Если вы администратор или разработчик, которому необходимо управлять ресурсами в нескольких учетных записях.

Рекомендуемая практика: использование ролей IAM

Вместо хранения долгоживущих ключей доступа для каждой учетной записи непосредственно в файле учетных данных, более безопасной и рекомендуемой практикой является использование ролей IAM. Это включает:

  1. Создание роли IAM в целевой учетной записи, которую ваш IAM-пользователь (в вашей основной учетной записи) может принять.
  2. Настройка локального AWS CLI для принятия этой роли при использовании определенного профиля.

Чтобы настроить принятие роли в ~/.aws/config:

# ~/.aws/config

[profile dev-role]
role_arn = arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME
source_profile = default  # Или другой профиль, имеющий разрешения на принятие роли
region = us-east-1
output = json

Когда вы используете aws ec2 describe-instances --profile dev-role, CLI автоматически попытается принять указанную роль IAM и использовать полученные временные учетные данные.

Расширенные параметры конфигурации

Помимо учетных данных и региона, профили могут указывать другие настройки AWS CLI:

  • output: json, text, table
  • region: например, us-east-1
  • s3.max_concurrent_requests: количество параллельных запросов для операций S3.
  • s3.max_queue_size: размер очереди для многокомпонентных загрузок S3.
  • cli_binary_url: указание пользовательского URL для загрузки бинарных файлов CLI (менее распространенное).

Пример: настройка параметров S3 для конкретного профиля

# ~/.aws/config

[profile s3-optimized]
region = us-east-1
output = json
s3.max_concurrent_requests = 50
s3.max_queue_size = 10000

Советы и рекомендуемые практики

  • Используйте описательные имена профилей: Сделайте имена профилей четкими и указывающими на учетную запись или среду, которую они представляют (например, prod-admin, dev-web, sandbox-research).
  • Защитите свои учетные данные: Никогда не передавайте файл ~/.aws/credentials в систему контроля версий. Используйте роли IAM для межучетной записи доступа, когда это возможно, чтобы избежать хранения долгоживущих ключей доступа.
  • Регулярно проверяйте ключи доступа: Если вы вынуждены использовать ключи доступа, периодически вращайте их и отключайте старые.
  • Используйте переменные среды: Используйте AWS_PROFILE для временного переключения или для конвейеров CI/CD, где вам нужно нацеливаться на конкретные учетные записи.
  • Комбинируйте профили и переменные среды: Если установлена переменная среды AWS_PROFILE, она переопределит любой профиль, указанный с помощью --profile.

Заключение

Освоение профилей AWS CLI — фундаментальный навык для всех, кто интенсивно работает с Amazon Web Services. Правильно настраивая и используя именованные профили, вы можете значительно повысить свою производительность, соблюдать лучшие практики безопасности и с легкостью управлять несколькими средами AWS. Независимо от того, переключаетесь ли вы между средами разработки, тестирования и продакшена или управляете ресурсами для разных клиентов, профили предоставляют гибкость и контроль, необходимые для эффективных облачных операций.