Как использовать несколько учетных записей AWS из командной строки?

116

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

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

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

псевдоним ec2-описать-экземпляры1 = экспорт EC2_PRIVATE_KEY = / путь; ec2-описать-экземпляры

Мэтт Калбрет
источник

Ответы:

18

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

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

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

alias ec2-describe-instances1 ec2-describe-instances -K /path/to/key.pem
владр
источник
310

Вы можете работать с двумя учетными записями, создав два профиля в командной строке 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
iBrianCox
источник
Для настройки региона - вот список «кодов» регионов
docs.aws.amazon.com/general/latest/gr/rande.html
66

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

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}}

Ссылка

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

BG BRUNO
источник
2
@iBrianCox - эту информацию желательно объединить в ответ, получивший наибольшее количество голосов ( stackoverflow.com/a/34246053/1199564 ), потому что он позволяет пользователю понять, как перемещать настройки из одного профиля в другой, если, например, вы начали только с профилем по умолчанию и хотите продолжить с выделенными отдельными профилями.
mgd
@slm, пожалуйста, прочтите мой комментарий выше (смог сделать только одно упоминание за комментарий)
mgd
@mgd спасибо за предложение, но нет - потому что сначала это не мой ответ, а во-вторых, это другой подход к его настройке
BG BRUNO
@mgd В, не могли бы вы подробнее описать, что вы имеете в виду «одно упоминание на комментарий»?
BG BRUNO
Я имел в виду, что в моем первом комментарии я намеревался упомянуть как iBrianCox, так и slm (автор и редактор другого ответа соответственно), но вам разрешено делать только одно упоминание для каждого комментария, поэтому мне пришлось добавить еще один комментарий, чтобы упомянуть оба . Вы правы, что ваш ответ - это другой подход, но очень полезно знать, где хранится информация, в частности, если вы собираетесь копировать настройки между профилями.
mgd
6

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

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

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

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

Крис
источник
0

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

Роман Ньюаза
источник
0

Я создал простой инструмент aaws для переключения между учетными записями AWS.

Он работает путем установки AWS_DEFAULT_PROFILEв вашей оболочке. Просто убедитесь, что у вас есть несколько записей в вашем ~/.aws/credentialsфайле, и он может легко переключаться между несколькими учетными записями.

/tmp
$ aws s3 ls
Unable to locate credentials. You can configure credentials by running "aws configure".
/tmp
$ aaws luk3

[luk3] 🔐 /tmp
$ aws s3 ls
2013-11-05 21:40:04 luk3thomas.com
luk3thomas
источник