Come avviare e arrestare un'istanza Aurora in maniera automatica con AWS Lambda

  • Di
  • 2024-10-17 - 3 minuti
banner

I costi della tua istanza Aurora aumentano facilmente, e non tutte le istanze del database hanno necessità di essere sempre operative: come risparmiare sulle ore di utilizzo delle istanze, sfruttando Lambda?

Vediamo quali sono i passaggi per consentire a una funzione AWS Lambda di avviare e/o arrestare un’istanza Amazon Aurora.

Crea una policy IAM

È necessario creare una policy IAM che conceda le autorizzazioni necessarie per avviare e arrestare le istanze Aurora. La policy deve includere le azioni rds:StartDBCluster e rds:StopDBCluster, che sono proprio quelle che ci permetteranno di avviare e arrestare le risorse.

Ecco un esempio di come potrebbe essere la policy per arrestare l’istanza del database del cluster:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:StartDBCluster",
        "rds:StopDBCluster"
      ],
      "Resource": "arn:aws:rds:<region>:<account-id>:db:<db-cluster-name>"
    }
  ]
}

Ovviamente, dobbiamo sostituire i campi <region>, <account-id> e <db-cluster-name> con i dettagli dell’account e della region in cui si trova il cluster.

Crea un ruolo tramite IAM

A questo punto, avendo la policy pronta, dobbiamo permettere a Lambda di sfruttarla: creiamo un ruolo IAM affinché la funzione Lambda possa essere “delegata” ad eseguire queste operazioni.

  • Apri la console IAM.
  • Nel riquadro di navigazione, scegli Ruoli.
  • Scegli Crea ruolo.
  • Seleziona Servizio AWS come entità attendibile e scegli Lambda.
  • Allega la policy creata nel passaggio precedente.
  • Completa la creazione del ruolo.

Assegna il ruolo IAM alla funzione Lambda

Quando crei o aggiorni la tua funzione Lambda, assegna il ruolo IAM che hai creato:

  • Nella console Lambda, vai alla tua funzione.
  • In Configurazione, scegli Autorizzazioni.
  • Scegli Modifica e seleziona il ruolo IAM che hai creato.

L’alternativa, è quella di associare la precedente policy a quello che è il ruolo di esecuzione della Lambda.

Scrivi il codice della funzione Lambda

Passiamo alla scrittura della Lambda: è possibile usare l’SDK AWS che supporta diversi linguaggi, tra cui Node.js e Python con le rispettive librerie. In questo caso, useremo boto3 per Python per avviare l’istanza Aurora.

Per farlo, sfruttiamo la funzione lambda_handler per creare una variabile che ospiterà il client necessario alla comunicazione con RDS e quindi Aurora. Poi, sfruttiamo le API di RDS per chiamare la funzione start_db_cluster che, tramite l’ID del Cluster, possa avviare il cluster:

import boto3

def lambda_handler(event, context):
    rds_client = boto3.client('rds')
    
    response = rds_client.start_db_cluster(
        DBClusterIdentifier='your-db-cluster-name'
    )
    
    return response

E per arrestare un cluster? La procedura è del tutto simile:

import boto3

def lambda_handler(event, context):
    rds_client = boto3.client('rds')
    
    response = rds_client.stop_db_cluster(
        DBClusterIdentifier='your-db-cluster-name'
    )
    
    return response

Testa la funzione

Dopo aver eseguito il deploy della funzione Lambda per avere la certezza che le modifiche siano state salvate correttamente, è possibile testarla per assicurarti che avvii l’istanza Aurora come previsto.

Se invece vuoi che l’avvio o lo spegnimento avvengano in maniera automatica, è possibile impostare CloudWatch Events o EventBridge per pianificare l’esecuzione della funzione Lambda. Un esempio di come creare una regola e la relativa schedulazione, puoi dare un’occhiata a questo post.

Post correlati

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
Logo de La Locanda del Tech
Logo di Tomorrow Devs
Logo di Coderful

Non perderti gli ultimi aggiornamenti, iscriviti a TheRedCode Digest!

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!

#TheRedComics

Edizione di Ottobre

A cura di Sophie Aiello, copy di Chiara Romano

Fumetto di agosto di Sophie Aiello

Vuoi diventare #tech content creator? 🖊️

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!