如何获取对给定实例类型有效的区域列表?

时间:2019-06-07 14:38:17

标签: amazon-ec2 boto3

某些情况下需要启动到特定区域,但并非所有实例都在所有区域中。特别是p3dn.24xlarge实例仅出现在Virginia的2个区域中。

有人可以推荐一种使用boto3获取实例类型有效区域的方法吗?

通过UI启动时,我一直在使用“竞价型实例定价历史记录”图来确定允许哪些区域

enter image description here

1 个答案:

答案 0 :(得分:2)

此代码段为我提供了支持实例现货类型(以及价格)的可用区列表:

import boto3

instanceType = 'p3dn.24xlarge'
product = 'Linux/UNIX (Amazon VPC)'

for region in boto3.client('ec2').describe_regions()['Regions']:
    client = boto3.client('ec2', region_name=region['RegionName'])
    for zone in [z['ZoneName'] for z in client.describe_availability_zones()['AvailabilityZones'] if z['State'] == 'available']:
        try:
            price = client.describe_spot_price_history(InstanceTypes=[instanceType],
                                                       MaxResults=1,
                                                       ProductDescriptions=[product],
                                                       AvailabilityZone=zone)['SpotPriceHistory'][0]['SpotPrice']
            print("%s: %s" % (zone, price))
        except IndexError: pass