Как использовать несколько учетных записей AWS из командной строки? - PullRequest
81 голосов
/ 27 февраля 2009

У меня есть два разных приложения, которые я размещаю (ну, второе готовится к запуску) на Amazon EC2.

Как я могу работать с обеими учетными записями в командной строке (Mac OS X), но хранить ключи и сертификаты EC2 отдельно? Нужно ли менять переменные окружения перед каждой командой ec2- *?

Будет ли работать псевдоним и использовать его для настройки встроенной среды? Что-то вроде:

псевдоним ec2-description-instances1 = export EC2_PRIVATE_KEY = / path; ec2-описания-экземпляры

Ответы [ 6 ]

207 голосов
/ 13 декабря 2015

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

Примеры:

$ aws configure --profile account1
$ aws configure --profile account2

Затем вы можете переключаться между учетными записями, передавая профиль по команде.

$ aws dynamodb list-tables --profile account1
$ aws s3 ls --profile account2

Примечание:

Если вы назовете профиль default, он станет профилем по умолчанию , т.е. когда в команде нет --profile параметра.


Подробнее о профиле по умолчанию

Если вы проводите больше времени, используя account1 , вы можете установить его по умолчанию, установив переменную среды AWS_DEFAULT_PROFILE. Если задана переменная среды по умолчанию, вам не нужно указывать профиль для каждой команды.

Linux, OS X Пример:

$ export AWS_DEFAULT_PROFILE=account1
$ aws dynamodb list-tables

Windows Пример:

$ set AWS_DEFAULT_PROFILE=account1
$ aws s3 ls
38 голосов
/ 28 ноября 2015

Может, это еще кому-нибудь поможет. Вы можете установить его вручную.

1) Установить в файл

~/.aws/credentials

это

[default]
aws_access_key_id={{aws_access_key_id}}
aws_secret_access_key={{aws_secret_access_key}}

[{{profile_name}}]
aws_access_key_id={{aws_access_key_id}}
aws_secret_access_key={{aws_secret_access_key}}

2) Установить в файл

~/.aws/config

это

[default]
region={{region}}
output={{output:"json||text"}}

[profile {{profile_name}}]
region={{region}}
output={{output:"json||text"}}

3) Протестируйте его с помощью Командная строка AWS , и команда и выходные данные будут JSON

aws ec2 describe-instances --profile {{profile_name}}

Ref

http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-multiple-profiles

15 голосов
/ 27 февраля 2009

Вместо переменных окружения EC2_PRIVATE_KEY (и даже EC2_CERT) вы должны использовать следующие параметры команды:

  • -K <private key>
  • -C <certificate>

Вы можете поместить их в псевдонимы, например,

alias ec2-describe-instances1 ec2-describe-instances -K /path/to/key.pem
6 голосов
/ 15 декабря 2013

Новые инструменты aws теперь поддерживают несколько профилей.

Если вы настраиваете доступ с помощью инструментов, он автоматически создает значение по умолчанию в ~ / .aws / config.

Затем вы можете добавить дополнительные профили - более подробную информацию можно получить по адресу:

http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html#cli-multiple-profiles

0 голосов
/ 05 января 2018

Я рекомендую проверить инкапсулированный CLI док-контейнера. Вы можете запустить контейнер для каждой учетной записи для лучшей изоляции.

0 голосов
/ 17 февраля 2012

Вы можете написать сценарий оболочки для установки соответствующих значений переменных среды для каждой учетной записи на основе пользовательского ввода. Для этого вам не нужно создавать псевдонимы и, кроме того, такие инструменты, как инструменты ELB, инструменты командной строки для автоматического масштабирования будут работать и под несколькими учетными записями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...