Spec-Zone.ru › AWS CLI v2

[ aws . topics ]

Переменные конфигурации AWS CLI

Значения конфигурации для AWS CLI могут поступать из нескольких источников:

  • В качестве параметра командной строки
  • В качестве переменной среды
  • В качестве значения в файле конфигурации AWS CLI
  • В качестве значения в файле общих учетных данных AWS

Некоторые параметры доступны только в файле конфигурации AWS CLI. Это руководство содержит все переменные конфигурации, доступные в AWS CLI.

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

Формат файла конфигурации

Файл конфигурации AWS CLI, по умолчанию ~/.aws/config, имеет следующий формат:

[default]
aws_access_key_id=foo
aws_secret_access_key=bar
region=us-west-2

Раздел default относится к значениям конфигурации для профиля по умолчанию. Вы можете создавать профили, которые представляют собой логические группы конфигурации. Профили, не являющиеся профилем по умолчанию, определяются созданием раздела с названием «profile profilename»:

[profile testing]
aws_access_key_id=foo
aws_secret_access_key=bar
region=us-west-2

Вложенные значения

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

[profile testing]
aws_access_key_id = foo
aws_secret_access_key = bar
region = us-west-2
s3 =
  max_concurrent_requests=10
  max_queue_size=1000

Общие параметры

AWS CLI имеет несколько общих параметров:

Переменная Параметр Запись в конфигурации Переменная среды Описание
profile –profile N/A AWS_PROFILE Имя профиля по умолчанию
region –region region AWS_DEFAULT_REGION Регион AWS по умолчанию
output –output output AWS_DEFAULT_OUTPUT Стиль вывода по умолчанию
cli_timestamp_format N/A cli_timestamp_format N/A Формат вывода временных меток
ca_bundle –ca-bundle ca_bundle AWS_CA_BUNDLE Сводка сертификатов CA
parameter_validation N/A parameter_validation N/A Включает проверку параметров
tcp_keepalive N/A tcp_keepalive N/A Включает TCP Keep-Alive
max_attempts N/A max_attempts AWS_MAX_ATTEMPTS Количество общих запросов
retry_mode N/A retry_mode AWS_RETRY_MODE Тип выполняемых повторных попыток
cli_pager –no-cli-pager cli_pager AWS_PAGER Перенаправление/отключение вывода в пагинатор

Третий столбец, «Запись в конфигурации», — это значение, которое вы бы указали в файле конфигурации AWS CLI. По умолчанию это расположение ~/.aws/config. Если вам нужно изменить это значение, вы можете установить переменную среды AWS_CONFIG_FILE для изменения этого расположения.

Допустимые значения переменной конфигурации output:

  • json
  • table
  • text

cli_timestamp_format контролирует формат отображения временных меток в AWS CLI. Допустимые значения переменной конфигурации cli_timestamp_format:

  • wire - Отображает временную метку точно так, как она получена из ответа HTTP.
  • iso8601 - Переформатирует временную метку с использованием iso8601 в часовом поясе UTC.

cli_binary_format контролирует формат двоичных значений на вводе и выводе. Допустимые значения переменной конфигурации cli_binary_format:

  • base64 - Двоичные значения предоставляются как строки, закодированные в Base64. По умолчанию.
  • raw-in-base64-out - Двоичные значения обрабатываются буквально. Совместимо с AWS CLI V1.

При предоставлении содержимого из файла, соответствующего двоичному блоку fileb://, всегда будет обрабатываться как двоичный и будет использовать содержимое файла напрямую независимо от настроек cli_binary_format. При использовании file:// содержимое файла должно быть правильно отформатировано для настроенного cli_binary_format.

Значение по умолчанию — iso8601.

parameter_validation управляет тем, будет ли происходить проверка параметров при сериализации запросов. По умолчанию — True. Вы можете отключить проверку параметров по соображениям производительности. В противном случае рекомендуется оставить проверку параметров включенной.

max_attempts и retry_mode объяснены в разделе «Настройка повторных попыток» ниже.

Когда вы указываете профиль, используя --profile profile-name или устанавливая значение для переменной среды AWS_PROFILE, предоставленное вами имя профиля используется для поиска соответствующего раздела в файле конфигурации AWS CLI. Например, указание --profile development укажет AWS CLI на поиск раздела в файле конфигурации AWS CLI с именем [profile development].

