Làm cách nào để sử dụng nhiều Tài khoản AWS từ dòng lệnh?


114

Tôi có hai ứng dụng khác nhau mà tôi đang lưu trữ (tốt nhất là ứng dụng thứ hai sắp xuất hiện) trên Amazon EC2.

Làm cách nào tôi có thể làm việc với cả hai tài khoản tại dòng lệnh (Mac OS X) nhưng vẫn giữ các khóa và chứng chỉ EC2 riêng biệt? Tôi có cần thay đổi các biến môi trường của mình trước mỗi lệnh ec2- * không?

Việc sử dụng bí danh và đặt nó vào cài đặt của môi trường nội dòng có hoạt động không? Cái gì đó như:

bí danh ec2-description-instances1 = export EC2_PRIVATE_KEY = / path; ec2-description-instance

Câu trả lời:


17

Bạn sẽ có thể sử dụng các tùy chọn lệnh sau thay cho các biến môi trường EC2_PRIVATE_KEY(và thậm chí EC2_CERT):

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

Bạn có thể đặt những bí danh này bên trong, ví dụ:

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

309

Bạn có thể làm việc với hai tài khoản bằng cách tạo hai cấu hình trên dòng lệnh aws. Nó sẽ nhắc bạn về ID khóa truy cập AWS, Khóa truy cập bí mật AWS và khu vực mong muốn, vì vậy hãy chuẩn bị sẵn chúng.

Ví dụ:

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

Sau đó, bạn có thể chuyển đổi giữa các tài khoản bằng cách chuyển hồ sơ trên lệnh.

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

Ghi chú:

Nếu bạn đặt tên cho cấu hình là defaultnó sẽ trở thành cấu hình mặc định tức là khi không có --profiletham số nào trong lệnh.


Thêm trên hồ sơ mặc định

Nếu dành nhiều thời gian hơn cho việc sử dụng account1 , bạn có thể đặt nó làm mặc định bằng cách đặt biến môi trường AWS_DEFAULT_PROFILE. Khi biến môi trường mặc định được đặt, bạn không cần chỉ định cấu hình trên mỗi lệnh.

Linux, OS X Ví dụ:

$ export AWS_DEFAULT_PROFILE=account1
$ aws dynamodb list-tables

Ví dụ Windows:

$ set AWS_DEFAULT_PROFILE=account1
$ aws s3 ls

Để định cấu hình khu vực - đây là danh sách "mã" khu vực - docs.aws.amazon.com/general/latest/gr/rande.html
arcseldon

65

Có thể nó vẫn giúp ích cho ai đó. Bạn có thể đặt nó theo cách thủ công.

1) Đặt trong tệp

~/.aws/credentials

điều này

[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) Đặt trong tệp

~/.aws/config

điều này

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

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

3) Kiểm tra nó với Dòng lệnh AWS và lệnh và đầu ra sẽ là JSON

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

Tham khảo

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


2
@iBrianCox - Thông tin này tốt nhất nên được hợp nhất thành câu trả lời được ủng hộ nhiều nhất ( stackoverflow.com/a/34246053/1199564 ) vì nó cho phép người dùng hiểu cách di chuyển cài đặt từ cấu hình này sang cấu hình khác nếu bạn đã bắt đầu chỉ với cấu hình mặc định và muốn tiếp tục với các cấu hình chuyên dụng, riêng biệt.
mgd

@slm xin vui lòng đọc nhận xét của tôi ở trên (chỉ có thể làm một đề cập đến mỗi bình luận)
MGD

@mgd cảm ơn bạn đã góp ý, nhưng không - bởi vì lúc đầu tiên mà câu trả lời không phải là của tôi - và thứ hai đây là một cách tiếp cận khác nhau như thế nào để thiết lập nó
BG BRUNO

@mgd Q bạn có thể mô tả rõ hơn ý của bạn "một đề cập cho mỗi nhận xét" không?
BG BRUNO

Ý tôi là trong nhận xét đầu tiên của mình, tôi định đề cập đến cả iBrianCox và slm (tác giả và người biên tập câu trả lời khác tương ứng) nhưng bạn chỉ được phép đề cập một lần cho mỗi nhận xét nên tôi phải thêm một nhận xét khác để đề cập đến cả hai . Bạn đúng rằng câu trả lời của bạn là một cách tiếp cận khác nhưng sẽ rất hữu ích khi biết thông tin được lưu trữ ở đâu, đặc biệt nếu bạn định sao chép cài đặt giữa các cấu hình.
mgd


0

Bạn có thể viết tập lệnh shell để đặt các giá trị tương ứng của các biến môi trường cho từng tài khoản dựa trên thông tin người dùng nhập. Làm như vậy, bạn không cần tạo bất kỳ bí danh nào và hơn nữa, các công cụ như công cụ ELB, Công cụ dòng lệnh tự động mở rộng quy mô cũng sẽ hoạt động trên nhiều tài khoản.


0

Tôi đã tạo một công cụ đơn giản, aaws , để chuyển đổi giữa các tài khoản AWS.

Nó hoạt động bằng cách thiết lập AWS_DEFAULT_PROFILEtrong shell của bạn. Chỉ cần đảm bảo rằng bạn có một số mục nhập trong ~/.aws/credentialstệp của mình và nó sẽ dễ dàng chuyển đổi giữa nhiều tài khoản.

/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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.