Как получить данные о ценах экземпляров AmazonEC2 для разных регионов, используя boto3 в python - PullRequest
0 голосов
/ 26 марта 2020

Используя Aws API для оптовых цен , я могу загрузить JSON только для одного региона, поэтому я ищу информацию о ценах для всех регионов программным способом, используя Python.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Как указано в документах :

import boto3

client = boto3.client('pricing')
response = client.describe_services(
ServiceCode='string',
FormatVersion='string',
NextToken='string',
MaxResults=123

)

Вам просто нужно иметь переменную env с нужным регионом: AWS_DEFAULT_REGION

Или вы можете установить регион на самом клиенте:

client = boto3.client('pricing', region_name='us-west-2')

Без использования boto:

my_region = "us-west-1"

url = f"https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/{my_region}/index.json"

result = requests.get(url)
0 голосов
/ 26 марта 2020

Приведенный ниже код загрузит подробную информацию о ценах для экземпляров по требованию и зарезервированному термину для разных регионов и сохранит в моей локальной системе

import boto3
from boto3.session import Session
import requests
import json
import datetime


s = Session()
ec2AvailableRegions = []

def getAvailableRegionsForAService(serviceName):
    try:
        if serviceName == "ec2":
            global ec2AvailableRegions
            ec2AvailableRegions = s.get_available_regions(serviceName)
    except Exception as ex:
        print(ex)
        print("Exception occured while fetching the available region for the service "+serviceName)

getAvailableRegionsForAService('ec2')

print("AmazonEC2 Available Regions : "+str(ec2AvailableRegions))


for region in ec2AvailableRegions:
    url = "https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/{0}/index.json"
    url = url.format(region)
    print(region)
    print(url)
    print(datetime.datetime.now())
    response = requests.get(url)
    open('A:\Office\index'+region+".json", 'wb').write(response.content)
    print(datetime.datetime.now())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...