Come utilizzare più account AWS dalla riga di comando?


115

Ho due diverse app che sto ospitando (beh, la seconda sta per essere installata) su Amazon EC2.

Come posso lavorare con entrambi gli account dalla riga di comando (Mac OS X) ma tenere separati i certificati e le chiavi EC2? Devo cambiare le mie variabili d'ambiente prima di ogni comando ec2- *?

Usare un alias e averlo per l'impostazione dell'ambiente in linea funzionerebbe? Qualcosa di simile a:

alias ec2-descri-istanze1 = esporta EC2_PRIVATE_KEY = / percorso; -istanze EC2-descrivere

Risposte:


17

Dovresti essere in grado di utilizzare le seguenti opzioni di comando al posto delle EC2_PRIVATE_KEY(e anche EC2_CERT) variabili di ambiente:

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

Puoi inserire questi alias all'interno, ad es

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

310

Puoi lavorare con due account creando due profili sulla riga di comando di aws. Ti chiederà l' ID della chiave di accesso AWS, la chiave di accesso segreta AWS e la regione desiderata, quindi tienili a portata di mano .

Esempi:

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

È quindi possibile passare da un account all'altro passando il profilo sul comando.

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

Nota:

Se si nomina il profilo in modo che defaultsia, diventerà il profilo predefinito, cioè quando nessun --profileparametro nel comando.


Maggiori informazioni sul profilo predefinito

Se trascorri più tempo utilizzando account1 , puoi impostarlo come predefinito impostando la variabile di ambiente AWS_DEFAULT_PROFILE. Quando la variabile di ambiente predefinita è impostata, non è necessario specificare il profilo su ogni comando.

Linux, OS X Esempio:

$ export AWS_DEFAULT_PROFILE=account1
$ aws dynamodb list-tables

Esempio di Windows:

$ set AWS_DEFAULT_PROFILE=account1
$ aws s3 ls

Per configurare la regione, ecco l'elenco dei "codici" regionali
docs.aws.amazon.com/general/latest/gr/rande.html

66

Forse aiuta ancora qualcuno. Puoi impostarlo manualmente.

1) Imposta in file

~/.aws/credentials

Questo

[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) Imposta in file

~/.aws/config

Questo

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

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

3) Provalo con la riga di comando AWS e il comando e l'output saranno JSON

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

arbitro

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


2
@iBrianCox - Queste informazioni dovrebbero essere preferibilmente fusa nella risposta più upvoted ( stackoverflow.com/a/34246053/1199564 ) perché consente a un utente di capire come muoversi impostazioni da un profilo all'altro se, ad esempio, hai iniziato solo con il profilo predefinito e si desidera continuare con profili separati e dedicati.
mgd

@slm per favore leggi il mio commento sopra (è stato in grado di fare solo una menzione per commento)
mgd

@mgd grazie per il suggerimento, ma no - perché all'inizio quella risposta non è mia - e in secondo luogo questo è un approccio diverso su come impostarlo
BG BRUNO

@mgd Q puoi descrivere meglio cosa intendi con "una menzione per commento"?
BG BRUNO

Quello che volevo dire era che nel mio primo commento intendevo menzionare sia iBrianCox che slm (rispettivamente autore ed editore dell'altra risposta) ma ti è permesso fare solo una menzione per commento, quindi ho dovuto aggiungere un altro commento per menzionarli entrambi . Hai ragione sul fatto che la tua risposta è un approccio diverso ma è molto utile sapere dove sono archiviate le informazioni, in particolare se intendi copiare le impostazioni tra i profili.
mgd


0

È possibile scrivere uno script di shell per impostare i valori corrispondenti delle variabili di ambiente per ogni account in base all'input dell'utente. In questo modo, non è necessario creare alcun alias e, inoltre, strumenti come gli strumenti ELB, gli strumenti della riga di comando Auto Scaling funzioneranno anche con più account.


0

Ho creato un semplice strumento, aaws , per passare da un account AWS all'altro.

Funziona impostando AWS_DEFAULT_PROFILEnella tua shell. Assicurati solo di avere alcune voci nel tuo ~/.aws/credentialsfile e passerà facilmente da un account all'altro.

/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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.