Wie verwende ich mehrere AWS-Konten über die Befehlszeile?

114

Ich habe zwei verschiedene Apps, die ich auf Amazon EC2 hoste (die zweite steht kurz vor dem Start).

Wie kann ich mit beiden Konten über die Befehlszeile (Mac OS X) arbeiten, aber die EC2-Schlüssel und -Zertifikate getrennt halten? Muss ich meine Umgebungsvariablen vor jedem ec2- * Befehl ändern?

Würde es funktionieren, einen Alias ​​zu verwenden und ihn für die Einstellung der Umgebung inline zu haben? Etwas wie:

Alias ​​ec2-description-instance1 = export EC2_PRIVATE_KEY = / path; ec2-beschreiben-Instanzen

Matt Culbreth
quelle

Antworten:

17

Sie sollten in der Lage sein, die folgenden Befehlsoptionen anstelle der EC2_PRIVATE_KEY(und sogar EC2_CERT) Umgebungsvariablen zu verwenden:

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

Sie können diese in Aliase einfügen, z

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

Sie können mit zwei Konten arbeiten, indem Sie zwei Profile in der aws-Befehlszeile erstellen . Sie werden aufgefordert, Ihre AWS Access Key ID (AWS Secret Access Key) einzugeben und die gewünschte Region einzugeben. diese bereit.

Beispiele:

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

Sie können dann zwischen den Konten wechseln, indem Sie das Profil für den Befehl übergeben.

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

Hinweis:

Wenn Sie das Profil so benennen, wird defaultes zum Standardprofil, dh wenn --profileder Befehl keinen Parameter enthält.


Mehr zum Standardprofil

Wenn Sie mehr Zeit mit account1 verbringen , können Sie dies als Standard , indem Sie die Umgebungsvariable AWS_DEFAULT_PROFILE festlegen. Wenn die Standardumgebungsvariable festgelegt ist, müssen Sie das Profil nicht für jeden Befehl angeben.

Linux, OS X Beispiel:

$ export AWS_DEFAULT_PROFILE=account1
$ aws dynamodb list-tables

Windows Beispiel:

$ set AWS_DEFAULT_PROFILE=account1
$ aws s3 ls
iBrianCox
quelle
Um die Region zu konfigurieren - hier ist eine Liste der "Codes" der Region - docs.aws.amazon.com/general/latest/gr/rande.html
arcseldon
65

Vielleicht hilft es noch jemandem. Sie können es manuell einstellen.

1) In Datei setzen

~/.aws/credentials

Dies

[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) In Datei setzen

~/.aws/config

Dies

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

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

3) Testen Sie es mit der AWS-Befehlszeile und Befehl und Ausgabe sind 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

BG BRUNO
quelle
2
@iBrianCox - Diese Informationen sollten vorzugsweise in der am besten bewerteten Antwort ( stackoverflow.com/a/34246053/1199564 ) zusammengeführt werden, da ein Benutzer verstehen kann, wie Einstellungen von einem Profil in ein anderes verschoben werden, wenn Sie beispielsweise angefangen haben mit nur dem Standardprofil und möchten mit dedizierten, separaten Profilen fortfahren.
mgd
@slm bitte lesen Sie meinen Kommentar oben (konnte nur eine Erwähnung pro Kommentar machen)
mgd
@mgd danke für den Vorschlag, aber nein - denn zuerst ist diese Antwort nicht meine - und zweitens ist dies ein anderer Ansatz, wie man sie einstellt
BG BRUNO
@mgd F Kannst du genauer beschreiben, was du mit "eine Erwähnung pro Kommentar" meinst?
BG BRUNO
Was ich damit meinte war, dass ich in meinem ersten Kommentar sowohl iBrianCox als auch slm (Autor und Herausgeber der anderen Antwort) erwähnen wollte, aber Sie dürfen nur eine Erwähnung pro Kommentar machen, sodass ich einen weiteren Kommentar hinzufügen musste, um beide zu erwähnen . Sie haben Recht, dass Ihre Antwort ein anderer Ansatz ist, aber es ist sehr hilfreich zu wissen, wo die Informationen gespeichert sind, insbesondere wenn Sie beabsichtigen, Einstellungen zwischen Profilen zu kopieren.
mgd
0

Sie können ein Shell-Skript schreiben, um die entsprechenden Werte der Umgebungsvariablen für jedes Konto basierend auf Benutzereingaben festzulegen. Auf diese Weise müssen Sie keine Aliase erstellen. Außerdem funktionieren Tools wie ELB-Tools und die Befehlszeilentools für die automatische Skalierung auch unter mehreren Konten.

Roman Newaza
quelle
0

Ich habe ein einfaches Tool erstellt , um zwischen AWS-Konten zu wechseln.

Es funktioniert, indem Sie das AWS_DEFAULT_PROFILEin Ihrer Shell einstellen . Stellen Sie einfach sicher, dass Ihre ~/.aws/credentialsDatei einige Einträge enthält, damit problemlos zwischen mehreren Konten gewechselt werden kann.

/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
quelle