来自boto3定价客户端的区域名称和位置之间的映射

时间:2019-02-26 10:40:32

标签: python python-2.7 amazon-ec2 boto3

我有以下代码:

    import boto3
    my_session = boto3.session.Session()
    region = boto3.session.Session().region_name
    print "region : ",region

    pricing_client=boto3.client("pricing")
locationList = pricing_client.get_attribute_values(ServiceCode="AmazonEC2",AttributeName="location")
    print "locationList : ",locationList["AttributeValues"]

以上代码的输出如下:

region :  ap-south-1
locationList :  [
{
    u'Value': u'AWS GovCloud (US)'
}, 
{
    u'Value': u'AWS GovCloud (US-East)'
}, 
{
    u'Value': u'Asia Pacific (Mumbai)'
}, 
{
    u'Value': u'Asia Pacific (Osaka-Local)'
}, 
{
    u'Value': u'Asia Pacific (Seoul)'
}, 
{
    u'Value': u'Asia Pacific (Singapore)'
}, 
{
    u'Value': u'Asia Pacific (Sydney)'
}, 
{
    u'Value': u'Asia Pacific (Tokyo)'
}, 
{
    u'Value': u'Canada (Central)'
}, 
{
    u'Value': u'EU (Frankfurt)'
}, 
{
    u'Value': u'EU (Ireland)'
}, 
{
    u'Value': u'EU (London)'
}, 
{
    u'Value': u'EU (Paris)'
}, 
{
    u'Value': u'EU (Stockholm)'
}, 
{
    u'Value': u'South America (Sao Paulo)'
}, 
{
    u'Value': u'US East (N. Virginia)'
}, 
{
    u'Value': u'US East (Ohio)'
}, 
{
    u'Value': u'US West (N. California)'
}, 
{
    u'Value': u'US West (Oregon)'
}
]

是否可以使用区域名称映射区域名称?

我可以按以下方式使用字典:

{'ap-south-1': 'Asia Pacific (Mumbai)'}

但是我想这样做而不必定义所有区域,以便以后进行更改时更新aws配置将自动影响我正在编写的代码。

我想做的是编写一个boto函数来检索使用价格区域的价目表。

1 个答案:

答案 0 :(得分:0)

通过在 botocore / data / endpoints.json 中进行查找可以解决相同的需求 https://github.com/powdahound/ec2instances.info/blob/master/ec2.py#L35

我看不到更好的选择。

还存在一个问题gh1411