Понимание профилей 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. Это включает:
- Создание роли IAM в целевой учетной записи, которую ваш IAM-пользователь (в вашей основной учетной записи) может принять.
- Настройка локального 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,tableregion: например,us-east-1s3.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. Независимо от того, переключаетесь ли вы между средами разработки, тестирования и продакшена или управляете ресурсами для разных клиентов, профили предоставляют гибкость и контроль, необходимые для эффективных облачных операций.