จะใช้บัญชี AWS หลายบัญชีจากบรรทัดคำสั่งได้อย่างไร


116

ฉันมีแอพที่แตกต่างกันสองแอพที่ฉันกำลังโฮสต์อยู่ (อันที่สองกำลังจะขึ้น) ใน Amazon EC2

ฉันจะทำงานกับทั้งสองบัญชีในบรรทัดคำสั่ง (Mac OS X) ได้อย่างไร แต่แยกคีย์ EC2 และใบรับรองออกจากกัน ฉันต้องเปลี่ยนตัวแปรสภาพแวดล้อมก่อนแต่ละคำสั่ง ec2- * หรือไม่

จะใช้นามแฝงและมีการกำหนดสภาพแวดล้อมในสายงานหรือไม่? สิ่งที่ต้องการ:

นามแฝง ec2-description-instances1 = ส่งออก EC2_PRIVATE_KEY = / path; ec2- อธิบายอินสแตนซ์

คำตอบ:


18

คุณควรจะสามารถใช้ตัวเลือกคำสั่งต่อไปนี้แทนตัวแปรสภาพแวดล้อมEC2_PRIVATE_KEY(และคู่EC2_CERT):

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

คุณสามารถใส่นามแฝงเหล่านี้ไว้ในนามแฝงได้เช่น

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

310

คุณสามารถทำงานกับสองบัญชีได้โดยสร้างสองโปรไฟล์ในบรรทัดคำสั่ง aws ระบบจะแจ้งให้คุณใส่รหัสAWS Access Key, AWS Secret Access Keyและภูมิภาคที่ต้องการดังนั้นเตรียมให้พร้อม

ตัวอย่าง:

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

จากนั้นคุณสามารถสลับไปมาระหว่างบัญชีได้โดยส่งผ่านโปรไฟล์บนคำสั่ง

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

บันทึก:

หากคุณตั้งชื่อโปรไฟล์ให้เป็นโปรไฟล์defaultจะกลายเป็นโปรไฟล์เริ่มต้นเช่นเมื่อไม่มี--profileพารามิเตอร์ในคำสั่ง


ข้อมูลเพิ่มเติมเกี่ยวกับโปรไฟล์เริ่มต้น

หากคุณใช้เวลามากขึ้นในการใช้account1คุณสามารถทำให้เป็นค่าเริ่มต้นได้โดยการตั้งค่าตัวแปรสภาพแวดล้อม AWS_DEFAULT_PROFILE เมื่อตั้งค่าตัวแปรสภาพแวดล้อมเริ่มต้นคุณไม่จำเป็นต้องระบุโปรไฟล์ในแต่ละคำสั่ง

Linux, OS X ตัวอย่าง:

$ export AWS_DEFAULT_PROFILE=account1
$ aws dynamodb list-tables

ตัวอย่างของ Windows:

$ set AWS_DEFAULT_PROFILE=account1
$ aws s3 ls

ในการกำหนดค่าภูมิภาค - นี่คือรายการ "รหัส" ของภูมิภาค - docs.aws.amazon.com/general/latest/gr/rande.html
arcseldon

66

บางทีมันยังช่วยใครบางคน คุณสามารถตั้งค่าได้ด้วยตนเอง

1) ตั้งค่าในไฟล์

~/.aws/credentials

นี้

[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) ตั้งค่าในไฟล์

~/.aws/config

นี้

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

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

3) ทดสอบด้วยAWS Command Lineและคำสั่งและผลลัพธ์จะเป็นJSON

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

อ้างอิง

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


2
@iBrianCox - ควรรวมข้อมูลนี้เป็นคำตอบที่มีการโหวตมากที่สุด ( stackoverflow.com/a/34246053/1199564 ) เนื่องจากช่วยให้ผู้ใช้เข้าใจวิธีย้ายการตั้งค่าจากโปรไฟล์หนึ่งไปยังอีกโปรไฟล์หนึ่งเช่นหากคุณเริ่มต้น ด้วยโปรไฟล์เริ่มต้นเท่านั้นและต้องการดำเนินการต่อโดยใช้โปรไฟล์แยกต่างหาก
mgd

@slm โปรดอ่านความคิดเห็นของฉันด้านบน (สามารถพูดถึงได้เพียงครั้งเดียวต่อความคิดเห็น)
mgd

