我经常在不同的区域之间切换实例,有时候会忘记关闭来自其他区域的正在运行的实例。我找不到任何方法在Amazon控制台上查看所有正在运行的实例。
是否有一种方式可以显示所有正在运行的实例,而不考虑其所在的区域?
我经常在不同的区域之间切换实例,有时候会忘记关闭来自其他区域的正在运行的实例。我找不到任何方法在Amazon控制台上查看所有正在运行的实例。
是否有一种方式可以显示所有正在运行的实例,而不考虑其所在的区域?
2021年11月更新:AWS最近推出了Amazon EC2 Global View,初步支持实例、VPC、子网、安全组和卷。
资源组控制台中一个不明显的GUI选项是标签编辑器(Tag Editor)。在这里,您可以找到所有跨所有区域的实例,即使这些实例没有被打上标签。
我认为目前在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 configure set region us-east-1
进行设置,感谢 @Sabuncu 提供的评论。
更新
现在(2019 年),应该在第四个字段上使用 cut 命令:cut -f4
aws ec2 describe-regions --query Regions[*].[RegionName] --output text
- stefansundinFOR /F %G IN ('aws ec2 describe-regions --query Regions[*].[RegionName] --output text') DO (aws ec2 describe-instances --region %G)
- Manjulaaws configure set region us-east-1
。然后,当您运行 aws ec2 describe-regions
时,就不应该有任何问题了。请参见答案:https://dev59.com/r14b5IYBdhLWcg3wbA-B#46577479,以及相关问题下的其他答案。 - Sabuncu在控制台中
前往VPC控制台https://console.aws.amazon.com/vpc/home
,点击运行的实例
-> 查看所有区域
.
在CLI中
添加这个命令到.bashrc
。重新加载它:source ~/.bashrc
,然后运行它。
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'..
VPC
仪表板:首先前往VPC 仪表板
然后找到运行中的实例并展开查看所有区域。在这里,您可以找到所有区域的正在运行的实例:
EC2
全局视图:还可以使用AWS EC2 全局视图查看每个区域的资源摘要和资源计数。
@imTachu 的解决方案很好。通过AWS控制台进行操作...
基于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
,并从JSON输出中提取仅相关部分(状态、标记、可用区)。需要使用set +m
,以便背景进程在开始/结束时不报告。
示例输出:{
"type": "t2.micro",
"state": "stopped",
"tags": [
{
"Key": "Name",
"Value": "MyEc2WebServer"
},
],
"zone": "eu-central-1b"
}
DescribeInstances()
。var regionNames = ['us-west-1', 'us-west-2', 'us-east-1', 'eu-west-1', 'eu-central-1', 'sa-east-1', 'ap-southeast-1', 'ap-southeast-2', 'ap-northeast-1', 'ap-northeast-2'];
regionNames.forEach(function(region) { getInstances(region); });
getInstances
函数中,可以调用DescribeInstances()
。function getInstances(region) { EC2.describeInstances(params, function(err, data) { if (err) return console.log("连接AWS出错,未找到此实例!"); data.Reservations.forEach(function(reservation) { //进行任何操作 }); }
当然,可以使用ES6及以上版本。
我编写了一个Lambda函数,可以获取所有状态[running,stopped]和来自任何区域的实例,还将提供有关实例类型和各种其他参数的详细信息。
脚本在所有AWS区域上运行,并调用DescribeInstances()
来获取实例。
您只需要创建一个运行时为nodejs
的Lambda函数即可。 您甚至可以将其创建为API,并根据需要使用它。
此外,您可以查看AWS官方文档DescribeInstances以探索更多选项。
一个快速的bash单行命令,可以打印出所有区域中的所有实例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
...