Используя Aws API для оптовых цен , я могу загрузить JSON только для одного региона, поэтому я ищу информацию о ценах для всех регионов программным способом, используя Python.
Заранее спасибо.
Как указано в документах :
import boto3 client = boto3.client('pricing') response = client.describe_services( ServiceCode='string', FormatVersion='string', NextToken='string', MaxResults=123
)
Вам просто нужно иметь переменную env с нужным регионом: AWS_DEFAULT_REGION
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)
Приведенный ниже код загрузит подробную информацию о ценах для экземпляров по требованию и зарезервированному термину для разных регионов и сохранит в моей локальной системе
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())