我经常在不同的区域之间切换实例,有时我忘记从不同的区域关闭正在运行的实例。我找不到任何方法来查看Amazon主机上所有正在运行的实例。 是否有任何方法可以显示所有正在运行的实例而不考虑区域?


当前回答

一个快速bash onlineer命令,打印所有区域的所有实例id:

$ aws ec2 describe-regions --query "Regions[].{Name:RegionName}" --output text |xargs -I {} aws ec2 describe-instances --query Reservations[*].Instances[*].[InstanceId] --output text --region {}

# Example output
i-012344b918d75abcd
i-0156780dad25fefgh
i-0490122cfee84ijkl
...

其他回答

我认为目前在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 configure”来配置您的区域。

你可以通过aws配置set region us-east-1来实现,谢谢@Sabuncu的评论。

更新

现在(2019年)cut命令应该应用在第4个字段:cut -f4

编辑:AWS最近推出了亚马逊EC2全球视图,初步支持实例、vpc、子网、安全组和卷。

详情请参阅公告或文档


一个不明显的GUI选项是Resource Groups控制台中的Tag Editor。在这里,您可以找到所有区域的所有实例,即使这些实例没有被标记。

来自VPC Dashboard:

首先进入“VPC面板” 然后找到正在运行的实例并展开“查看所有区域”。在这里你可以找到所有区域的运行实例:

EC2全球视角:

您还可以使用AWS EC2全局视图来查看资源摘要 和每个区域的资源计数。

使用bash-my-aws:

region-each instances

要并行运行作业并使用多个概要文件,请使用此脚本。

#!/bin/bash
for i in profile1 profile2
do
    OWNER_ID=`aws iam get-user --profile $i --output text | awk -F ':' '{print $5}'`
    tput setaf 2;echo "Profile : $i";tput sgr0
    tput setaf 2;echo "OwnerID : $OWNER_ID";tput sgr0
    for region in `aws --profile $i ec2  describe-regions --output text | cut -f4`
    do
        tput setaf 1;echo  "Listing Instances in region $region";tput sgr0
        aws ec2 describe-instances --query 'Reservations[*].Instances[*].[Tags[?Key==`Name`].Value , InstanceId]' --profile $i --region $region --output text
    done &
done
wait

截图: