AWS EC2 CLI - >如何获取可用实例列表

sim*_*ant 3 amazon-ec2 amazon-web-services aws-cli

美好的一天,教授.我对aws cli框架有点新意.我需要通过控制台获得的是指定区域中可用实例的列表,其中包含该类型的限制数.

例如,命令应如下所示:

aws ec2 describe-available-instances --region us-west-1 --type [t1.micro, c3.4xlarge, etc. If not set - list all types] 
Run Code Online (Sandbox Code Playgroud)

输出看起来像:


t1.micro 5

c3.4xlarge 10

m4.4x 20


Ant*_*ace 9

您可以使用AWS CLI和JQ将此输出实现为JSON .

一步步:

1)调用describe-instances命令.这将检索有关EC2实例的所有类型的元数据,包括实例类型.我们最终将输出过滤到Instance Type.

aws ec2 describe-instances
Run Code Online (Sandbox Code Playgroud)

2)通过--filter参数指定实例类型的过滤器.如果未指定,则此查询将显示count> 0的所有实例类型.这不包括0计数类型,因为输出源自EC2实例的集合.

--filters "Name=instance-type,Values=t2.micro,t2.small"
Run Code Online (Sandbox Code Playgroud)

3)通过--region参数指定区域.如果未指定,AWS CLI将尝试使用您的默认区域.

--region us-east-1 
Run Code Online (Sandbox Code Playgroud)

4)指定您的查询.输出键/值对的数组,其中Key ="InstanceType",Value = InstanceType.

--query "Reservations[].Instances[].{InstanceType:InstanceType}"
Run Code Online (Sandbox Code Playgroud)

5)使用jq按实例类型分组,以便聚合like-InstanceTypes.

| jq "group_by(.InstanceType)
Run Code Online (Sandbox Code Playgroud)

6)映射键/值对的最终数组,其中key = InstanceType和value = jq length,或者换句话说,每组实例类型的总和.

| map({(.[0].InstanceType):length})
Run Code Online (Sandbox Code Playgroud)

完整示例:

aws ec2 describe-instances --region us-east-1 --filters "Name=instance-type,Values=t2.micro,t2.small" --query "Reservations[].Instances[].{InstanceType:InstanceType}" | jq "group_by(.InstanceType) | map({(.[0].InstanceType):length})"
Run Code Online (Sandbox Code Playgroud)

输出:

[
  {
    "t2.micro": 12
  },
  {
    "t2.small": 2
  }
]
Run Code Online (Sandbox Code Playgroud)

补充说明

如果您尝试检索每个实例类型的Amazon GameLift限制,请使用describe-ec2-instance-limits:

aws gamelift describe-ec2-instance-limits --query 'EC2InstanceLimits[].{EC2InstanceType:EC2InstanceType,InstanceLimit:InstanceLimit}' --region us-east-1 --output text
Run Code Online (Sandbox Code Playgroud)

进一步阅读


Vla*_*pak 7

有目的地查看没有过滤器的所有实例 - 使用此:

aws ec2 describe-instances --output text \
--query 'Reservations[*].Instances[*].[InstanceType]' | sort | uniq -c
Run Code Online (Sandbox Code Playgroud)

输出将如下所示:

1 m3.medium
1 m4.10xlarge
9 m4.xlarge
6 t2.large
5 t2.medium
4 t2.micro
2 t2.xlarge
Run Code Online (Sandbox Code Playgroud)

并且有意按特定类型过滤 - 只需添加过滤器,如下所示:
--filters "Name=instance-type,Values=t2.micro,t2.small",您的命令将如下所示:

aws ec2 describe-instances --output text \
--filters "Name=instance-type,Values=t2.micro,t2.small" \
--query 'Reservations[*].Instances[*].[InstanceType]' | sort | uniq -c
Run Code Online (Sandbox Code Playgroud)