Приоритет

Указанные выше значения конфигурации имеют следующий приоритет:

  • Параметры командной строки
  • Переменные среды
  • Файл конфигурации

Удостоверения

Удостоверения можно указать несколькими способами:

  • Переменные среды
  • Файл общих удостоверений AWS
  • Файл конфигурации AWS CLI
Переменная Запись в Creds/Config Переменная среды Описание
access_key aws_access_key_id AWS_ACCESS_KEY_ID Ключ доступа AWS
secret_key aws_secret_access_key AWS_SECRET_ACCESS_KEY Секретный ключ AWS
token aws_session_token AWS_SESSION_TOKEN Токен AWS (временные удостоверения)
metadata_service_timeout metadata_service_timeout AWS_METADATA_SERVICE_TIMEOUT Таймаут получения удостоверений по метаданным EC2
metadata_service_num_attempts metadata_service_num_attempts AWS_METADATA_SERVICE_NUM_ATTEMPTS Количество попыток повторного подключения к метаданным EC2

Во втором столбце указано имя, которое вы можете указать в файле конфигурации AWS CLI или в файле общих удостоверений AWS (~/.aws/credentials).

Файл общих удостоверений

Файл общих удостоверений по умолчанию расположен по адресу ~/.aws/credentials. Вы можете изменить расположение файла общих удостоверений, установив переменную среды AWS_SHARED_CREDENTIALS_FILE.

Этот файл имеет формат INI и содержит имена разделов, соответствующие профилям. В каждом разделе можно указать три переменные конфигурации, показанные выше: aws_access_key_id, aws_secret_access_key, aws_session_token. Эти значения являются единственными поддерживаемыми в файле общих удостоверений. Обратите также внимание, что имена разделов отличаются от имен разделов в файле конфигурации AWS CLI (~/.aws/config). В файле конфигурации AWS CLI вы создаете новый профиль, создавая раздел [profile profile-name], например:

[profile development]
aws_access_key_id=foo
aws_secret_access_key=bar

В файле общих удостоверений профили не имеют префикса profile, например:

[development]
aws_access_key_id=foo
aws_secret_access_key=bar

Приоритет

Удостоверения из переменных среды имеют приоритет над удостоверениями из файла общих удостоверений и файла конфигурации AWS CLI. Удостоверения, указанные в файле общих удостоверений, имеют приоритет над удостоверениями в файле конфигурации AWS CLI. Если переменная среды AWS_PROFILE установлена, и переменные среды AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY установлены, то удостоверения, предоставленные AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY, переопределят удостоверения, расположенные в профиле, предоставленном AWS_PROFILE.

Использование ролей AWS IAM

Если вы находитесь на экземпляре Amazon EC2, запущенном с ролью IAM, AWS CLI автоматически получит для вас удостоверения. Вам не нужно настраивать какие-либо удостоверения.

Кроме того, вы можете указать роль, которую AWS CLI должен принять, и AWS CLI автоматически выполнит соответствующие AssumeRole вызовы за вас. Обратите внимание, что переменные конфигурации для использования ролей IAM могут быть только в файле конфигурации AWS CLI.

Вы можете указать следующие значения конфигурации для настройки роли IAM в файле конфигурации AWS CLI:

  • role_arn - ARN роли, которую вы хотите принять.
  • source_profile - профиль AWS CLI, содержащий удостоверения/конфигурацию, которые CLI должен использовать для начального assume-role вызова. Этот профиль может быть другим профилем, настроенным для использования assume-role, хотя если в профиле присутствуют статические удостоверения, они будут иметь приоритет. Этот параметр не может быть предоставлен вместе с credential_source.
  • credential_source - поставщик удостоверений, который нужно использовать для получения удостоверений для начального assume-role вызова. Этот параметр не может быть предоставлен вместе с source_profile. Допустимые значения:
    • Environment для получения исходных удостоверений из переменных среды. Обратите внимание, что этот источник удостоверений не работает вместе с переменной среды AWS_PROFILE.
    • Ec2InstanceMetadata для использования роли экземпляра EC2 в качестве исходных удостоверений.
    • EcsContainer для использования удостоверений контейнера ECS в качестве исходных удостоверений.
  • external_id - уникальный идентификатор, используемый сторонними организациями для принятия роли в учетных записях своих клиентов. Он соответствует параметру ExternalId в операции AssumeRole. Этот параметр является необязательным.
  • mfa_serial - идентификационный номер устройства MFA, которое нужно использовать при принятии роли. Этот параметр является необязательным. Укажите это значение, если политика доверия принимаемой роли включает условие, требующее аутентификацию MFA. Значение представляет собой либо серийный номер аппаратного устройства (например, GAHT12345678), либо Amazon Resource Name (ARN) виртуального устройства (например, arn:aws:iam::123456789012:mfa/user).
  • role_session_name - имя, примененное к сеансу принятия роли. Это значение влияет на ARN пользователя, принявшего роль (например, arn:aws:sts::123456789012:assumed-role/role_name/role_session_name). Это соответствует параметру RoleSessionName в операции AssumeRole. Этот параметр является необязательным. Если вы не предоставите это значение, имя сеанса будет сгенерировано автоматически.
  • duration_seconds - продолжительность сеанса роли в секундах. Значение может варьироваться от 900 секунд (15 минут) до максимального значения продолжительности сеанса для роли. Этот параметр является необязательным, и по умолчанию значение установлено в 3600 секунд.

