सभी क्षेत्रों में सभी चल रहे अमेज़ॅन EC2 उदाहरण कैसे देखें?


112

मैं अक्सर विभिन्न क्षेत्रों के बीच उदाहरणों को स्विच करता हूं और कभी-कभी मैं एक अलग क्षेत्र से अपनी चल रही आवृत्ति को बंद करना भूल जाता हूं। मुझे अमेज़ॅन कंसोल पर चल रहे सभी उदाहरणों को देखने का कोई तरीका नहीं मिला।
क्या क्षेत्र की परवाह किए बिना सभी चल रहे उदाहरणों को प्रदर्शित करने का कोई तरीका है?


47
तथ्य यह है कि एडब्ल्यूएस जीयूआई आपको केवल सभी उदाहरणों को सूचीबद्ध करने की अनुमति नहीं देता है, वास्तव में गूंगा है।
डेन डैस्कलेस्कु

4
आदर्श नहीं है और निश्चित रूप से स्पष्ट नहीं है लेकिन आप Resource Groups > Tag EditorGUI विकल्प के रूप में उपयोग कर सकते हैं । नीचे मेरा जवाब देखें।
हेनरिक फ़िल्टर

3
@DanDascalescu क्या आपको यकीन है? आपको लगता है कि AWS ने ओपी जैसे लोगों से कितना पैसा कमाया है जो दौड़ती हुई प्रवृत्ति को बंद करना भूल गए हैं?
स्मार्टक्वेमैन

2
@DanDascalescu के रूप में स्मार्टक्वामैन का कहना है कि यह अब गूंगा है अगर उदाहरण कई क्षेत्रों में बिखरे हुए हैं और बेजोस के लिए $ टिकर टिक टिक करते समय भूल गए।
एडुआर्ड रॉजेनबर्ग

2
@DanDascalescu अगर वे सिर्फ दिखावा कर रहे हैं तो वे लोगों को उदाहरणों को भूलने के लिए कैसे चार्ज करेंगे ..?
एराल्पबी

जवाबों:


122

एक गैर-स्पष्ट जीयूआई विकल्प है Resource Groups > Tag Editor। यहां आप सभी क्षेत्रों में सभी उदाहरण पा सकते हैं, भले ही इंस्टेंसेस को टैग न किया गया हो। की स्क्रीन कैप्चर


EDIT: इस स्क्रीन को हाल ही में नया रूप दिया गया था और अब इसका नया रूप और "ऑल रीजन" विकल्प है।


2
धन्यवाद, बढ़िया हैक!
रोब मैकडोनाल्ड

1
यह फिर से बदल गया है। मैं अब इस उपकरण में "क्षेत्र" ब्लॉक नहीं देखता। इसके बजाय, यह "वर्तमान क्षेत्र" में सब कुछ दिखाता है। भगवान ही जानता है कि कहाँ स्थापित हो जाता है ... मुझे लगता है कि मैं बीस और 500 मशीनों का एक कर्मचारी है इन बेवकूफों के बहुत बीमार हो रहा हूँ।
ब्रेक

1
@breakpoint ऐसा लगता है जैसे उन्होंने अब पिछले टैग एडिटर के लिए एक लिंक जोड़ा है जो बहु-क्षेत्र खोज का समर्थन करता है।
हेनरिक फ़िल्टर

1
यार यह एक जीवन रक्षक है! साझा करने के लिए धन्यवाद! :-D
लॉरेंस

1
यह बहुत अच्छा होगा यदि aws के पास 'सर्व-क्षेत्रों' या इससे मिलते
स्टीव

62

मुझे नहीं लगता कि आप वर्तमान में AWS GUI में ऐसा कर सकते हैं। लेकिन यहां AWS CLI के साथ सभी क्षेत्रों में अपने सभी उदाहरणों को सूचीबद्ध करने का एक तरीका है:

