Jak korzystać z wielu kont AWS z wiersza poleceń?

115

Mam dwie różne aplikacje, które hostuję (druga wkrótce zostanie udostępniona) na Amazon EC2.

Jak mogę pracować z oboma kontami w wierszu poleceń (Mac OS X), ale oddzielnie przechowywać klucze i certyfikaty EC2? Czy muszę zmieniać zmienne środowiskowe przed każdym poleceniem ec2- *?

Czy użycie aliasu i umieszczenie go w ustawieniu środowiska w linii działałoby? Coś jak:

alias ec2-opis-instancje1 = eksport EC2_PRIVATE_KEY = / ścieżka; ec2-opis-instancje

Matt Culbreth
źródło

Odpowiedzi:

17

Powinieneś móc użyć następujących opcji polecenia zamiast EC2_PRIVATE_KEY(a nawet EC2_CERT) zmiennych środowiskowych:

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

Możesz je umieścić w aliasach, np

alias ec2-describe-instances1 ec2-describe-instances -K /path/to/key.pem
vladr
źródło
310

Możesz pracować z dwoma kontami, tworząc dwa profile w wierszu poleceń aws. Zostaniesz poproszony o podanie identyfikatora klucza dostępu AWS, tajnego klucza dostępu AWS i żądanego regionu, więc przygotuj je.

Przykłady:

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

Następnie możesz przełączać się między kontami, przekazując profil w poleceniu.

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

Uwaga:

Jeśli nazwiesz ten profil default, stanie się on profilem domyślnym, tj. Gdy --profilew poleceniu nie ma żadnego parametru.


Więcej o profilu domyślnym

Jeśli spędzasz więcej czasu na koncie 1 , możesz ustawić je jako domyślne, ustawiając zmienną środowiskową AWS_DEFAULT_PROFILE. Gdy ustawiona jest domyślna zmienna środowiskowa, nie ma potrzeby określania profilu w każdym poleceniu.

Przykład systemu Linux, OS X:

$ export AWS_DEFAULT_PROFILE=account1
$ aws dynamodb list-tables

Przykład systemu Windows:

$ set AWS_DEFAULT_PROFILE=account1
$ aws s3 ls
iBrianCox
źródło
Aby skonfigurować region - tutaj jest lista „kodów” regionów
docs.aws.amazon.com/general/latest/gr/rande.html
66

Może to nadal komuś pomoże. Możesz ustawić go ręcznie.

1) Ustaw w pliku

~/.aws/credentials

to

[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) Ustaw w pliku

~/.aws/config

to

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

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

3) Przetestuj za pomocą wiersza poleceń AWS, a polecenie i dane wyjściowe będą w formacie JSON

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

Nr ref

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

BG BRUNO
źródło
2
@iBrianCox - Najlepiej byłoby, gdyby te informacje zostały połączone w odpowiedzi, które cieszą się największą popularnością ( stackoverflow.com/a/34246053/1199564 ), ponieważ pozwalają one użytkownikowi zrozumieć, jak przenosić ustawienia z jednego profilu do drugiego, jeśli np. tylko z domyślnym profilem i chcesz kontynuować z dedykowanymi, oddzielnymi profilami.
mgd
@slm, przeczytaj mój komentarz powyżej (był w stanie zrobić tylko jedną wzmiankę na komentarz)
mgd
@mgd dziękuję za sugestię, ale nie - ponieważ na początku ta odpowiedź nie jest moja - a po drugie jest to inne podejście, jak to ustawić
BG BRUNO
@mgd P czy możesz dokładniej opisać, co masz na myśli, mówiąc „jedna wzmianka na komentarz”?
BG BRUNO
Chodziło mi o to, że w moim pierwszym komentarzu zamierzałem wspomnieć zarówno iBrianCox, jak i slm (odpowiednio autor i redaktor drugiej odpowiedzi), ale możesz zrobić tylko jedną wzmiankę na komentarz, więc musiałem dodać kolejny komentarz, aby wspomnieć oba . Masz rację, że Twoja odpowiedź jest innym podejściem, ale bardzo pomocne jest wiedzieć, gdzie przechowywane są informacje, w szczególności jeśli zamierzasz kopiować ustawienia między profilami.
mgd
0

Możesz napisać skrypt powłoki, aby ustawić odpowiednie wartości zmiennych środowiskowych dla każdego konta na podstawie danych wejściowych użytkownika. Robiąc to, nie musisz tworzyć żadnych aliasów, a ponadto narzędzia takie jak narzędzia ELB, narzędzia wiersza poleceń automatycznego skalowania będą działać również na wielu kontach.

Roman Newaza
źródło
0

Stworzyłem proste narzędzie aaws do przełączania się między kontami AWS.

Działa poprzez ustawienie AWS_DEFAULT_PROFILEw powłoce. Po prostu upewnij się, że masz jakieś wpisy w ~/.aws/credentialspliku i będzie można łatwo przełączać się między wieloma kontami.

/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
źródło