Schedule di una AWS Lambda

  • Di
  • 2023-10-12 - 4 minuti
banner

Grazie al servizio Lambda di AWS, è possibile scrivere del codice tramite l’editor integrato della console di gestione AWS in diversi linguaggi e poter eseguire le tue funzioni in pochi attimi, il tutto in modalità serverless.

Per cosa può tornarci utile?

Per pianificare, ad esempio, lo spegnimento automatico di una serie di macchine EC2 durante il weekend, piuttosto che per recuperare i log di alcuni servizi critici per il proprio flusso di lavoro.

Per far sì che questa funzione venga eseguita in maniera automatica e programmata, è possibile avvalersi di un servizio che segua una regola per mettere in moto Lambda.

Partiamo da un esempio semplice, che poi può essere adattato a qualsiasi tipo di funzione Lambda, in qualsiasi linguaggio essa sia scritta.

Immaginiamo di avere la seguente Lambda scritta in Python. In questo caso, recupera dei dati qualsiasi dal sito https://random-data-api.com/ e li riporta sotto forma di JSON, tramite il modulo json e requests di Python e sfruttando la funziona lambda_handler all’interno della quale avviene la request:

import json
import requests

base_url = "https://random-data-api.com/"

def lambda_handler(event, context):
    res = requests.get(url=base_url+'api/v2/users?size=1&is_xml=true')
    return {
        'statusCode': res.status_code,
        'body': res.json
    }

Vogliamo che questa chiamata venga eseguita ogni giorno, a mezzanotte: per farlo, possiamo sfruttare un servizio chiamato EventBridge. Si tratta sempre di un servizio serverless che permette di creare delle applicazioni basate su eventi: questo vuol dire che utilizza una serie di eventi, come un cambio dello stato di un servizio o di una funzione per scatenare delle azioni su altri servizi o applicazioni, tramite delle regole o delle vere e proprie pipeline.

Nel nostro caso, è necessario utilizzare il servizio di creazione delle regole tramite la pianificazione: colleghiamoci al servizio Eventbridge, come prima cosa, e clicchiamo su “Crea Regola”.

Pagina principale del servizio

Si aprirà una pagina che riporta il wizard per la creazione della regola: scegliamo un nome parlante, inseriamo eventualmente una descrizione e poi procediamo verso la sezione chiamata “Modello di pianificazione”, dove potremo specificare lo schedule con cui eseguire la funzione Lambda:

Creazione della regola

Selezioniamo la voce “Pianificazione ricorrente”, così da poter definire sotto forma di cron qual è la ricorrenza con la quale questa funzione dev’essere invocata. Nell’esempio in figura, la pianificazione prevede che la funzione venga eseguita tutti i giorni (terzo asterico) a mezzanotte (primi due zeri) ogni mese di ogni anno. Come forma di verifica, viene infatti anche riportata la data e l’ora che corrispondono all’espressione inserita delle prossime occorrenze: vediamo se tutto torna, e procediamo.

Configurazione dei dettagli della pianificazione ricorrente

Piccola nota: la voce “Finestra temporale flessibile” permette di impostare un range temporale entro il quale eseguire la funzione. Questo vuol dire che la funzione potrebbe essere eseguita con un po’ di ritardo rispetto all’orario indicato, ma sempre all’interno di questo intervallo.

A questo punto, andiamo a selezionare quale servizio collegare alla pianificazione, ossia Lambda, tramite l’azione di invocazione:

Configurazione del servizio Lambda per l’esecuzione programmata

Fatto questo, verrà mostrata una finestra che permette di selezionare una tra le funzioni presenti nella regioni utilizzata e specificare un eventuale payload da associare a questa: nel caso di esempio, non era necessario, quindi selezioniamo la Lambda e procediamo.

Selezione della funzione Lambda

Nello step successivo, vengono specificate una serie di opzioni su come configurare questa pianificazione: se abilitarla immediatamente al momento della creazione, se cancellarla dopo il completamento, l’eventuale meccanismo di crittografia da utilizzare e le autorizzazioni: lasciamo che venga creato un ruolo in maniera automatica da AWS e clicchiamo su “Successivo”.

Configurazioni opzionali

Ultimo step: controlliamo il riepilogo di quanto fatto finora, e creiamo la pianificazione.

Riepilogo della pianificazione

Una volta finito, la pianificazione sarà riportata nell’elenco delle pianificazioni a cui è possibile accedere dalla pagina principale del servizio EventBridge: questo riporterà anche qual è il servizio a cui è collegato, nonché tutti i dettagli sulla sua esecuzione.

A questo punto, come verificare che la funzione venga invocata correttamente e funzioni secondo pianificazione?

Utilizzando il servizio CloudWatch: selezionando questo servizio e scegliendo dal menù di sinistra la voce “Logs” e poi “Gruppi di log”, possiamo cercare tramite il nome della funzione Lambda i log a essa associati:

Pagina principale di CloudWatch

Ricerca dei log delle funzioni Lambda su CloudWatch

Se la pianificazione è appena stata creata e ha una data successiva a quella attuale, è possibile che non ci sia ancora nulla.

A questo punto, non ci resta che attendere la prossima esecuzione e incrociare le dita! 🤞

Risorse utili

Post correlati

Iscriviti al TheRedCode.it Corner

La tecnologia corre, e tu devi correre più veloce per rimanere sempre sul pezzo! 🚀

Riceverai una volta al mese (o anche meno) con codici sconto per partecipare agli eventi del settore, quiz per vincere dei gadget e i recap degli articoli più interessanti pubblicati sul blog

Ci sto!

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source
Logo di NgRome

Vuoi diventare #tech content writer? 🖊️

Se vuoi raccontare la tua sul mondo #tech con dei post a tema o vuoi condividere la tua esperienza con la community, sei nel posto giusto! 😉

Manda una mail a collaborazioni[at]theredcode.it con la tua proposta e diventa la prossima penna del blog!

Ma sì, facciamolo!