Schedule di una AWS Lambda
Published: 2023-10-25 15:55:04

---
title: Schedule di una AWS Lambda
published: true
date: 2023-10-12 00:00:00 UTC
tags: 
canonical_url: https://theredcode.it/aws/schedule-lambda-eventbridge-rule/
---

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/](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](https://aws.amazon.com/it/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_”.

![](https://theredcode.it/img/eventbridge-main.png)_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:

![](https://theredcode.it/img/eventbridge-rule1.png)_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.

![](https://theredcode.it/img/eventbridge-rule2.png)_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:

![](https://theredcode.it/img/eventbridge-rule3.png)_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.

![](https://theredcode.it/img/eventbridge-rule4.png)_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”.

![](https://theredcode.it/img/eventbridge-rule5.png)_Configurazioni opzionali_

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

![](https://theredcode.it/img/eventbridge-rule6.png)_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](https://aws.amazon.com/it/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:

![](https://theredcode.it/img/cloudwatch.png)_Pagina principale di CloudWatch_

![](https://theredcode.it/img/cloudwatch-lambda.png)_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

- [AWS Cloud Computing Concepts and Tech Analogies: A guide to understand AWS services using easy-to-follow analogies from real life](https://amzn.to/45D9eId)