AWS Lambda è un servizio di Amazon Web Services (AWS) che ti permette di eseguire il tuo codice in risposta agli eventi senza gestire i server. È un modo semplice e scalabile per costruire applicazioni.

In questo tutorial, ti mostrerò come utilizzare AWS Lambda con altri tre servizi:

  • Amazon S3 per memorizzare file, immagini e video

  • Amazon Simple Notification Service (SNS) per inviare notifiche

  • Amazon EventBridge per pianificare messaggi

Passeremo attraverso tutto passo dopo passo.

Alla fine, con l’integrazione degli altri servizi, avrai costruito un’app di Citazioni di Manifestazione degli Obiettivi che invia messaggi motivazionali casuali per aiutarti a rimanere motivato e concentrato sui tuoi obiettivi.

Prerequisiti

  • Un account AWS: Se non ne hai uno, registrati qui.

  • Un repository GitHub: Questo serve per memorizzare il tuo codice sorgente. Se non hai un account GitHub, puoi crearne uno qui.

  • Un Ambiente di Sviluppo Integrato (IDE) come Visual Studio Code o Sublime Text.

  • Una conoscenza di base dello sviluppo web e di qualsiasi linguaggio di programmazione a tua scelta. Ho usato Python per questo tutorial.

  • Zenquote Random API

Cosa imparerai

  • Come creare un bucket Amazon S3

  • Come usare Amazon Simple Notification Service (SNS)

  • Come usare Amazon Lambda

  • Come usare Amazon EventBridge

Tabella dei contenuti

  1. Passaggio 1: Configura il tuo ambiente di sviluppo

  2. Passaggio 2: Crea un servizio di archiviazione semplice di Amazon (S3)

  3. Passaggio 3: Crea un servizio di notifica semplice di Amazon (SNS)

  4. Passaggio 4: Crea una policy IAM

  5. Passaggio 5: Crea una funzione Amazon Lambda

  6. Passo 6: Crea un EventBridge

  7. Passo 7. Carica il tuo codice

  8. Conclusione

Passo 1: Configura il tuo ambiente di sviluppo

In questo passaggio, configurerai tutto. Inizia accedendo al tuo account AWS, quindi installa Python se non lo hai nel tuo IDE.

Passo 2: Crea un servizio di archiviazione semplice Amazon (S3)

Prima di iniziare a creare un bucket S3, cerchiamo di capire cosa sia Amazon S3:

Amazon S3 (Simple Storage Service) è un servizio di Amazon che ti consente di archiviare e accedere a qualsiasi quantità o tipo di dati, come foto, video, documenti e backup, ogni volta che ne hai bisogno.

Ora che conosci le basi di cosa sia Amazon S3, torniamo al tutorial.

Crea un Bucket S3

Ci sono diversi modi per creare un bucket S3, ma per questo tutorial useremo il terminale di Ubuntu (CMD), il tuo terminale o Amazon CloudShell, a seconda di cosa ti senti più a tuo agio.

  • Digita boto3 s3 nella barra di ricerca web per visualizzare un elenco della documentazione correlata.

  • Clicca sul primo risultato.

  • Una volta aperta la documentazione, copia il primo comando che vedi.

  • Incollalo nel tuo CMD O nel terminale di tua scelta – ma prima ricorda di “cd” nella directory giusta.

  • Nella documentazione, scorri verso il basso e clicca su “create_bucket.

  • Una volta aperto, scorri verso il basso fino a “Request Syntax.” Copia il nome del bucket e la configurazione del bucket.

  • Altre variabili elencate nella sintassi della richiesta sono facoltative.

  • Una volta fatto, assicurati di salvare.

  • Torna indietro e chiama lo script:
#python3 il tuo nome file
  • Eseguendo lo script si crea automaticamente un bucket S3 nel tuo Amazon S3.

  • Ora puoi andare alla console per controllare se è stato creato:

Carica file

Con il bucket creato, ora possiamo caricare i file tramite la console. Credo ci sia anche un modo programmato per caricare i file e testarli, ma non ho ancora esplorato tutti i metodi nella documentazione.