for region in `aws ec2 describe-regions --region us-east-1 --output text | cut -f4`
do
     echo -e "\nListing Instances in region:'$region'..."
     aws ec2 describe-instances --region $region
done

यहाँ से लिया गया (यदि आप पूरी चर्चा देखना चाहते हैं)

इसके अलावा, यदि आप ए

आपको एक क्षेत्र निर्दिष्ट करना होगा। आप "aws कॉन्फ़िगर" चलाकर भी अपने क्षेत्र को कॉन्फ़िगर कर सकते हैं

आप ऐसा कर सकते हैं aws configure set region us-east-1, टिप्पणी के लिए धन्यवाद @Sabuncu।

अपडेट करें

अब (2019 में) कट कमांड को 4 वें क्षेत्र पर लागू किया जाना चाहिए: cut -f4


13
बचने के लिए cut, आप उपयोग कर सकते हैं:aws ec2 describe-regions --query Regions[*].[RegionName] --output text
स्टीफनसुंडिन

यदि प्रोफाइल का उपयोग करते हुए दोनों aws ec2 कमांड में प्रॉफिटेबल प्रोफाइल-नाम जोड़ते हैं ।
कार्लटन

आप इस कमांड का उपयोग विंडोज 10 सीएमडी, FOR /F %G IN ('aws ec2 describe-regions --query Regions[*].[RegionName] --output text') DO (aws ec2 describe-instances --region %G)
मंजुला

यह अब काम करने के लिए प्रतीत नहीं होता है - You must specify a region. You can also configure your region by running "aws configure".- लगता है जैसे एक क्षेत्र को निर्दिष्ट करना मैं क्या करना चाहता हूं के विपरीत है
विल शेपर्ड

@WillSheppard आपको पहले अपने क्षेत्र को कॉन्फ़िगर करना होगा; उदा aws configure set region us-east-1। फिर, जब आप दौड़ते हैं aws ec2 describe-regions, तो आपको कोई समस्या नहीं होनी चाहिए। कृपया उत्तर देखें: stackoverflow.com/a/46577479/360840 के साथ-साथ संबंधित प्रश्न के अन्य उत्तर।
सबुनकु

19

@imTachu समाधान अच्छी तरह से काम करता है। AWS कंसोल के माध्यम से ऐसा करने के लिए ...

  • AWS सांत्वना
  • सेवाएं
  • नेटवर्किंग और सामग्री वितरण
  • VPC
  • "रनिंग इंस्टेंस" नामक ब्लॉक की तलाश करें, यह आपको वर्तमान क्षेत्र दिखाएगा
  • नीचे "सभी क्षेत्र देखें" लिंक पर क्लिक करें

अब "सेवाओं" के तहत कोई "नेटवर्किंग एंड कंटेंट डिलीवरी" नहीं है
विल शेपर्ड

2
AWS कंसोल में: टेक्स्ट बॉक्स प्रकार 'vpc' में 'सेवाएँ'> पर क्लिक करें और फिर VPC- पृथक क्लाउड संसाधनों का चयन करें
nir weiner

महान काम करता है @ कार्लटन धन्यवाद
नूयी

उन्होंने इसे फिर से अपडेट किया है। EC2 डैशबोर्ड में अब एक शॉर्टकट है। इंस्टेंसेस अनुभाग पर जाएं और "इंस्टेंस" पर क्लिक करें। यह आपको चयनित क्षेत्र में चल रहे सभी उदाहरण दिखाएगा।
माइंडफुलजेक

17
  1. सबसे पहले AWS मैनेजमेंट कंसोल पर जाएं और रिसोर्स ग्रुप पर क्लिक करें:

    यहां छवि विवरण दर्ज करें

  2. फिर खोजें Network and Content Deliveryऔर उस पर क्लिक करें VPC:

    यहां छवि विवरण दर्ज करें

  3. फिर रनिंग इंस्टेंस खोजें और सभी क्षेत्रों को देखें। यहां आप सभी क्षेत्र के सभी चल रहे उदाहरण पा सकते हैं:

    यहां छवि विवरण दर्ज करें