Если аутентификация MFA не требуется, вам нужно указать только role_arn и либо source_profile, либо credential_source.

Когда вы указываете профиль с конфигурацией роли IAM, AWS CLI выполнит AssumeRole вызов для получения временных удостоверений. Эти удостоверения затем сохраняются (в ~/.aws/cli/cache). Последующие команды AWS CLI будут использовать кэшированные временные удостоверения до их истечения, в этом случае AWS CLI автоматически обновит удостоверения.

Если вы укажете mfa_serial, то при первом выполнении AssumeRole вызова вам будет предложено ввести код MFA. Последующие команды будут использовать кэшированные временные удостоверения. Однако при истечении срока действия временных удостоверений вам будет предложено ввести другой код MFA.

Пример конфигурации с использованием source_profile:

# In ~/.aws/credentials:
[development]
aws_access_key_id=foo
aws_secret_access_key=bar

# In ~/.aws/config
[profile crossaccount]
role_arn=arn:aws:iam:...
source_profile=development

Пример конфигурации с использованием credential_source для использования роли экземпляра в качестве исходных удостоверений для вызова принятия роли:

# In ~/.aws/config
[profile crossaccount]
role_arn=arn:aws:iam:...
credential_source=Ec2InstanceMetadata

Принятие роли с веб-идентификатором

В файле ~/.aws/config вы также можете настроить профиль, чтобы указать, что AWS CLI должен принять роль. При этом AWS CLI автоматически выполнит соответствующие AssumeRoleWithWebIdentity вызовы в AWS STS от вашего имени.

Когда вы указываете профиль с конфигурацией принятия роли, AWS CLI выполнит AssumeRoleWithWebIdentity вызов для получения временных удостоверений. Эти удостоверения затем сохраняются (в ~/.aws/cli/cache). Последующие команды AWS CLI будут использовать кэшированные временные удостоверения до их истечения, в этом случае AWS CLI автоматически обновит удостоверения.

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

  • role_arn - ARN роли, которую вы хотите принять.
  • web_identity_token_file - путь к файлу, содержащему токен OAuth 2.0 или токен OpenID Connect, предоставленный поставщиком идентификации. Содержимое этого файла будет загружено и передано в качестве аргумента WebIdentityToken операции AssumeRoleWithWebIdentity.
  • role_session_name - имя, примененное к сеансу принятия роли. Это значение влияет на ARN пользователя, принявшего роль (например, arn:aws:sts::123456789012:assumed-role/role_name/role_session_name). Это соответствует параметру RoleSessionName в операции AssumeRoleWithWebIdentity. Этот параметр является необязательным. Если вы не предоставите это значение, имя сеанса будет сгенерировано автоматически.

Ниже приведен пример конфигурации с минимальным количеством необходимых настроек для настройки профиля принятия роли с веб-идентификатором:

# In ~/.aws/config
[profile web-identity]
role_arn=arn:aws:iam:...
web_identity_token_file=/path/to/a/token

Этот поставщик также может быть настроен через среду:

AWS_ROLE_ARN
ARN роли, которую вы хотите принять.
AWS_WEB_IDENTITY_TOKEN_FILE
Путь к файлу токена веб-идентификатора.
AWS_ROLE_SESSION_NAME
Имя, примененное к сеансу принятия роли.

