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

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

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

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

alias ec2-describe-instances1 = export EC2_PRIVATE_KEY=/path; ec2-describe-instances

Ответов (8)

Решение

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

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

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

alias ec2-describe-instances1 ec2-describe-instances -K /path/to/key.pem

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

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

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

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

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

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

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

Вы можете работать с двумя учетными записями, создав два профиля в командной строке 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

Я создал простой инструмент 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

Чтобы использовать роль IAM, вы должны выполнить вызов API для STS: AssumeRole, который вернет временный идентификатор ключа доступа, секретный ключ и маркер безопасности, которые затем можно использовать для подписи будущих вызовов API. Раньше для обеспечения безопасного перекрестного доступа на основе ролей из интерфейса командной строки AWS (CLI) требовался явный вызов STS: AssumeRole и использовались ваши долгосрочные учетные данные. Полученные временные учетные данные были записаны и сохранены в вашем профиле, и этот профиль использовался для последующих вызовов API AWS. Этот процесс пришлось повторить, когда срок действия временных учетных данных истек (по умолчанию через 1 час).

https://aws.amazon.com/blogs/security/how-to-use-a-single-iam-user-to-easily-access-all-your-accounts-by-using-the-aws-cli/

ИМХО, самый простой способ , чтобы редактировать .aws/credentials и .aws/config файлы вручную.

Это просто и работает для Linux, Mac и Windows. Просто прочтите это для получения более подробной информации (1 минута чтения) .

.aws/credentials файл:

[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[user1]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY

.aws/config файл:

[default]
region=us-west-2
output=json

[profile user1]    <-- 'profile' in front of 'profile_name' (not for default)!!
region=us-east-1
output=text