Jer*_*yal 75 amazon-ec2 amazon-web-services ec2-ami
我经常在不同区域之间切换实例,有时我忘记关闭来自不同区域的运行实例.我找不到任何方法来查看亚马逊控制台上的所有正在运行的实例.
有没有办法显示所有正在运行的实例而不管区域?
Hei*_*ter 77
编辑:正如@breakpoint在评论中指出的那样,标签编辑器似乎已更新并且删除了跨区域搜索功能: - /
如果我找到替代方案,我会更新这个.
一个非显而易见的GUI选项是Resource Groups > Tag Editor.在这里,您可以查找所有区域中的所有实例,即使实例未标记.

imT*_*chu 53
我认为您目前无法在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
Run Code Online (Sandbox Code Playgroud)
从这里采取(如果你想看到完整的讨论)
sob*_*3ch 52
在控制台中
转到 VPC 仪表板https://console.aws.amazon.com/vpc/home并单击Running instances-> See all regions。
在命令行界面
例如,将此添加到.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
}
Run Code Online (Sandbox Code Playgroud)
示例输出:
$ 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'..
Run Code Online (Sandbox Code Playgroud)
Car*_*ton 11
@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
Run Code Online (Sandbox Code Playgroud)
该脚本aws ec2 describe-instances为每个区域并行运行(现在为15!),并从json输出中仅提取相关位(状态,标记,可用区).这set +m是必需的,因此后台进程在开始/结束时不报告.
示例输出:
{
"type": "t2.micro",
"state": "stopped",
"tags": [
{
"Key": "Name",
"Value": "MyEc2WebServer"
},
],
"zone": "eu-central-1b"
}
Run Code Online (Sandbox Code Playgroud)
你可以DescribeInstances()跑遍所有地区。
此外,您可以:
NodeJS 中的一个示例:
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函数中,DescribeInstances()可以被调用。函数 getInstances(region) {
EC2.describeInstances(params, function(err, data) {
if (err) return console.log("连接AWS时出错,找不到这样的实例!");
data.Reservations.forEach(function(reservation) {
//做任何想要的操作
});
}
当然,也可以随意使用 ES6 及以上版本。
我编写了一个 lambda 函数来获取任何状态 [正在运行、已停止] 和来自任何区域的所有实例,还将提供有关实例类型和各种其他参数的详细信息。
该脚本在所有 AWS 区域中运行并调用 DescribeInstances(),以获取实例。
您只需要创建一个带有 run-time 的 lambda 函数nodejs。您甚至可以从中创建 API 并在需要时使用它。
此外,您可以查看关于DescribeInstances 的AWS 官方文档以探索更多选项。
| 归档时间: |
|
| 查看次数: |
34069 次 |
| 最近记录: |