Примечание

Эти переменные среды в настоящее время применяются только к поставщику принятия роли с веб-идентификатором и не применяются к общей конфигурации принятия роли.

Получение учетных данных из внешних процессов

Предупреждение

В данном разделе описан метод получения учетных данных из внешнего процесса. Это может быть небезопасно, поэтому действуйте с осторожностью. Если возможно, используйте другие способы получения учетных данных. Если вы используете этот вариант, убедитесь, что конфигурационный файл максимально защищен в соответствии с лучшими практиками безопасности вашей операционной системы. Убедитесь, что ваш пользовательский инструмент для получения учетных данных не записывает секретную информацию в StdErr, так как SDK и командная строка могут захватывать и регистрировать эту информацию, что может привести к её раскрытию неавторизованным пользователям.

Если у вас есть способ получения учетных данных, который не встроен в AWS CLI, вы можете интегрировать его, используя credential_process в конфигурационном файле. AWS CLI вызовет эту команду точно так, как она указана, а затем прочитает данные JSON из stdout. Процесс должен записать учетные данные в stdout в следующем формате:

{
  "Version": 1,
  "AccessKeyId": "",
  "SecretAccessKey": "",
  "SessionToken": "",
  "Expiration": ""
}

Ключ Version должен быть установлен на значение 1. Это значение может изменяться со временем по мере развития структуры данных.

Ключ Expiration — это отформатированный в соответствии с ISO8601 временной отметки. Если ключ Expiration не возвращается в stdout, то учетные данные являются постоянными и не обновляются. В противном случае учетные данные считаются обновляемыми и будут обновляться автоматически. ПРИМЕЧАНИЕ: В отличие от учетных данных с использованием Assume Role, AWS CLI НЕ будет кешировать учетные данные процесса. Если требуется кеширование, оно должно быть реализовано во внешнем процессе.

Процесс может вернуть ненулевой код возврата (RC), чтобы указать, что при получении учетных данных произошла ошибка.

Некоторые поставщики процессов могут потребовать дополнительной информации для получения необходимых учетных данных. Это можно сделать через аргументы командной строки. ПРИМЕЧАНИЕ: параметры командной строки могут быть видны процессу, выполняющемуся на том же компьютере.

Пример конфигурации:

[profile dev]
credential_process = /opt/bin/awscreds-custom

Пример конфигурации с параметрами:

[profile dev]
credential_process = /opt/bin/awscreds-custom --username monty

Конфигурация, специфичная для сервиса

Конфигурация повторных попыток

Эти переменные конфигурации управляют тем, как AWS CLI повторяет запросы.

max_attempts
Целое число, представляющее максимальное количество попыток, которое будет предпринято для одного запроса, включая начальную попытку. Например, если это значение установить в 5, запрос будет повторён до 4 раз. Если не указано, количество повторов будет по умолчанию соответствовать модели, которая обычно составляет 5 попыток в режиме legacy и 3 в режимах standard и adaptive.
retry_mode

Строка, представляющая тип повторных попыток, которые будет выполнять AWS CLI. Допустимые значения:

  • standard — Стандартный набор правил повторных попыток для всех AWS SDK. Включает стандартный набор ошибок, которые повторяются, а также поддержку квот повторных попыток, которые ограничивают количество неудачных повторных попыток, которые может сделать SDK. В этом режиме максимальное количество попыток по умолчанию будет равно 3, если не указано явное значение max_attempts.
  • adaptive — Экспериментальный режим повторных попыток, включающий все функции режима standard, а также автоматическое ограничение скорости со стороны клиента. Это предварительный режим, поведение которого может измениться в будущем.

Amazon S3

Существует ряд переменных конфигурации, специфичных для команд S3. Подробнее см. Конфигурация AWS CLI для S3 (aws help topics s3-config).

Конфигурация, специфичная для ОС

Локаль

Если у вас есть данные, хранящиеся в AWS, которые используют определённое кодирование, убедитесь, что ваши системы настроены на поддержку этого кодирования. Например, если у вас есть символы Юникода в качестве ключа на EC2, вам необходимо убедиться, что ваша локаль настроена на поддержку Юникода. Способ настройки локали зависит от вашей операционной системы и ваших конкретных требований IT. Одним из вариантов для систем UNIX является переменная окружения LC_ALL. Например, установка значения LC_ALL=en_US.UTF-8 даст вам локаль США на английском языке, совместимую с Юникодом.

