Bagaimana cara menggunakan beberapa Akun AWS dari baris perintah?

115

Saya punya dua aplikasi berbeda yang saya hosting (yang kedua akan segera naik) di Amazon EC2.

Bagaimana saya dapat bekerja dengan kedua akun di baris perintah (Mac OS X) tetapi tetap memisahkan kunci & sertifikat EC2? Apakah saya perlu mengubah variabel lingkungan saya sebelum setiap perintah ec2- *?

Akankah menggunakan sebuah alias dan memiliki itu ke pengaturan lingkungan kerja in-line? Sesuatu seperti:

alias ec2-deskripsikan-instance1 = ekspor EC2_PRIVATE_KEY = / jalur; ec2-deskripsikan-instance

Matt Culbreth
sumber

Jawaban:

17

Anda harus dapat menggunakan opsi-perintah berikut sebagai pengganti variabel lingkungan EC2_PRIVATE_KEY(dan bahkan EC2_CERT):

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

Anda dapat meletakkan ini di dalam alias, misalnya

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

Anda dapat bekerja dengan dua akun dengan membuat dua profil pada baris perintah aws. Ini akan meminta Anda memasukkan ID Kunci Akses AWS, Kunci Akses Rahasia AWS, dan wilayah yang diinginkan, jadi persiapkan.

Contoh:

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

Anda kemudian dapat beralih di antara akun dengan meneruskan profil pada perintah.

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

catatan:

Jika Anda menamai profil itu, profil defaulttersebut akan menjadi profil default, yaitu jika tidak ada --profileparameter dalam perintah.


Lebih lanjut tentang profil default

Jika Anda menghabiskan lebih banyak waktu menggunakan akun1 , Anda dapat menjadikannya sebagai default dengan menyetel variabel lingkungan AWS_DEFAULT_PROFILE. Saat variabel lingkungan default disetel, Anda tidak perlu menentukan profil di setiap perintah.

Contoh Linux, OS X:

$ export AWS_DEFAULT_PROFILE=account1
$ aws dynamodb list-tables

Contoh Windows:

$ set AWS_DEFAULT_PROFILE=account1
$ aws s3 ls
iBrianCox
sumber
Untuk mengkonfigurasi wilayah - berikut adalah daftar "kode" wilayah - docs.aws.amazon.com/general/latest/gr/rande.html
arcseldon
66

Mungkin itu masih membantu seseorang. Anda dapat mengaturnya secara manual.

1) Atur dalam file

~/.aws/credentials

ini

[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) Atur dalam file

~/.aws/config

ini

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

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

3) Uji dengan AWS Command Line dan perintah serta keluarannya adalah 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
sumber
2
@iBrianCox - Informasi ini sebaiknya digabungkan menjadi jawaban yang paling banyak dipilih ( stackoverflow.com/a/34246053/1199564 ) karena memungkinkan pengguna memahami cara memindahkan pengaturan dari satu profil ke profil lain jika, misalnya, Anda memulai hanya dengan profil default dan ingin melanjutkan dengan profil khusus dan terpisah.
mgd
@slm tolong baca komentar saya di atas (hanya bisa melakukan satu mention per komentar)
mgd
@mgd terima kasih atas sarannya, tetapi tidak - karena pada awalnya jawaban itu bukan saya - dan kedua ini adalah pendekatan yang berbeda bagaimana mengaturnya
BG BRUNO
@mgd Q dapatkah Anda lebih menjelaskan apa yang Anda maksud "satu sebutan per komentar"?
BG BRUNO
Apa yang saya maksudkan adalah bahwa dalam komentar pertama saya, saya dimaksudkan untuk menyebutkan kedua iBrianCox dan slm (penulis dan editor jawaban lainnya masing-masing), tetapi Anda hanya diperbolehkan untuk melakukan satu menyebutkan per komentar jadi aku harus menambahkan komentar lain untuk menyebutkan kedua . Anda benar bahwa jawaban Anda adalah pendekatan yang berbeda tetapi sangat membantu untuk mengetahui di mana informasi disimpan, khususnya jika Anda bermaksud untuk menyalin pengaturan di antara profil.
mgd
0

Anda dapat menulis skrip shell untuk menetapkan nilai variabel lingkungan yang sesuai untuk setiap akun berdasarkan masukan pengguna. Dengan melakukan itu, Anda tidak perlu membuat alias apa pun dan, terlebih lagi, alat seperti alat ELB, Alat Baris Perintah Penskalaan Otomatis juga akan berfungsi di beberapa akun.

Roman Newaza
sumber
0

Saya membuat alat sederhana, aaws , untuk beralih antar akun AWS.

Ini bekerja dengan mengatur AWS_DEFAULT_PROFILEdi shell Anda. Pastikan Anda memiliki beberapa entri di ~/.aws/credentialsfile Anda dan itu akan dengan mudah beralih di antara banyak akun.

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