Цена boto3 возвращает несколько значений для экземпляров одного типа - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь использовать следующий код для получения цены экземпляров в моем регионе:

import boto3
import json

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

pricing_client = boto3.client("pricing")

pricingValues = pricing_client.get_products(ServiceCode='AmazonEC2',Filters=[{'Type': 'TERM_MATCH','Field': 'instanceType','Value': 'm4.large'},{'Type': 'TERM_MATCH','Field': 'location','Value': 'Asia Pacific (Mumbai)'},{'Type': 'TERM_MATCH','Field': 'operatingSystem','Value': 'Linux'},{'Type': 'TERM_MATCH','Field': 'preInstalledSw','Value': 'NA'},{'Type': 'TERM_MATCH','Field': 'tenancy','Value': 'Dedicated'}])

for priceVal in pricingValues["PriceList"]:
    priceValInJson=json.loads(priceVal)
    if("OnDemand" in priceValInJson["terms"] and len(priceValInJson["terms"]["OnDemand"]) > 0):
        for onDemandValues in priceValInJson["terms"]["OnDemand"].keys():
            for priceDimensionValues in priceValInJson["terms"]["OnDemand"][onDemandValues]["priceDimensions"]:
                print "USDValue : ",priceValInJson["terms"]["OnDemand"][onDemandValues]["priceDimensions"][priceDimensionValues]["pricePerUnit"]," : ", priceValInJson["product"]["attributes"]["capacitystatus"]," : ", priceValInJson["product"]["attributes"]["usagetype"]

Вывод вышеуказанного кода:

region :  ap-south-1
USDValue :  {u'USD': u'0.0000000000'}  :  AllocatedCapacityReservation  :  APS3-DedicatedRes:m4.large
USDValue :  {u'USD': u'0.1155000000'}  :  Used  :  APS3-DedicatedUsage:m4.large
USDValue :  {u'USD': u'0.1155000000'}  :  UnusedCapacityReservation  :  APS3-UnusedDed:m4.large

Что я пытаюсь сделать

Я пытаюсь получить значение цены для типа экземпляра, чтобы я мог предложить цену за половину цены, используя группы экземпляров boto3.

Мои наблюдения

Все параметры совпадают, за исключением SKU и тех, которые отображаются в выходных данных. У одного из них есть также зарезервированное поле, которое, я думаю, предназначено для зарезервированных экземпляров.

>>> json.loads(pricingValues["PriceList"][1])["terms"].keys()
[u'Reserved', u'OnDemand']

В чем мое замешательство

Я всегда получаю 3 значения для цен. Это верно независимо от того, какой тип экземпляра я выберу. Я хотел бы понять, что это такое и почему одна из сообщенных цен составляет 0,0 долларов США.

1 Ответ

0 голосов
/ 13 марта 2019

Я не смог найти никакой документации по этим значениям, но мое предположение было бы:

  • Used: стоимость использования экземпляра по требованию
  • UnusedCapacityReservation: Стоимость зарезервированного экземпляра, когда он не используется (вы все еще платите за него)
  • AllocatedCapacityReservation: стоимость экземпляра, если он используется в качестве зарезервированного экземпляра (уже оплачен заследовательно, без затрат)

Это только мои догадки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...