Amazon анонсировала AWS Lambda ( http://aws.amazon.com/lambda/ ).
Описание товара включает:
Запланированные задачи
Функции AWS Lambda могут запускаться внешними таймерами событий, поэтому функции можно запускать во время планового технического обслуживания или в непиковые часы. Например, вы можете активировать функцию AWS Lambda для еженощной очистки архива в нерабочие часы.
Когда я прочитал это, я понял, что наконец-то у меня появился способ постоянно выполнять задачи, подобные cron. Я хочу запускать определенный запрос каждый день, скажем, в 17:00.
Однако я нигде не нахожу этого в документации. Они упоминают только триггеры программных событий или события из других сервисов AWS.
Я неправильно понял? Или кто-нибудь может указать мне на документацию?
Со времени публикации этого сообщения, похоже, появилось другое решение: Планирование повторяющихся вызовов AWS Lambda с помощью ненадежных городских часов (UTC), в котором автор предлагает подписаться на тему SNS « Ненадежные городские часы» . Я не использовал ни SWF, ни SNS, но мне кажется, что решение SNS проще. Вот отрывок из статьи
источник
НОВОЕ РЕШЕНИЕ: Запланированные задания Lambda
Вернер Фогель объявил сегодня (10/08) на re: Invent, что у AWS Lambda теперь есть собственный планировщик.
С.Е. AWS Lambda релиз примечание на 2015-10-08 :
СТАРОЕ РЕШЕНИЕ: планирование с помощью AWS Data Pipeline
Вы можете использовать AWS Data Pipeline для планирования задачи с заданным периодом. Действие может быть любой командой при настройке конвейера с помощью ShellCommandActivity .
Например, вы можете запустить команду AWS CLI, чтобы:
Вы можете легко создать запланированную задачу AWS Data Pipeline прямо в консоли AWS (например, с помощью команды интерфейса командной строки AWS):
Вы также можете использовать API для определения расписания:
{ "pipelineId": "df-0937003356ZJEXAMPLE", "pipelineObjects": [ { "id": "Schedule", "name": "Schedule", "fields": [ { "key": "startDateTime", "stringValue": "2012-12-12T00:00:00" }, { "key": "type", "stringValue": "Schedule" }, { "key": "period", "stringValue": "1 hour" }, { "key": "endDateTime", "stringValue": "2012-12-21T18:00:00" } ] }, { "id": "DoSomething", "name": "DoSomething", "fields": [ { "key": "type", "stringValue": "ShellCommandActivity" }, { "key": "command", "stringValue": "echo hello" }, { "key": "schedule", "refValue": "Schedule" } ] } ] }
Ограничения : Минимальный интервал планирования составляет 15 минут.
Цена : около 1 доллара в месяц.
источник
Вот как я это делаю:
Создайте лямбду, которая:
Создать будильник CloudWatch для: ApproximateNumberOfMessagesVisible> 0 в течение 1 минуты
Теперь у вас есть таймер с разрешением примерно 15 минут.
Затем другие функции Lambda подписываются на тему SNS и вызываются каждые 15 минут.
источник
Поскольку теперь можно легко запускать лямбда-функции через HTTP (например, с помощью GET или curl), простым решением является использование управляемого CRON, такого как easycron: https://www.easycron.com/, чтобы запустить вашу лямбда-функцию.
У нас возникла та же проблема, и в итоге мы запустили службу cron в Google App Engine на Python, поскольку это позволило сделать само задание CRON более гибким и сложным.
источник
На странице функции Добавить триггер вы можете добавить события CloudWatch и сделать его типом расписания.
источник
Вы также можете запланировать это с помощью событий cloudWatch. Создайте правило -> прикрепите цель (лямбда) и настройте расписание cron / rate для вашего правила.
источник
Путь через веб-консоль довольно прост. Просто создайте
CloudWatch
правило для лямбда и добавьте его воTriggers
вкладку лямбда .Для тех, кому нужно это автоматизировать
aws cli
, мы можемСоздать функцию
Создать правила
источник
Простой способ выполнить ваш запрос в лямбда-выражении для определенного интервала времени - установить правило для вашей лямбда-функции. для этого после создания лямбда-функции перейдите в cloudwatch >> rules >> schedule. и определите выражение cron, а в целевом разделе выберите лямбда-функцию, которую вы хотите запустить.
источник
Запуск от имени cron в AWS
Пример настройки триггера события расписания облачных часов для лямбда-выражения с использованием облачной информации.
LambdaSchedule: Type: "AWS::Events::Rule" Properties: Description: A schedule for the Lambda function.. ScheduleExpression: rate(5 minutes) State: ENABLED Targets: - Arn: !Sub ${LambdaFunction.Arn} Id: LambdaSchedule LambdaSchedulePermission: Type: "AWS::Lambda::Permission" Properties: Action: 'lambda:InvokeFunction' FunctionName: !Sub ${LambdaFunction.Arn} Principal: 'events.amazonaws.com' SourceArn: !Sub ${LambdaSchedule.Arn} LambdaFunction: Type: "AWS::Lambda::Function" Properties: Description: Scheduled lambda to run every 5 minutes CodeUri: ./build/package.zip Handler: index.lambda_handler MemorySize: 128 Runtime: python3.6
источник
При создании лямбда-функции создайте триггер «События CloudWatch - Расписание»
Теперь вы можете использовать предустановки AWS в выражении расписания, например rate = 15 min, или вы можете использовать выражение cron.
Для вашего требования расписание Cron - "0 0 17 1/1 *? *"
источник
Diksha - это планировщик AWS Lambda на основе AWS SWF Trigger, рекомендованный командой AWS . Можно запланировать задания с помощью выражений cron, а также указать, сколько раз вы хотите запускать, когда начинать или когда завершать. Вы можете просматривать статус, а также историю запланированных заданий. Безопасность регулируется политиками AWS.
После настройки движка diksha вы можете запланировать выполнение функций с помощью выражения cron следующим образом:
java -jar diksha-client-0.0.1.jar -lcfg cf1 -cj "jobName | functionName | context | 0 0-59 * * * * | 10"
В этом задании задание будет выполняться каждую минуту 10 раз. AWS SWF запускает функцию самостоятельно.
Подробности: https://github.com/milindparikh/diksha
Отказ от ответственности: я участвую в проекте.
источник