Как эффективно настраивать и управлять несколькими профилями AWS CLI
Научитесь эффективно управлять несколькими учетными записями и средами AWS с помощью именованных профилей AWS CLI. Это руководство предоставляет пошаговые инструкции по настройке, переключению и обеспечению безопасности различных наборов учетных данных и настроек AWS. Оптимизируйте свой облачный рабочий процесс, освоив управление профилями для повышения производительности и безопасности.
Как эффективно настроить и управлять несколькими профилями AWS CLI
Профили AWS CLI позволяют разделять учетные записи, роли, регионы и форматы вывода. Если вы управляете средами dev, staging и production с одного ноутбука, профили помогают избежать выполнения команд в неправильной учетной записи AWS.
Цель проста: сделать целевую учетную запись явной, сократить использование долгоживущих учетных данных, где это возможно, и обеспечить быстрые проверки перед выполнением опасных команд.
Настройка файла конфигурации AWS CLI
AWS CLI хранит настройки профилей в двух общих файлах:
~/.aws/credentialsдля ключей доступа и сессионных учетных данных.~/.aws/configдля региона, формата вывода, настроек ролей и других параметров CLI.
В Windows эти файлы находятся в %USERPROFILE%\.aws\.
Профиль по умолчанию
Когда вы выполняете aws configure без --profile, он записывает настройки для [default]. CLI использует этот профиль, если вы не указали другой и не задали соответствующую переменную окружения.
# Пример профиля по умолчанию в ~/.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
Создание именованных профилей
Вы можете создавать именованные профили с помощью aws configure --profile:
aws configure --profile dev
aws configure --profile prod
Вы также можете редактировать файлы напрямую. Используйте простые имена профилей в ~/.aws/credentials:
~/.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
В ~/.aws/config именованные профили используют префикс profile :
~/.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]не действует автоматически как родительский для именованных профилей. Еслиprodнужен регион, укажитеregionв разделе[profile prod]или задайте его другим способом.
Переключение между профилями
После настройки именованных профилей вы можете использовать их, указывая опцию --profile в командах AWS CLI.
Пример: Чтобы вывести список корзин S3 в вашей рабочей учетной записи:
aws s3 ls --profile prod
Пример: Чтобы описать экземпляры EC2 в вашей учетной записи разработки:
aws ec2 describe-instances --profile dev
Перед выполнением опасной команды проверьте, кто вы:
aws sts get-caller-identity --profile prod
Это вернет идентификатор учетной записи и ARN для учетных данных, которые использует CLI.
Установка профиля по умолчанию для окружения
Постоянно вводить --profile может быть утомительно. Вы можете установить 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_PROFILE=dev, но вы выполняете aws s3 ls --profile prod, команда использует prod.
Управление несколькими учетными записями AWS с помощью профилей
Профили полезны для:
- Разработка vs. Продакшн: Разделение сред разработки и продакшн для безопасности.
- Разные команды/проекты: Изоляция ресурсов и разрешений для разных команд или проектов.
- Межаккаунтный доступ: Если вы администратор или разработчик, которому нужно управлять ресурсами в нескольких учетных записях.
Лучшая практика: Использование ролей IAM
Избегайте хранения долгоживущих ключей доступа для каждой учетной записи. Распространенный шаблон — хранить один исходный профиль или профиль SSO, а затем принимать роли в целевые учетные записи.
Для принятия роли настройте профиль следующим образом:
# ~/.aws/config
[profile dev-role]
role_arn = arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME
source_profile = default
region = us-east-1
output = json
Когда вы выполняете команду с --profile dev-role, CLI использует профиль default для вызова AWS STS, принимает роль и использует временные учетные данные для команды.
Если ваша организация использует IAM Identity Center, ваш профиль может использовать настройки SSO вместо ключей доступа:
[profile sandbox]
sso_start_url = https://example.awsapps.com/start
sso_region = us-east-1
sso_account_id = 123456789012
sso_role_name = DeveloperAccess
region = us-east-1
output = json
Затем аутентифицируйтесь с помощью:
aws sso login --profile sandbox
Расширенные параметры конфигурации
Помимо учетных данных и региона, профили могут указывать другие настройки AWS CLI:
output:json,text,tableregion: например,us-east-1s3.max_concurrent_requests: Количество параллельных запросов для операций S3.s3.max_queue_size: Размер очереди для многокомпонентных загрузок S3.cli_binary_format: Как интерпретируются бинарные параметры в AWS CLI v2.
Пример: Настройка параметров S3 для конкретного профиля
Используйте aws configure set, чтобы избежать ошибок отступов:
aws configure set s3.max_concurrent_requests 20 --profile s3-optimized
aws configure set s3.max_queue_size 10000 --profile s3-optimized
Это записывает настройки S3 в раздел профиля в ~/.aws/config:
# ~/.aws/config
[profile s3-optimized]
region = us-east-1
output = json
s3 =
max_concurrent_requests = 20
max_queue_size = 10000
Советы и лучшие практики
- Используйте описательные имена профилей: Делайте имена профилей понятными и указывающими на учетную запись или среду, которую они представляют (например,
prod-admin,dev-web,sandbox-research). - Защищайте свои учетные данные: Никогда не сохраняйте файл
~/.aws/credentialsв системе контроля версий. По возможности используйте роли IAM для межаккаунтного доступа, чтобы избежать хранения долгоживущих ключей доступа. - Регулярно проверяйте ключи доступа: Если вы вынуждены использовать ключи доступа, периодически меняйте их и отключайте старые.
- Используйте переменные окружения: Используйте
AWS_PROFILEдля временного переключения или в CI/CD конвейерах, где нужно нацеливаться на конкретные учетные записи. - Следите за переменными окружения учетных данных:
AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEYиAWS_SESSION_TOKENмогут переопределять учетные данные из профилей. Очистите их, если CLI, кажется, использует неправильную идентификацию. - Называйте профили по радиусу поражения: Имена вроде
prod-readonly,prod-adminиsandbox-devбезопаснее, чем расплывчатые имена вродеmainилиtest.
Практический вывод
Используйте профили для каждой учетной записи и роли, с которыми вы часто работаете, и проверяйте aws sts get-caller-identity перед изменением ресурсов продакшн. Отдавайте предпочтение профилям на основе SSO или ролей, а не долгоживущим ключам доступа, и помните о переменных окружения, когда команда, кажется, нацелена на неправильную учетную запись.