executar uma tarefa agendada no AWS sem o cron
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
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:
- a um grupo de autoscale em instância única que começa e pára em um horário, como descrito por Eric Hammond.
- usando um temporizador de Serviço de fluxo de trabalho simples, o que não é nada intuitivo. Este estudo de caso menciona que a JPL usou SWF para construir um cron distribuído, mas não há detalhes de implementação. Há também uma referência a um exemplo de código enterrado nas amostras de código SWF.
- execute-o você mesmo usando algo como cronlock.
- utilizar algo como o relógio não confiável da cidade (UTC) para executar funções Lambda em um horário. Lembre-se que o Lambda não pode aceder de momento a recursos dentro de um VPC
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.
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: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.Executar instâncias EC2 em a Escalonamento recorrente com escala automática
http://alestic.com/2011/11/ec2-schedule-instance
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.
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.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.
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.
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/
Parece que esta é uma opção relativamente nova do pé de feijão da AWS:
Basicamente, agem como receptores SQS normais, mas são chamados numa programação cron em vez de em resposta a uma mensagem SQS.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.
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