13

सांत्वना में

VPC डैशबोर्ड पर जाएं https://console.aws.amazon.com/vpc/homeऔर Running instances-> पर क्लिक करें See all regions

यहां छवि विवरण दर्ज करें

सीएलआई में

उदाहरण के लिए इसे जोड़ें .bashrc। इसे रीलोड करें source ~/.bashrc, और इसे चलाएं

नोट: aws CLI को छोड़कर आपको jq स्थापित करने की आवश्यकता है

function aws.print-all-instances() {
  REGIONS=`aws ec2 describe-regions --region us-east-1 --output text --query Regions[*].[RegionName]`
  for REGION in $REGIONS
  do
    echo -e "\nInstances in '$REGION'..";
    aws ec2 describe-instances --region $REGION | \
      jq '.Reservations[].Instances[] | "EC2: \(.InstanceId): \(.State.Name)"'
  done
}

उदाहरण आउटपुट:

$ aws.print-all-instances 

Listing Instances in region: 'eu-north-1'..
"EC2: i-0548d1de00c39f923: terminated"
"EC2: i-0fadd093234a1c21d: running"

Listing Instances in region: 'ap-south-1'..

Listing Instances in region: 'eu-west-3'..

Listing Instances in region: 'eu-west-2'..

Listing Instances in region: 'eu-west-1'..

Listing Instances in region: 'ap-northeast-2'..

Listing Instances in region: 'ap-northeast-1'..

Listing Instances in region: 'sa-east-1'..

Listing Instances in region: 'ca-central-1'..

Listing Instances in region: 'ap-southeast-1'..

Listing Instances in region: 'ap-southeast-2'..

Listing Instances in region: 'eu-central-1'..

Listing Instances in region: 'us-east-1'..

Listing Instances in region: 'us-east-2'..

Listing Instances in region: 'us-west-1'..

Listing Instances in region: 'us-west-2'..

8

हर बार जब आप एक संसाधन बनाते हैं, तो उसे एक नाम से टैग करें और अब आप सभी क्षेत्रों में नाम टैग के साथ सभी प्रकार के संसाधनों को खोजने के लिए संसाधन समूहों का उपयोग कर सकते हैं ।


यदि आप मैन्युअल रूप से थका हुआ टैग का उपयोग करते हैं तो Terraform :)
sobi3ch

7

ImTachus के उत्तर के आधार पर लेकिन कम क्रिया, अधिक तेजी से। आपको jq और aws-cli स्थापित करने की आवश्यकता है।

set +m
for region in $(aws ec2 describe-regions --query "Regions[*].[RegionName]" --output text); do 
  aws ec2 describe-instances --region "$region" | jq ".Reservations[].Instances[] | {type: .InstanceType, state: .State.Name, tags: .Tags, zone: .Placement.AvailabilityZone}" &
done; wait; set -m

स्क्रिप्ट aws ec2 describe-instancesप्रत्येक क्षेत्र (अब 15!) के लिए समानांतर में चलती है और json आउटपुट से केवल संबंधित बिट्स (स्थिति, टैग, उपलब्धता क्षेत्र) को निकालती है। set +mजरूरत है तो पृष्ठभूमि प्रक्रियाओं रिपोर्ट नहीं करते हैं जब शुरू करने / अंत हो गया।

उदाहरण आउटपुट:

{
  "type": "t2.micro",
  "state": "stopped",
  "tags": [
    {
      "Key": "Name",
      "Value": "MyEc2WebServer"
    },
  ],
  "zone": "eu-central-1b"
}

4

सभी समाधानों को पढ़ने और सामानों के गुच्छा की कोशिश करने के बाद, मेरे लिए काम करने वाला व्यक्ति था-

  1. सामग्री सूचीबद्ध करें
  2. संसाधन समूह पर जाएं
  3. टैग संपादक
  4. सभी क्षेत्रों का चयन करें
  5. संसाधन प्रकार में EC2 इंस्टेंस का चयन करें
  6. खोज संसाधन पर क्लिक करें

