executar uma tarefa agendada no AWS sem o cron

Actualmente, tenho um único servidor na amazon onde ponho todos os meus cronjobs. Quero eliminar este único ponto de falha, e expor todas as minhas tarefas como serviços web. Gostaria de expor os Serviços por trás de um ELB VPC a alguns servidores que irão executar as tarefas quando chamados.

Existe algum serviço que a Amazon (AWS) oferece que possa executar um trabalho recorrente (realmente chamar um webservice) em intervalos regulares? Eu realmente gostaria de ser capaz de manter a funcionalidade cron em termos de

Author: rynop, 2012-07-23

9 answers

A AWSanunciou o suporte para funções programadas em Lambda na sua conferência re:Invent de 2015. Com este recurso os usuários podem executar funções Lambda em uma base programada usando uma sintaxe tipo cron. Os docs do Lambda mostram um exemplo de usar o Python para realizar eventos agendados.

Actualmente, a resolução mínima que um lambda programado pode executar é de 1 minuto (o mesmo que cron, mas não tão fino como os temporizadores systemd).

O projecto Lambder ajuda a simplificar o uso de funções programadas no Lambda.

O exemplo cron de Λ Gordon tem talvez a interface mais simples para a implantação de funções lambda programadas.


resposta Original, guardada para a posteridade.

Como Eric Hammond e outros afirmaram, não há nenhum serviço AWS nativo para tarefas agendadas. Existem apenas soluções de trabalho e metade como mencionado em outras respostas.

Para recapitular as opções actuais:

Espero que em breve apareça uma solução melhor.
 58
Author: Ben Whaley, 2018-07-31 22:07:27
Há algum serviço que a Amazon (AWS) oferece que possa executar um trabalho recorrente em intervalos regulares?
Este é um dos poucos pontos de falha que as pessoas (incluindo eu) continuam mencionando ao projetar arquiteturas com AWS. Até a Amazon resolvê-lo com um serviço, aqui está um hack que eu publiquei que é ativamente usado por algumas empresas.

A escala automática AWS pode executar e terminar as instâncias usando um escalonamento recorrente indicado no cron formato.

Http://docs.amazonwebservices.com/AutoScaling/latest/APIReference/API_PutScheduledUpdateGroupAction.html

Poderá fazer com que a instância execute automaticamente um processo no arranque.

{[[2]} Se você não sabe quanto tempo o trabalho vai durar, você pode configurar as coisas para que o seu trabalho termina a instância quando ele tiver concluído. Aqui está um artigo que escrevi que percorre os comandos exactos necessários para configurar isto:

Executar instâncias EC2 em a Escalonamento recorrente com escala automática
http://alestic.com/2011/11/ec2-schedule-instance

Começar uma instância inteira só para iniciar um conjunto de trabalhos parece um pouco exagerado, mas se for um t1.micro, então só custa uns centavos.

Aquele t1.o micro também não tem de fazer o trabalho. Sua instância Pode Injectar mensagens em SQS ou através de SNS para que os outros servidores redundantes atendam as tarefas.

 7
Author: Eric Hammond, 2012-07-23 18:52:34
Introdução eventos em Cloudwatch AWS

Você pode agendar por minuto, hora, dias ou usando a expressão de CRON usando a consola e sem Lambda ou qualquer programação.

Acabei de marcar o meu ... ASP.net API WEB (HTTP Post) usando o endpoint HTTP SNS para executar a cada minuto e está funcionando perfeitamente.

enter image description here

 7
Author: Vicky, 2016-05-12 15:19:37

Este é um site hospedado de terceiros que pode chamar regularmente scripts agendados em seu domínio.

Isto não vai funcionar se você precisar do seu script para correr no shell, e não como Apache.

 4
Author: Travis Austin, 2013-08-15 22:37:10
Parece que isto pode ser útil para ti.: http://docs.aws.amazon.com/datapipeline/latest/DeveloperGuide/dp-using-task-runner.html
O executor de Tarefas é uma aplicação do agente de tarefas que avalia a transferência de dados da AWS. para tarefas agendadas e executá-las em instâncias Amazon EC2, Amazon Clusters EMR, ou outros recursos computacionais, relatando o estado como tal é verdade. Dependendo da sua aplicação, pode optar por:
  • Permitir que o gasoduto de dados AWS instalar e gerir um ou mais executores de Tarefas aplicações para você em recursos computacionais que gerencia automaticamente. Neste caso, você não precisa instalar ou configurar Execução de Tarefas como descrito nesta secção. Esta é a configuracao.

  • Instalar e configurar manualmente a execução de tarefas num recurso computacional como uma instância EC2 de longa duração ou um servidor físico. Fazer, utilize os procedimentos desta secção.

  • Desenvolvimento e instalar um agente de tarefas personalizado em vez de um executante de Tarefas. O os procedimentos para o fazer dependerão da implementação do agente de tarefas personalizadas.

 3
Author: Joe Zack, 2013-08-12 14:10:56

A Amazon introduziu o Lambda no ano passado para o NodeJS, ontem a Amazon adicionou as funções agendadas, o Suporte VPC e o Suporte Python.

Alavancando a função programada-pode-se obter uma substituição adequada para CRON.

Mais Informação - http://aws.amazon.com/lambda/details/

enter image description here

 3
Author: Naveen Vijay, 2015-10-09 14:14:15

Parece que esta é uma opção relativamente nova do pé de feijão da AWS:

Https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features-managing-env-tiers.html#worker-periodictasks

Basicamente, agem como receptores SQS normais, mas são chamados numa programação cron em vez de em resposta a uma mensagem SQS.
 0
Author: Falcolas, 2015-06-25 15:57:34

SWF é um serviço Web da AWS que pode ser usado para agendar tarefas. A maior parte do trabalho vai para especificar o que é uma tarefa e um cronograma.

Http://milindparikh.blogspot.com/2015/07/introducing-diksha-aws-lambda-function.html é um escalonador escalável escrito contra SWF.

 0
Author: milind parikh, 2015-08-14 21:49:45
Os Balanceiros de carga elásticos do AWS vão localizar as suas instâncias para verificar se estão saudáveis. Você pode adicionar suas tarefas tipo cron ao script que o ELB está fazendo, e ele vai executar muito regularmente.

Você gostaria de adicionar alguma lógica para que cada tarefa seja executada na quantidade certa de vezes e no intervalo certo, mas isso poderia ser feito com uma tabela de banco de dados que rastreia as execuções. Cada vez que o ELB pings o seu servidor, o seu servidor iria verificar a base de dados para ver se alguma o trabalho está pendente, e depois execute esse trabalho.

O BEI vai parar se o script levar muito tempo para executar, por isso é importante não criar uma situação em que o seu exame de saúde do BEI levará muitos segundos para processar as tarefas do cron. Para superar isso, você pode empregar o serviço de notificação simples AWS. Seu script ELB health check pode simplesmente publicar uma mensagem para um tópico SNS, e então esse tópico pode entregar a mensagem através de um pedido HTTP para o seu servidor web.

Por outras palavras: Bei marca a tua instância EC2... EC2 instance checks for pending jobs and send a message to SNS if any are found... O SNS notifica a sua aplicação através de HTTP... A chamada HTTP do SNS é o que realmente processa a tarefa cron

 -1
Author: Travis Austin, 2013-08-14 03:53:41