Fai clic sul nome del bucket per essere reindirizzato alla pagina dell’oggetto. È qui che caricherai i tuoi file per lo storage.

Fai clic sul pulsante di caricamento per caricare un file. Ricorda, stiamo creando un’applicazione di Quotazioni di Manifestazione degli Obiettivi.

Ora che abbiamo configurato un bucket di storage:

  • Apri un tool come Google Drive, MS Word, WPS, o qualsiasi altro editor di documenti.

  • Scrivi gli obiettivi che desideri raggiungere.

  • Salva il file in formato PDF o DOCX.

  • Prendi il documento e caricalo sul tuo Amazon S3.

Per verificare se è il file corretto:

  • Naviga nella scheda Permessi.

  • Scorri fino a Blocco dell’accesso pubblico.

  • Fai clic su Modifica e deseleziona la casella.

Come mostrato sopra, attualmente è impostato su “on”. Deselezionalo per spegnerlo “off”.

  • Nella stessa pagina delle impostazioni del bucket, modifica la policy.

  • Scorri verso il basso e vedrai che è stata generata automaticamente una policy per il bucket.

  • Copia la policy.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    }
  ]
}
  • Torna all’editor della policy del bucket e incolla la policy.

Una volta completati questi passaggi, il tuo oggetto avrà accesso pubblico.

Torna alla scheda Oggetti e clicca sul URL dell’oggetto fornito di seguito:

Con questo URL, il tuo upload è ora visibile.

Fase 3: Crea un Amazon Simple Notification Service (SNS)

SNS è un servizio di messaggistica completamente gestito fornito da AWS. Consente la comunicazione tra applicazioni o direttamente con gli utenti inviando notifiche.

Per creare un SNS, segui questi passaggi:

1. Accedi alla console di gestione AWS

Poi vai su Amazon SNS. Passa alla Dashboard SNS e seleziona Topics dal menu a sinistra.

Per creare un topic:

  • Clicca su Crea topic.

  • Scegli un Tipo di topic: Standard (predefinito) o FIFO (per messaggi ordinati).

  • Inserisci un Nome per il tuo argomento. (ad esempio, MyFirstSNSTopic).

  • Configura impostazioni opzionali come crittografia, politiche di riprova di consegna o tag.

  • Clicca su Crea argomento.

2. Aggiungi Sottoscrizioni:

Dopo aver creato l’argomento, clicca su di esso per aprire la pagina dei dettagli. Seleziona la scheda Sottoscrizioni.

Clicca su Crea Sottoscrizione e scegli:

  • Il Protocollo può essere Email, SMS, HTTP/S, Lambda, o SQS.

  • Gli Endpoint come indirizzo email, numero di telefono, o URL.

Clicca su Crea Sottoscrizione.

3. Conferma la Sottoscrizione:

Se hai selezionato email o SMS, un link o un codice di conferma verrà inviato all’endpoint fornito. Segui le istruzioni per confermare l’abbonamento.

Ora che abbiamo fatto questo, creiamo una funzione Amazon Lambda che attiverà l’SNS in modo che il messaggio venga inviato alla tua email.

Passo 4: Crea una Politica IAM

Questa politica è creata per autorizzare Amazon Lambda a attivare l’evento e per garantire che CloudWatch venga attivato automaticamente per monitorare gli eventi dell’applicazione.

Per creare una politica, segui questi passaggi:

1. Accedi alla console di gestione AWS.

Nel menu a sinistra, seleziona Politiche. Quindi:

  • Clicca su Crea politica.

  • Scegli la scheda Visiva, poi seleziona il servizio SNS.

  • Successivamente, clicca sulla scheda Scegli per creare una politica personalizzata.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sns:Publish",
            "Resource": "arn:aws:sns:REGION:ACCOUNT_ID:goal_topic"
        }
    ]
}

