Запуск EC2 по расписанию

Мне нужно запускать экземпляр EC2 на (скажем) 6 утра каждый день. Ограничения состоят в том, что я бы хотел, чтобы компьютер не работал весь день для запуска или использования платного решения, такого как ylastic.

решение в alestic, является самым близким до сих пор. Недостатком этого решения является то, что время запуска является высоким из-за времени, необходимого для установки пользовательского программного обеспечения и перемещения данных.

Есть ли способ просто загружать экземпляр вместо создания нового экземпляра каждый раз, как показано в этом примере?

Ответ 1

Учитывая ваши ограничения, желаемая функциональность, к сожалению, не распространяется на два специальных механизма автоматизации, доступных Продукты и услуги AWS прямо сейчас:

  • Автоматическое масштабирование - это веб-сервис, предназначенный для автоматического запуска или завершения Amazon Elastic Compute Cloud (Amazon EC2), основанные на пользовательских политиках, расписаниях и проверках работоспособности.
  • AWS CloudFormation - дает разработчикам и системным администраторам простой способ создавать и управлять коллекцией связанных AWS ресурсов, подготовки и обновления их упорядоченным и предсказуемым образом.

При запуске/остановке/перезагрузке экземпляр концептуально попадает в категорию управления последнего, он недоступен так (что, кстати, является причиной того, что мы предоставляем отдельную Задачу специально для этой функциональности, в то время как устаревшие Bamboo AWS Plugin и его преемник Задачи для AWS).

Следовательно, подходы, изложенные в моем ответе на Как включить/выключить облачные экземпляры в рабочие часы, по-прежнему применимы, хотя и с дополнительным ограничением, которое вам нужно будет найдите провайдера, принимающего решение script или непрерывное интеграционное решение бесплатно:

  • Сценарии хостинга имеют, например, возможно, уже с помощью этих поставщиков услуг cron.

  • Учитывая текущий взрыв в Платформа как услуга (PaaS), есть довольно некоторые провайдеры, которые позволят вам делать сценарии хоста и/или решения непрерывной интеграции так или иначе.

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

Ответ 2

Теперь вы можете сделать это с помощью Amazon OpsWorks. После того, как вы настроили основной материал, просто создайте новый экземпляр и установите его тип масштабирования на "основанное на времени" (вы не можете изменить это по какой-либо причине после создания экземпляра):

enter image description here

Теперь просто нажмите категорию "Экземпляры > Время" и настройте расписание:

enter image description here

Ответ 3

Существует еще один Java-инструмент EC2 Scheduler, который может помочь вам в решении этой проблемы. Для меня я хотел сделать сервер доступным для моей команды во время работы в офисе, даже если он не используется кем-либо. Это приложение помогло мне достичь этой цели. Надеюсь, это тоже хорошо для вас.

Ответ 4

Я предлагаю запланировать запуск EC2 с помощью AWS Lambda.

Рекомендация:
Проверьте предложение D. Svanlund, пользователь с Ace: 2000+ pts, на этом Тема форума AWS.

Преимущество:
Вам не нужно ничего больше, чем небольшой script или два, которые вы планируете. Нет экземпляра для запуска, просто быстрый вызов script, который вы создали. Выберите язык программирования по вашему выбору и используйте AWS SDK для выполнения операций с экземплярами. Довольно легкое решение,

Ориентировочная стоимость:
Задача, выполняемая два раза в день, обычно менее 3 секунд с потреблением памяти до 128 МБ, обычно стоит менее $0,0004 USD/месяц (см. Ссылка)

Планирование
В январе 2016 года запланированные мероприятия AWS Lambda были преобразованы в AWS CloudWatch Events. События CloudWatch имеют те же возможности планирования, что и запланированные события Lambda. Ограничение запланированных событий AWS Lambda по 5 запланированным событиям в каждом регионе было отменено до 50 правил CloudWatch Events.

Метод
Установите типы EC2, которые подходят для Планирование запуска/остановки. Я рекомендую использовать EC2-VPC/EBS. Создайте IAM policy и role. Доверие Отношения вновь созданной роли (см. Ссылка).
Настройте запуск CloudWatch Events для Lambda через Function Trigger, как показано ниже.

CloudWatch Events - Schedule