समाधान का स्नैपशॉट


3

आप DescribeInstances()सभी क्षेत्रों में दौड़ सकते हैं।

इसके अतिरिक्त, आप कर सकते हैं:

  • इसे लैम्बडा और क्लाउड वॉच के माध्यम से स्वचालित करें।
  • लैम्ब्डा और एपि गेटवे का उपयोग करके एपी एंडपॉइंट बनाएं और अपने कोड में इसका उपयोग करें

NodeJS में एक नमूना:

  • क्षेत्र (समापन बिंदु) बनाएं और बनाएं। [भी एडब्ल्यूएस उपयोग कर सकते हैं describeRegions () ]
var क्षेत्रनाम = ['us-west-1', 'us-west-2', 'us-East-1', 'eu-west-1', 'eu-central-1', 'sa-east-1 ',' एपी-साउथईस्ट -1 ',' एपी-साउथईस्ट -2 ',' एपी-नॉर्थईस्ट -1 ',' एपी-नॉर्थईस्ट -2 '];

    RegionNames.forEach (फ़ंक्शन (क्षेत्र) {
        getInstances (क्षेत्र);
    });

  • फिर, getInstancesफ़ंक्शन में, DescribeInstances()कहा जा सकता है।
समारोह getInstances (क्षेत्र) {
            EC2.describeInstances (परम, फ़ंक्शन (इरेट, डेटा) {
                if (इरिटेट) रिटर्न कंसोल.लॉग ("AWS से जुड़ने में त्रुटि, ऐसा कोई उदाहरण नहीं मिला!");
                data.Resifications.forEach (फ़ंक्शन (आरक्षण) {
                // किसी भी ऑपरेशन का इरादा है
      });
    }

और ऑफ कोर्स, ईएस 6 और इसके बाद के संस्करण का उपयोग करने के लिए स्वतंत्र महसूस करें।

मैंने आपको किसी भी राज्य में सभी उदाहरणों को प्राप्त करने के लिए एक लंबो फ़ंक्शन लिखा है [चल रहा है, रोका] और किसी भी क्षेत्र से, उदाहरण के प्रकार और विभिन्न अन्य मापदंडों के बारे में भी विवरण देगा।

DescribeInstances()उदाहरणों को प्राप्त करने के लिए स्क्रिप्ट सभी AWS क्षेत्रों और कॉल पर चलती है ।

आपको बस रन-टाइम के साथ लैम्बडा फंक्शन बनाना होगा nodejs। आप इसमें से API भी बना सकते हैं और आवश्यकता पड़ने पर इसका उपयोग कर सकते हैं।

इसके अतिरिक्त, आप कई और विकल्पों का पता लगाने के लिए AWS के आधिकारिक डॉक्स फॉर डिसेंट इंश्योरेंस देख सकते हैं ।


1

मैंने एक ओपन-सोर्स स्क्रिप्ट बनाई जो आपको सभी एडब्ल्यूएस उदाहरणों को सूचीबद्ध करने में मदद करती है। https://github.com/Appnroll/aws-ec2-instances

यह स्क्रिप्ट का एक हिस्सा है जो एक प्रोफ़ाइल के उदाहरणों को सूचीबद्ध करता है जो उन्हें पोस्टग्रेएसक्यूएल डेटाबेस में जसन jqपार्स के लिए उपयोग करने के साथ रिकॉर्ड करता है :

DATABASE="aws_instances"
TABLE_NAME="aws_ec2"
SAVED_FIELDS="state, name, type, instance_id, public_ip, launch_time, region, profile, publicdnsname"
# collects the regions to display them in the end of script
REGIONS_WITH_INSTANCES=""

for region in `aws ec2 describe-regions --output text | cut -f3`
do
   # this mappping depends on describe-instances command output
   INSTANCE_ATTRIBUTES="{
        state: .State.Name,
        name: .KeyName, type: .InstanceType,
        instance_id: .InstanceId,
        public_ip: .NetworkInterfaces[0].Association.PublicIp,
        launch_time: .LaunchTime,
        \"region\": \"$region\",
        \"profile\": \"$AWS_PROFILE\",
        publicdnsname: .PublicDnsName
   }"

   echo -e "\nListing AWS EC2 Instances in region:'$region'..."
   JSON=".Reservations[] | ( .Instances[] | $INSTANCE_ATTRIBUTES)"
   INSTANCE_JSON=$(aws ec2 describe-instances --region $region)

   if echo $INSTANCE_JSON | jq empty; then
      # "Parsed JSON successfully and got something other than false/null"
      OUT="$(echo $INSTANCE_JSON | jq $JSON)"

      # check if empty
      if [[ ! -z "$OUT" ]] then
        for row in $(echo "${OUT}" | jq -c "." ); do
          psql -c "INSERT INTO $TABLE_NAME($SAVED_FIELDS) SELECT $SAVED_FIELDS from json_populate_record(NULL::$TABLE_NAME, '${row}') ON CONFLICT (instance_id)
            DO UPDATE
            SET state = EXCLUDED.state,
            name = EXCLUDED.name,
            type = EXCLUDED.type,
            launch_time = EXCLUDED.launch_time,
            public_ip = EXCLUDED.public_ip,
            profile = EXCLUDED.profile,
            region = EXCLUDED.region,
            publicdnsname = EXCLUDED.publicdnsname
            " -d $DATABASE
        done

        REGIONS_WITH_INSTANCES+="\n$region"
      else
        echo "No instances"
      fi
   else
        echo "Failed to parse JSON, or got false/null"
   fi
done

1

नीचे मेरी स्क्रिप्ट, इस पोस्ट और अन्य जगहों से विभिन्न युक्तियों पर आधारित है। लंबी कमांड लाइनों की तुलना में स्क्रिप्ट का अनुसरण करना आसान है (कम से कम मेरे लिए)।

स्क्रिप्ट मानती है कि प्रोफाइल प्रोफेशनल हैं ~/.aws/credentials, जो कुछ इस तरह दिखती हैं:

[default]
aws_access_key_id = foobar
aws_secret_access_key = foobar

[work]
aws_access_key_id = foobar
aws_secret_access_key = foobar

स्क्रिप्ट:

#!/usr/bin/env bash

#------------------------------------#
# Script to display AWS EC2 machines #
#------------------------------------#

# NOTES:
# o Requires 'awscli' tools (for ex. on MacOS: $ brew install awscli)
# o AWS output is tabbed - we convert to spaces via 'column' command


#~~~~~~~~~~~~~~~~~~~~#
# Assemble variables #
#~~~~~~~~~~~~~~~~~~~~#

regions=$(aws ec2 describe-regions --output text | cut -f4 | sort)

query_mach='Reservations[].Instances[]'
query_flds='PrivateIpAddress,InstanceId,InstanceType'
query_tags='Tags[?Key==`Name`].Value[]'
query_full="$query_mach.[$query_flds,$query_tags]"


#~~~~~~~~~~~~~~~~~~~~~~~~#
# Output AWS information #
#~~~~~~~~~~~~~~~~~~~~~~~~#

# Iterate through credentials profiles
for profile in 'default' 'work'; do

    # Print profile header
    echo -e "\n"
    echo -e "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
    echo -e "Credentials profile:'$profile'..."
    echo -e "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"

    # Iterate through all regions
    for region in $regions; do

        # Print region header
        echo -e "\n"
        echo -e "Region: $region..."
        echo -e "--------------------------------------------------------------"

        # Output items for the region
        aws ec2 describe-instances    \
          --profile $profile          \
          --region  $region           \
          --query   $query_full       \
          --output  text              \
          | sed     's/None$/None\n/' \
          | sed     '$!N;s/\n/ /'     \
          | column  -t -s $'\t'

    done
done

1
यदि आपने अभी तक ऐसा नहीं किया है, तो मैं आपको इन क्रेडेंशियल्स को अमान्य करने का सुझाव दूंगा।
थियागो

@ थियागो धन्यवाद, लेकिन उन साख वैसे भी फर्जी प्लेसहोल्डर थे :)।
एडुआर्ड रोज़ेनबर्ग