Poi, sostituisci i seguenti segnaposto con le tue informazioni:

  • region: La tua regione AWS (ad esempio, us-east-1).

  • account-id: Il tuo ID account AWS.

  • nome-argomento: Nome del tuo argomento SNS.

2. Visualizza e crea la policy:

Puoi farlo seguendo questi passaggi:

  • Fai clic sul pulsante Review.

  • Assegna alla tua policy un Nome (ad esempio, PolicyLambdaSNS), e facoltativamente, una Descrizione.

  • Fai clic su Crea policy.

3. Allega la policy al ruolo di esecuzione Lambda

Ora devi allegare la policy al tuo ruolo di esecuzione Lambda. Per farlo, segui questi passaggi:

  • Vai alla sezione Ruoli nella Console IAM.

  • Cerca e seleziona il ruolo di esecuzione.

  • Successivamente, cerca la policy che hai appena creato e selezionala.

  • Fai clic su Allega policy.

Entrambe le policy verranno automaticamente collegate.

Passaggio 5: Crea una funzione Amazon Lambda

Amazon Lambda è un servizio di AWS che consente di eseguire codice senza gestire i server. Carichi il tuo codice e Lambda lo esegue automaticamente e lo scala quando necessario.

Segui questi passaggi per creare una funzione Amazon Lambda:

1. Accedi alla Console di Gestione AWS:

Naviga su AWS Lambda.

2. Crea una Funzione:

Fai clic su Crea funzione e scegli l’opzione Autore da zero.

Compila i dettagli:

  • Nome funzione: Inserisci un nome univoco (ad esempio, SNSLambdaFunction).

  • Runtime: Seleziona il runtime (ad esempio, Python, Node.js, Java, ecc.).

  • Ruolo: Scegli o crea un ruolo. Se hai già un ruolo, seleziona Usa un ruolo esistente. Altrimenti, seleziona Crea un nuovo ruolo con le autorizzazioni di base di Lambda.

  • Fai clic sul pulsante Crea funzione.

3. Incolla il codice:

Sulla pagina della funzione Lambda, vai alla scheda Configurazione:

Ricorda, stiamo cercando di ottenere una citazione. Aggiungerò l’ARN dell’argomento che abbiamo creato qui e includerò le mie chiavi API. Ma per questo tutorial, utilizzerò direttamente l’API per ottenere i dati.

4. Scrivi il Codice Lambda:

Vai alla scheda Codice nella tua funzione Lambda. Quindi scrivi o incolla il codice dal tuo IDE per elaborare i messaggi SNS in arrivo.

Esempio:

Ecco il codice:

import os
import json
import urllib.request
import boto3

def fetch_random_quote():
    """
    Fetches a random quote from the ZenQuotes API.
    """
    api_url = "https://zenquotes.io/api/random"
    try:
        with urllib.request.urlopen(api_url) as response:
            data = json.loads(response.read().decode())
            if data and isinstance(data, list):
                # Formatta la citazione e l'autore
                quote = data[0].get("q", "No quote available")
                author = data[0].get("a", "Unknown author")
                return f'"{quote}" - {author}'
            else:
                return "No quote available."
    except Exception as e:
        print(f"Error fetching random quote: {e}")
        return "Failed to fetch quote."

def lambda_handler(event, context):
    """
    AWS Lambda handler function to fetch a random quote and publish it to an SNS topic.
    """
    # Ottieni l'ARN del topic SNS dalle variabili d'ambiente
    sns_topic_arn = os.getenv("SNS_TOPIC_ARN")
    sns_client = boto3.client("sns")

    # Recupera una citazione casuale
    quote = fetch_random_quote()
    print(f"Fetched Quote: {quote}")

    # Pubblica la citazione su SNS
    try:
        sns_client.publish(
            TopicArn=sns_topic_arn,
            Message=quote,
            Subject="Daily Random Quote to help you stay motivated and inspired to achieve your goals",
        )
        print("Quote published to SNS successfully.")
    except Exception as e:
        print(f"Error publishing to SNS: {e}")
        return {"statusCode": 500, "body": "Error publishing to SNS"}

    return {"statusCode": 200, "body": "Quote sent to SNS"}