Вот код функции start-server, для которой для Runtime установлено значение Node.js.
Измените YOUR_REGION и YOUR_INSTANCE_ID на Консоль экземпляров.

var AWS = require('aws-sdk');
exports.handler = function(event, context) {
 var ec2 = new AWS.EC2({region: 'YOUR_REGION'});
 ec2.startInstances({InstanceIds : ['YOUR_INSTANCE_ID'] },function (err, data) {
 if (err) console.log(err, err.stack); // an error occurred
 else console.log(data); // successful response
 context.done(err,data);
 });
};

Примечание. Если вам нужна функция stop-server, просто измените ec2.startInstances на ec2.stopInstances. Вы даже можете не использовать функцию остановки при использовании Автоматическое завершение загрузки в EC2

Вход
Если роль IAM создается с необходимыми разрешениями, то функция Lambda создаст поток потока AWS CloudWatch для каждого запуска.

AWS CloudWatch Log Stream

Ответ 5

Я столкнулся с той же проблемой и решил ее, используя Autoscaling так же, как и многие из упомянутых здесь ответов. Единственное, что вам нужно для этого - это изображение AMI, которое вы хотите запустить, и Инструменты командной строки API Autoscaling.

После загрузки инструментов следуйте инструкциям в readme, чтобы установить переменные окружения и добавить свои учетные данные AWS. Вместо этого в командный файл введите следующие команды (этот пример для Windows):

as-create-launch-config --key "MYLAUNCHCONFIGNAME" --instance-type t1.micro --image-id MYAMI-IMAGEID --launch-config "MYLAUNCHCONFIGNAME"
as-create-auto-scaling-group --auto-scaling-group "MYSCALINGGROUPNAME" --launch-configuration "MYLAUNCHCONFIGNAME" --availability-zones "us-east-1a,us-east-1b,us-east-1c,us-east-1d" --min-size 0 --max-size 0

rem Don't restart instance after shutdown
as-suspend-processes "MYSCALINGGROUPNAME" --processes ReplaceUnhealthy

rem Start instance at 22:15
as-put-scheduled-update-group-action --name "startMyInstance" --auto-scaling-group "MYSCALINGGROUPNAME" --min-size 1 --max-size 1   --recurrence "15 22 * * *"

rem Stop instance at 23:05
as-put-scheduled-update-group-action --name "stopMyInstance" --auto-scaling-group "MYSCALINGGROUPNAME" --min-size 0 --max-size 0 --recurrence "05 23 * * *"

Замените имена с заглавной буквы на свой выбор и установите правильный AMI-ID для вашего изображения AMI. Новый экземпляр, основанный на вашем изображении AMI, начнется в 22:15 и завершится в 23:05. Конечно, вы также можете изменить зоны и типы экземпляров.

Ответ 6

ИМХО Добавление расписания в группу автоматического масштабирования - лучший подход к "облачным", как упоминалось ранее.

Но в случае, если вы не можете прервать свои экземпляры и использовать новые, например, если у вас есть Elastic IPs, связанные с ним.

Вы можете создать Ruby script, чтобы запустить и остановить свои экземпляры на основе диапазона дат.

#!/usr/bin/env ruby

# based on https://github.com/phstc/amazon_start_stop

require 'fog'
require 'tzinfo'

START_HOUR = 6 # Start 6AM
STOP_HOUR  = 0 # Stop  0AM (midnight)

