Как избежать выставления счетов на EC2 за неиспользованное время?
У меня есть периодическое задание, которое мне нужно запустить на EC2. На выполнение этой задачи уйдет не более 10 минут, и я не хочу в конечном итоге платить за оставшиеся 50 минут, за которые эта задача будет простаивать. Насколько я понимаю, если я запускаю экземпляр и запускаю эту задачу, независимо от того, использую ли я какие-либо ресурсы или нет, мне будет выставлен счет за использование. Поэтому я хотел что-то делать в следующих строках каждые 60 минут или около того (просто набросок высокого уровня):
def invokeTimer(i):
if timer(i) expired:
copyDataFromNode(i)
killNode(i)
while True:
for i in range(1,10):
startNode(i)
# Allow the node to boot up
startScript(i)
invokeTimer(i)
sleep(60000)
Если предположить, что я смог передать свою идею, есть ли хороший способ реализовать это в чистом виде или, возможно, учебник, который может быть полезным?
2 ответа
Вы будете платить за полный час независимо от того, что вы делаете.
Как только вы запускаете экземпляр EC2 (вы называете их узлами, но это неправильно), вы платите за час. Любой неполный час считается полным часом.
Если вы привязываете AMI (образ резервной копии) машины, вы должны заплатить за том EBS, так что там тоже есть стоимость.
Лучше всего использовать точечные экземпляры, чтобы сэкономить деньги по сравнению с обычными.