@mgd ขอบคุณสำหรับข้อเสนอแนะ แต่ไม่ - เพราะตอนแรกคำตอบนั้นไม่ใช่ของฉัน - และอย่างที่สองนี่เป็นแนวทางที่แตกต่างในการตั้งค่า
BG BRUNO

@mgd Q คุณสามารถอธิบายความหมายของ "การกล่าวถึงหนึ่งครั้งต่อความคิดเห็น" ได้หรือไม่
BG BRUNO

สิ่งที่ฉันหมายถึงคือในความคิดเห็นแรกของฉันฉันตั้งใจจะพูดถึงทั้ง iBrianCox และ slm (ผู้เขียนและบรรณาธิการของคำตอบอื่น ๆ ตามลำดับ) แต่คุณได้รับอนุญาตให้กล่าวถึงหนึ่งครั้งต่อความคิดเห็นเท่านั้นดังนั้นฉันจึงต้องเพิ่มความคิดเห็นอื่นเพื่อที่จะกล่าวถึงทั้งสองอย่าง . คุณเข้าใจถูกแล้วว่าคำตอบของคุณเป็นแนวทางอื่น แต่การทราบว่าข้อมูลถูกจัดเก็บไว้ที่ใดโดยเฉพาะอย่างยิ่งหากคุณตั้งใจจะคัดลอกการตั้งค่าระหว่างโปรไฟล์
mgd

6

ขณะนี้เครื่องมือ aws ใหม่รองรับหลายโปรไฟล์

หากคุณกำหนดค่าการเข้าถึงด้วยเครื่องมือจะสร้างค่าเริ่มต้นใน ~ / .aws / config โดยอัตโนมัติ

จากนั้นคุณสามารถเพิ่มโปรไฟล์เพิ่มเติม - ดูรายละเอียดเพิ่มเติมได้ที่:

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


0

คุณสามารถเขียนเชลล์สคริปต์เพื่อตั้งค่าที่สอดคล้องกันของตัวแปรสภาพแวดล้อมสำหรับแต่ละบัญชีตามอินพุตของผู้ใช้ การทำเช่นนี้คุณไม่จำเป็นต้องสร้างนามแฝงใด ๆ และนอกจากนี้เครื่องมือเช่นเครื่องมือ ELB เครื่องมือบรรทัดคำสั่งการปรับขนาดอัตโนมัติจะทำงานภายใต้บัญชีหลายบัญชีเช่นกัน


0

ฉันสร้างเครื่องมือง่ายๆaawsเพื่อสลับระหว่างบัญชี AWS

ทำงานโดยการตั้งค่าAWS_DEFAULT_PROFILEในเชลล์ของคุณ ตรวจสอบให้แน่ใจว่าคุณมีบางรายการใน~/.aws/credentialsไฟล์ของคุณและมันจะสลับไปมาระหว่างบัญชีต่างๆได้อย่างง่ายดาย

/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

0

ในการใช้บทบาท IAM คุณต้องทำการเรียก API ไปที่ STS: AssumeRole ซึ่งจะส่งคืนรหัสคีย์การเข้าถึงชั่วคราวคีย์ลับและโทเค็นความปลอดภัยที่สามารถใช้เพื่อลงนามการเรียก API ในอนาคต ก่อนหน้านี้เพื่อให้ได้การเข้าถึงข้ามบัญชีที่ปลอดภัยการเข้าถึงตามบทบาทจาก AWS Command Line Interface (CLI) จำเป็นต้องมีการเรียกใช้ STS: AssumeRole อย่างชัดเจนและใช้ข้อมูลรับรองระยะยาวของคุณ ข้อมูลรับรองชั่วคราวที่เป็นผลลัพธ์ถูกบันทึกและจัดเก็บไว้ในโปรไฟล์ของคุณและโปรไฟล์นั้นจะถูกใช้สำหรับการเรียกใช้ AWS API ในภายหลัง กระบวนการนี้จะต้องทำซ้ำเมื่อข้อมูลรับรองชั่วคราวหมดอายุ (หลังจาก 1 ชั่วโมงโดยค่าเริ่มต้น)

https://aws.amazon.com/blogs/security/how-to-use-a-single-iam-user-to-easily-access-all-your-accounts-by-using-the-aws-cli/

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.