5. Salva:

Fai clic sul pulsante di distribuzione per salvare.

6. Testa la Tua Funzione Lambda:

Vai alla scheda Test e crea un nuovo evento di test.

Quindi salva ed esegui il test. Se è riuscito, verrà inviato un messaggio:

Questo significa che il messaggio è stato creato per te

Infine, controlla la tua email o SMS, a seconda del punto finale che hai usato per questo tutorial. Nel mio caso, ho usato l’email.

Passaggio 6: Crea un EventBridge

Amazon EventBridge è un servizio che ti aiuta a connettere applicazioni e servizi AWS come Amazon SNS e Amazon Lambda.

Per creare una regola di Amazon EventBridge, segui questi passaggi:

1. Naviga su EventBridge:

Nella barra di ricerca, digita EventBridge e selezionalo dall’elenco dei servizi.

2. Crea una Regola:

Nella console di EventBridge, fai clic su Regole nel pannello sinistro. Quindi fai clic sul pulsante Crea regola.

3. Configura i dettagli della regola:

  • Nome: Inserisci un nome univoco per la tua regola.

  • Descrizione (opzionale): Aggiungi una descrizione per spiegare cosa fa questa regola.

4. Scegli il bus degli eventi:

Seleziona bus degli eventi predefinito (o un altro bus degli eventi se ne hai creato uno).

5. Definisci il modello di evento o il programma:

Per modello di evento:

  • Scegli un servizio AWS come sorgente dell’evento.

  • Seleziona il tipo di evento specifico (ad esempio, un caricamento di file S3 o un cambio di stato di un’istanza EC2).

Per programma:

  • Scegli l’opzione Programma per eseguire la regola a intervalli fissi (ad esempio, ogni 5 minuti).

  • Fai clic su continua. Questo ti porterà alla pagina dei dettagli specifici dove:

  • Scorri verso il basso e fai clic sul pianificatore cron. Il pianificatore cron specifica a che ora verrà inviato il messaggio.

  • Seleziona “Off” per l’opzione della finestra temporale flessibile.

  • Esamina i dettagli della regola per confermare che tutto sia corretto.

  • Fai clic sul pulsante “Avanti” per procedere alla pagina Target.

    L’immagine sopra mostra quando verranno inviati i messaggi.

    • Nella pagina Target, seleziona AWS Lambda per invocare la tua funzione.

  • Scorri verso il basso per invocare e scegliere la funzione che hai creato.

  • Fai clic sul pulsante “Avanti” per procedere. Questo ti porterà alla pagina delle impostazioni. Nella sezione permessi, seleziona “Utilizza regola esistente.”

  • Infine, vai alla revisione e crea un programma:

  • La pagina successiva mostra tutti i dettagli:

Utilizzando EventBridge si crea un pianificatore per gli utenti.

Passo 7: Carica il tuo codice

Infine, carica il tuo codice su GitHub e includi una documentazione adeguata per aiutare a spiegare come funziona il codice.

Controlla questa documentazione se non sai come fare: Caricare un progetto su GitHub.

Conclusione

Se hai seguito tutti questi passaggi, avrai creato un’app per la Manifestazione degli Obiettivi utilizzando AWS Lambda, Amazon S3, Amazon SNS e Amazon EventBridge. Questa app recupera citazioni motivazionali e le invia agli abbonati secondo un programma.

Puoi trovare il link del repository qui.

Sentiti libero di condividere i tuoi progressi o fare domande se hai problemi.

Se hai trovato utile questo articolo, condividilo con altri.

Rimani aggiornato sui miei progetti seguendomi su Twitter, LinkedIn e GitHub

Grazie per aver letto 💖.

Disclaimer:
Le risorse mostrate in questo articolo, incluso il bucket S3 e il suo ARN, sono state eliminate e non esistono più. I dettagli visibili negli screenshot sono utilizzati esclusivamente a scopo dimostrativo.