Для настройки кодирования, используемого при чтении текстовых файлов, можно использовать переменную окружения AWS_CLI_FILE_ENCODING. Например, если вы используете Windows с кодированием по умолчанию CP1252, установка значения AWS_CLI_FILE_ENCODING=UTF-8 заставит CLI игнорировать кодирование локали и открывать текстовые файлы с использованием кодирования UTF-8.

Для настройки кодирования, используемого для вывода CLI, можно использовать переменную окружения AWS_CLI_OUTPUT_ENCODING. Например, если вы используете Windows с кодированием по умолчанию CP1252, установка значения AWS_CLI_OUTPUT_ENCODING=UTF-8 заставит CLI игнорировать кодирование локали и форматировать вывод с использованием кодирования UTF-8.

Обратитесь к документации по стандартным кодировкам Python для возможных значений обоих настроек.

Просмотрщик страниц

AWS CLI использует просмотрщик страниц для вывода данных, которые не помещаются на экран.

В Linux/macOS используется просмотрщик less по умолчанию. В Windows по умолчанию используется more.

Настройка просмотрщика страниц

Вы можете переопределить просмотрщик страниц по умолчанию с помощью следующих параметров конфигурации. Они упорядочены по приоритету:

  • Переменная окружения AWS_PAGER
  • Переменная общего конфигурационного файла cli_pager
  • Переменная окружения PAGER

Если вы установите любой из параметров конфигурации в пустую строку (например, AWS_PAGER="") или используете параметр --no-cli-pager в командной строке, AWS CLI не будет отправлять вывод в просмотрщик страниц.

Примеры

Чтобы отключить просмотрщик страниц для профиля default:

aws configure set cli_pager "" --profile default

Чтобы отключить просмотрщик страниц для всех профилей в текущем сеансе терминала:

export AWS_PAGER="" - for Linux

set AWS_PAGER="" - for Windows cmd

Чтобы отключить просмотрщик страниц для одного вызова команды:

aws <command> <sub-command> --no-cli-pager

Настройки просмотрщика страниц

Если переменная окружения LESS не задана, AWS CLI установит её в значение FRX (см. руководство по «less» для получения дополнительной информации о возможных параметрах https://man7.org/linux/man-pages/man1/less.1.html) для установки соответствующих флагов. Если вы зададите переменную окружения LESS, мы не перезапишем её нашим значением (например, FRX). Учтите, что разные оболочки могут иметь разные значения по умолчанию для переменной окружения LESS, что может привести к непредсказуемому поведению вывода AWS CLI.

Вы также можете установить флаги при указании просмотрщика, и они будут объединены с любыми переменными окружения, которые мы установили (например, AWS_PAGER="less -S" сделает его менее -FRXS). Поведение объединения флагов является особенностью less. Вы также можете отменить флаги, которые мы установили, указав их в командной строке (например, AWS_PAGER="less -+F" деактивирует поведение «quit if one screen»).

Для Windows используется more без дополнительных переменных окружения.

Плагины

Предупреждение

Поддержка плагинов в AWS CLI v2 полностью предварительная и предназначена для помощи пользователям в миграции с AWS CLI v1 до выхода стабильного интерфейса плагинов. Нет гарантий, что определённый плагин или даже интерфейс плагинов CLI будет поддерживаться в будущих версиях AWS CLI v2. Если вы полагаетесь на плагины, обязательно привяжитесь к определённой версии CLI и протестируйте функциональность плагина при обновлении.

Для включения поддержки плагинов создайте раздел [plugins] в вашем файле ~/.aws/config:

[plugins]
cli_legacy_plugin_path = <path-to-plugins>/python3.8/site-packages
<plugin-name> = <plugin-module>

В разделе [plugins] вы должны определить переменную cli_legacy_plugin_path и установить её значение в путь к каталогу Python site packages, где находится ваш плагин. После определения вы можете настроить плагины, указав имя плагина, plugin-name, и модуль Python, plugin-module, содержащий исходный код вашего плагина. Затем CLI загружает каждый плагин, импортируя их plugin-module и вызывая их функцию awscli_initialize.

© Copyright 2025, Amazon Web Services. Created using Sphinx.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API