Natywna obsługa zaplanowanych wydarzeń została dodana 8 października 2015 r .:
Jak ogłoszono w tym poście na blogu AWS , planowanie jest teraz obsługiwane jako typ źródła zdarzeń (zwane również wyzwalaczami) o nazwie „ CloudWatch Events - Schedule ” i może być wyrażone jako szybkość lub wyrażenie cron.
Dodaj zaplanowane wydarzenie do nowej lambdy
Przejdź do etapu tworzenia „Konfiguruj wyzwalacze” i określ wyzwalacz „Zdarzenie CloudWatch - Harmonogram”. Przykładowa konfiguracja poniżej:
Dodaj zaplanowane wydarzenie do istniejącej lambdy
Przejdź do zakładki „Wyzwalacze” swojej lambda, wybierz „Dodaj wyzwalacz” i określ wyzwalacz „Zdarzenie CloudWatch - Harmonogram”. Przykładowy zrzut ekranu, na którym mam istniejącą lambdę z wyzwalaczem SNS:
Po załadowaniu interfejs użytkownika służący do konfigurowania tego wyzwalacza jest identyczny z zrzutem ekranu w powyższej sekcji „Dodaj zaplanowane zdarzenie do nowej sondy lambda” powyżej.
Dyskusja
W swoim przykładowym przypadku będziesz chciał użyć cron()
zamiast rate()
. Wyrażenia Crona w lambdzie wymagają wszystkich pól i są wyrażane w czasie UTC. Aby więc uruchamiać funkcję codziennie o 17:00 (UTC), użyj następującego wyrażenia cron:
cron(0 17 * * ? *)
Dalsze zasoby
Uwagi
- Nazwa tego typu zdarzenia została zmieniona z „Zaplanowane wydarzenie” na „CloudWatch Events - Schedule” od czasu wprowadzenia tej funkcji po raz pierwszy.
- Przed udostępnieniem tej funkcji zalecanym rozwiązaniem tego problemu (zgodnie z opisem „Rozpoczynanie pracy z AWS Lambda” przy 42 min i 50 s ) było użycie SWF do utworzenia timera lub do stworzenia timera z zewnętrzną aplikacją.
- Interfejs użytkownika Lambda został zmieniony od czasu opublikowania wpisu na blogu zaplanowanego wydarzenia, a zrzuty ekranu w nim nie są już dokładne. Zobacz moje zaktualizowane zrzuty ekranu powyżej z 10.03.2017, aby zapoznać się z najnowszymi poprawkami.
Wydaje się, że od czasu tego postu pojawiło się inne rozwiązanie: Zaplanuj powtarzające się wywołania lambda AWS z nierzetelnym zegarem miejskim (UTC), w którym autor proponuje subskrybowanie tematu SNS Unreliable Town Clock . Nie używałem ani SWF, ani SNS, ale wydaje mi się, że rozwiązanie SNS jest prostsze. Oto fragment artykułu
źródło
NOWE ROZWIĄZANIE: Zaplanowane zadania Lambda
Werner Vogel ogłosił dziś wieczorem (10/08) na re: Invent, że AWS Lambda ma teraz swój własny harmonogram.
Zobacz informację o wydaniu AWS Lambda 08.10.2015 :
STARE ROZWIĄZANIE: Szeregowanie za pomocą AWS Data Pipeline
Możesz użyć AWS Data Pipeline, aby zaplanować zadanie w danym okresie. Akcją może być dowolne polecenie podczas konfigurowania potoku za pomocą ShellCommandActivity .
Możesz na przykład uruchomić polecenie AWS CLI, aby:
Możesz łatwo utworzyć zaplanowane zadanie AWS Data Pipeline bezpośrednio w konsoli AWS (np. Za pomocą polecenia AWS CLI):
Możesz również użyć interfejsu API do zdefiniowania harmonogramu:
Limity : minimalny interwał planowania to 15 minut.
Ceny : około 1,00 USD miesięcznie.
źródło
Oto jak to robię:
Utwórz lambdę, która:
Utwórz alarm CloudWatch dla: ApproximateNumberOfMessagesVisible> 0 przez 1 minutę
Teraz masz zegar z rozdzielczością około 15 minut.
Następnie inne funkcje Lambda są subskrybowane w temacie SNS i wywoływane co 15 minut.
źródło
Ponieważ teraz można łatwo wyzwalać funkcje lambda przez HTTP (np. Za pomocą GET lub curl), prostym rozwiązaniem jest użycie zarządzanego CRON, takiego jak easycron: https://www.easycron.com/, aby uruchomić funkcję lambda.
Mieliśmy ten sam problem i skończyło się na uruchomieniu usługi cron w Google App Engine w Pythonie, ponieważ pozwoliło to na większą elastyczność i złożoność samego zadania CRON.
źródło
Na stronie Funkcja, Dodaj wyzwalacz, możesz dodać zdarzenia CloudWatch i ustawić je jako typ harmonogramu
źródło
Możesz zaplanować to również za pomocą wydarzeń w chmurze. Utwórz regułę -> dołącz cel (lambda) i skonfiguruj mądry harmonogram cron / rate dla swojej reguły.
źródło
Sposób konsoli internetowej jest dość prosty. Po prostu utwórz
CloudWatch
regułę dla lambdy i dodaj ją wTriggers
zakładce lambda .Dla tych, którzy muszą to zautomatyzować
aws cli
, możemyUtwórz funkcję
Twórz reguły
źródło
Prostym sposobem na uruchomienie zapytania w lambdzie dla określonego przedziału czasu jest ustawienie reguły dla funkcji lambda. w tym celu po utworzeniu funkcji lambda przejdź do Cloudwatch >> Rules >> Schedule. i zdefiniuj wyrażenie cron, aw sekcji docelowej wybierz funkcję lambda, którą chcesz wyzwolić.
źródło
Podczas tworzenia funkcji lambda utwórz wyzwalacz „CloudWatch Events - Schedule”
Teraz możesz użyć presetów AWS w wyrażeniu harmonogramu, na przykład rate = 15 min, lub możesz użyć wyrażenia cron.
Dla twojego wymagania harmonogram Cron to „0 0 17 1/1 *? *”
źródło
Diksha to AWS Lambda Scheduler oparty na AWS SWF Trigger zgodnie z zaleceniami AWS Team . Można zaplanować zadania za pomocą wyrażeń crona, a także określić, ile czasu chcesz uruchomić, kiedy rozpocząć lub kiedy zakończyć. Możesz wyświetlić stan, a także historię zaplanowanych zadań. Bezpieczeństwo jest zarządzane przez zasady AWS.
Po skonfigurowaniu silnika diksha możesz zaplanować funkcje za pomocą wyrażenia cron w następujący sposób:
java -jar diksha-client-0.0.1.jar -lcfg cf1 -cj "nazwa_zadania | nazwa_funkcji | kontekst | 0 0-59 * * * * | 10"
W tym zadaniu zadanie będzie uruchamiane co minutę 10 razy. AWS SWF sam uruchomi funkcję.
Szczegóły: https://github.com/milindparikh/diksha
Zastrzeżenie: Jestem współtwórcą projektu.
źródło