Соотношение «частота прерываний» Spot Instance получается в соответствии с графиком - PullRequest
1 голос
/ 05 марта 2020

AWS объявляет "частоту прерываний" на странице без API здесь: https://aws.amazon.com/ec2/spot/instance-advisor/

Мне нужно запланировать все типы (255 штук) в Вирджинии. Как я могу это сделать?

1 Ответ

2 голосов
/ 05 марта 2020

Я решил это путем сканирования страницы с селеном и Python. Вы можете запустить следующий скрипт в docker, он создаст aws-spot-instance.txt pwd.

Вы можете изменить регион, это region = 'US East (N. Virginia)' в скрипте.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

options = Options()
options.add_argument("--headless") # Runs Chrome in headless mode.
options.add_argument('--no-sandbox') # # Bypass OS security model
options.add_argument('start-maximized')
options.add_argument('disable-infobars')
options.add_argument("--disable-extensions")
options.add_argument('--disable-gpu')

region = 'US East (N. Virginia)'

driver = webdriver.Chrome(chrome_options=options)
driver.get("https://aws.amazon.com/ec2/spot/instance-advisor")
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".dropdown-container.aws-dropdown-region.dropdown-built")))
element.click()
driver.find_element_by_xpath("//span[text()='%s']" %region).click()
driver.find_element_by_css_selector(".aws-spot-advisor-button-expand.button").click()

table_data = driver.find_element_by_css_selector(".table.table-striped").text
fw = open('aws-spot-instance.txt', "w")
fw.write(table_data)
fw.close()

сохранить этот скрипт aws.py и выполнить следующую команду:

docker pull gunesmes/python-selenium-behave-page-object-docker
docker run --rm --name aws -v $PWD:/project gunesmes/python-selenium-behave-page-object-docker bash -c "python3 aws.py"

enter image description here

...