某些情况下需要启动到特定区域,但并非所有实例都在所有区域中。特别是p3dn.24xlarge
实例仅出现在Virginia的2个区域中。
有人可以推荐一种使用boto3获取实例类型有效区域的方法吗?
通过UI启动时,我一直在使用“竞价型实例定价历史记录”图来确定允许哪些区域
答案 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