1

समानांतर में नौकरियों को चलाने और कई प्रोफाइल का उपयोग करने के लिए इस स्क्रिप्ट का उपयोग करें।

#! / Bin / bash
मैं प्रोफाइल 1 प्रोफाइल 2 में
करना
    OWNER_ID = `aws iam get-user --profile $ i --output टेक्स्ट | awk -F ':' '{प्रिंट $ 5}' '
    tput setaf 2; गूंज "प्रोफ़ाइल: $ i"; tput sgr0
    tput setaf 2; गूंज "मालिक: $ OWNER_ID"; tput sgr0
    क्षेत्र में `aws --profile $ i ec2 के लिए वर्णन-क्षेत्रों --आउट टेक्स्ट | cut -f4`
    करना
        tput setaf 1; गूंज "क्षेत्र $ क्षेत्र में लिस्टिंग के उदाहरण"; tput sgr0
        aws ec2 वर्णन-इंस्टेंस --query 'आरक्षण [*]। उदाहरण [*]। [टैग [? कुंजी == `Name`], प्रस्तावना, InstanceId]' - लाभकारी $ i-region $ क्षेत्र - भूटान पाठ
    किया हुआ &
किया हुआ
रुको

स्क्रीनशॉट:

स्क्रीनशॉट


0

@Hansaplast कोड के आधार पर मैंने विंडोज फ्रेंडली वर्जन बनाया जो एक तर्क के रूप में कई प्रोफाइल को सपोर्ट करता है। बस उस फाइल को cmd या बैट फाइल के रूप में सेव करें। आपके पास jqकमांड होना भी आवश्यक है ।

@echo off 
setlocal enableDelayedExpansion

set PROFILE=%1
IF "%1"=="" (SET PROFILE=default)

echo checkin instances in all regions for %PROFILE% account
FOR /F "tokens=* USEBACKQ" %%F IN (`aws ec2 describe-regions --query Regions[*].[RegionName] --output text --profile %PROFILE%`) DO (
echo === region: %%F
aws ec2 describe-instances --region %%F --profile %PROFILE%| jq ".Reservations[].Instances[] | {type: .InstanceType, state: .State.Name, tags: .Tags, zone: .Placement.AvailabilityZone}"
)

0

आप क्लाउड संसाधनों (क्रॉस-क्षेत्र और क्रॉस-अकाउंट स्कैन) की गणना के लिए डिज़ाइन किए गए cli टूल का उपयोग कर सकते हैं - https://github.com/scopely-devops/skew

छोटे विन्यास के बाद आप सभी यूएस एडब्ल्यूएस क्षेत्रों में सभी उदाहरणों की सूची के लिए निम्न कोड का उपयोग कर सकते हैं (यह मानते हुए कि 123456789012 आपका एडब्ल्यूएस खाता नंबर है)।

from skew import scan

arn = scan('arn:aws:ec2:us-*:123456789012:instance/*')
for resource in arn:
    print(resource.data)

0

CRUD AWS संसाधनों के लिए अच्छा उपकरण । सभी क्षेत्रों में [EC2 | RDS | IAM ..] खोजें। फ़िल्टर परिणामों पर संचालन (स्टॉप रन | टर्मिनेट) कर सकते हैं।

python3 awsconsole.py ec2 all // return list of all instances
python3 awsconsole.py ec2 all -r eu-west-1
python3 awsconsole.py ec2 find -i i-0552e09b7a54fa2cf --[terminate|start|stop]
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.