ค้นหาอินสแตนซ์ ec2 ตามชื่อจากเครื่องมือบรรทัดคำสั่ง aws


32

dev-server-03ฉันมีอินสแตนซ์ที่มีชื่อว่า ตอนนี้ฉันจะค้นหาdev-server-*อินสแตนซ์ทั้งหมดจากบรรทัดคำสั่งได้อย่างไร

ฉันใช้เครื่องมือ aws cli


ขึ้นอยู่กับวิธีที่คุณตั้งชื่ออินสแตนซ์ คุณตั้งชื่อโฮสต์ภายในระบบปฏิบัติการบนคอนโซล AWS หรือทั้งสองอย่าง?
Craig Watson

ใช่ภายในชื่อโฮสต์ระบบปฏิบัติการถูกตั้งค่าเป็นชื่อเดียวกัน
Shiplu Mokaddim

คำตอบ:


55

สมมติว่าคุณกำลังใช้หลักการของการใส่ชื่อของอินสแตนซ์ในแท็กด้วยคีย์ของ "ชื่อ" (นี่คือสิ่งที่คอนโซล AWS ทำเมื่อคุณป้อนชื่อ) จากนั้นคุณสามารถใช้--filtersตัวเลือกเพื่อแสดงรายการอินสแตนซ์เหล่านั้นด้วย AWS-CLI:

aws ec2 describe-instances --filters 'Name=tag:Name,Values=dev-server-*'

หากคุณต้องการรหัสอินสแตนซ์ของอินสแตนซ์เหล่านั้นคุณสามารถใช้:

aws ec2 describe-instances --filters 'Name=tag:Name,Values=dev-server-*' \
  --output text --query 'Reservations[*].Instances[*].InstanceId'

หมายเหตุ: --queryอาจต้องใช้ aws-cli รุ่นล่าสุด แต่มันก็คุ้มค่าที่จะได้รับ


1
omg มันเอาฉันเกือบครึ่งชั่วโมงจะคิดออกนี้ ... วิธีการที่แปลกคือ:Name=tag:Name
Lisak

1
ขอบคุณ Eric - ฉันได้รับ ID อินสแตนซ์หลายรายการในบรรทัดเดียวกันโดยใช้ข้อความค้นหาของคุณ แต่github.com/aws/aws-cli/issues/914#issuecomment-56210312แนะนำ--query 'Reservations[].Instances[].[InstanceId]ซึ่งใช้ได้กับฉัน
jaygooby

3
FWIW jqสามารถใช้เครื่องมือเพื่อให้ได้ผลลัพธ์ที่คล้ายกันaws --queryดังนี้ - aws ec2 describe-instances | jq '.Reservations[].Instances[].PrivateIpAddress'สังเกต.จุดที่นำหน้า
MarkHu

คุณสามารถสร้างอินสแตนซ์ของตัวกรองแบบตัวเล็กได้หรือไม่?
red888

3

คุณสามารถกรองเพิ่มเติมด้วยชื่อรหัสอินสแตนซ์และ IP ส่วนตัวด้านล่าง

aws ec2 describe-instances --filters "Name=tag:Name,Values=*myinstance*" --output json --query 'Reservations[*].Instances[*].[PrivateIpAddress,InstanceId,Tags[?Key==`Name`].Value]' --region us-east-1
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.