conn = Fog::Compute::AWS.new(aws_access_key_id:     ENV['AWS_ACCESS_KEY_ID'],
                             aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'])

server = conn.servers.get('instance-id')

tz = TZInfo::Timezone.get('America/Sao_Paulo')

now = tz.now

stopped_range = (now.hour >= STOP_HOUR && now.hour < START_HOUR)
running_range = !stopped_range

if stopped_range && server.state != 'stopped'
  server.stop
end

if running_range && server.state != 'running'
  server.start

  # if you need an Elastic IP
  # (everytime you stop an instance Amazon dissociates Elastic IPs)
  #
  # server.wait_for { state == 'running' }
  # conn.associate_address server.id, 127.0.0.0
end

Посмотрите amazon_start_stop, чтобы бесплатно создать планировщик, используя Планировщик Heroku.

Ответ 7

AWS Data Pipeline уникально подходит для этой задачи. Конвейер данных использует технологии AWS и может быть настроен для запуска команд AWS CLI на заданное расписание без внешних зависимостей. Трубопровод данных может писать регистрируется на S3 и запускается в контексте роли IAM, что устраняет ключевые требования к управлению. Протокол данных также экономически эффективен; для Например, свободный уровень данных Pipeline может использоваться для остановки и запуска экземпляры один раз в день.

https://aws.amazon.com/premiumsupport/knowledge-center/stop-start-ec2-instances/

Ответ 8

Автосканирование кажется лучшим решением для вашей проблемы, и AWS предоставляет такую ​​функцию. Если вы ищете стороннее решение, такое как ylastic, но вы не хотите платить за него, единственная альтернатива, которую я знаю, это Scalr, где я работаю. Scalr является открытым исходным кодом, поэтому вам нужно загрузить исходный код и install самостоятельно.

Другие альтернативы включают RightScale и enStratus. На мой взгляд, бесплатная учетная запись RightScale не включает автомасштабирование, в то время как "бесплатный" план enStratus взимает автомасштабирование на основе 0,20 долл. США/час на сервере.

Ответ 9

Лучший бесплатный метод, о котором я знаю, http://www.exostack.com Я использую его для планирования экземпляров для включения или выключения в заданное время - используя его для 400+ экземпляров прямо сейчас, и он отлично работает. Также у них есть планировщик для моментальных снимков и AMI, которые я использую для DR. У них также есть довольно гладкий ec2 cost tracker - кажется, дает вам ежемесячную и ежегодную разбивку ваших расходов. Довольно точная ИМО.

Ответ 10

Теперь у Amazon есть запланированные зарезервированные экземпляры

Запланированные зарезервированные экземпляры. Эти экземпляры доступны для запуска в течение времени, которое вы резервируете. Этот параметр позволяет вам сопоставляйте резерв мощности с предсказуемым повторяющимся графиком что требуется только часть дня, недели или месяца. Для Например, если у вас есть предсказуемая рабочая нагрузка, такая как ежемесячная анализ финансовых рисков, вы можете запланировать его запуск в первые пять дней месяца. Другим примером может быть планирование ночного счета обработка с 16.00-12.00 каждый будний день.

но также

Термин: Запланированные зарезервированные экземпляры имеют 1 год.

Вариант оплаты: Запланированные зарезервированные экземпляры начисляются сборы ежечасно, выставляются ежемесячно в течение этого срока.

Подробнее https://aws.amazon.com/ec2/purchasing-options/reserved-instances/

Ответ 11

  • То же самое! Потрясенный, чтобы увидеть, что Amazon не предоставляет встроенный способ просто планировать запуск EC2 в определенное время. (Ну, это не шокировано, поскольку они, вероятно, не хотят, чтобы вы могли просто отключить его, верно?: -)

  • ANSWER. Я нашел метод Auto-Scaling лучшим способом автоматизировать это и бесплатно, без необходимости использования сторонних приложений или отдельного сервера, работающего 24 часа в сутки. Здесь необходимо хорошее понимание AS, AMI и EC2.

    Перейдите по ссылке ниже, чтобы узнать, как вы можете добавить "ЗАРАБОТАННЫЕ ДЕЙСТВИЯ" в свои группы автомасштабирования. Отлично работает!

    Теперь я могу подключить свой сервер EC2 к 12-й минуте и отступить (действительно, он заканчивается) @8PM. Очень круто. Удачи!

  • Ниже приведен снимок экрана моих настроек. Эти настройки будут создавать и запускать EC2 каждый день в течение одного часа в день. CHEERS!

http://docs.aws.amazon.com/autoscaling/latest/userguide/schedule_time.html#sch-actions_rules

Автоматическое масштабирование запланированных действий:

Ответ 12

Недавно Amazon анонсировала две новые функции для достижения этой цели без пользовательских реализаций непосредственно в виде конфигурации из раздела AW2 Web Console EC2.

  • Использование масштабирования по расписанию для автоматического масштабирования приложения (после создания группы автомасштабирования есть вкладка, где вы можете добавить дополнительные правила автомасштабирования по времени) введите описание изображения здесь

  • Резервирование запланированных экземпляров EC2 (в консоли EC2 в разделе "Экземпляры" имеется возможность зарезервировать экземпляры EC2 с расписанием) введите описание изображения здесь