Tutorial: trasformazione dei dati per l'applicazione con S3 Object Lambda - Amazon Simple Storage Service

Tutorial: trasformazione dei dati per l'applicazione con S3 Object Lambda

Quando archivi dati in Amazon S3, puoi condividerli facilmente per utilizzarli da più applicazioni. Tuttavia, ogni applicazione potrebbe avere requisiti univoci in merito al formato dei dati e richiedere la modifica o l'elaborazione dei dati per un caso d'uso specifico. Ad esempio, un set di dati creato da un'applicazione e-commerce potrebbe includere informazioni personali di identificazione (PII). Quando gli stessi dati vengono elaborati per l'analisi, queste PII non sono necessarie e devono essere oscurate. Tuttavia, se lo stesso set di dati viene utilizzato per una campagna di marketing, potresti dover arricchire i dati con ulteriori dettagli, come informazioni dal database che raccoglie i dati sulla fidelizzazione dei clienti.

Con S3 Object Lambda puoi aggiungere il tuo codice per elaborare i dati recuperati da S3 prima di restituirli a un'applicazione. Nello specifico, è possibile configurare una funzione AWS Lambda e collegarla a un punto di accesso S3 Object Lambda. Quando un'applicazione invia richieste GET S3 standard tramite il punto di accesso S3 Object Lambda, la funzione Lambda specificata viene richiamata per elaborare tutti i dati recuperati da un bucket S3 attraverso il punto di accesso S3 di supporto, quindi il punto di accesso S3 Object Lambda restituisce il risultato trasformato all'applicazione. Puoi creare ed eseguire funzioni Lambda personalizzate, adattando la trasformazione dei dati S3 Object Lambda al tuo specifico caso d'uso, il tutto senza che siano necessarie modifiche alla tua applicazione.


                Questo è un diagramma del flusso di lavoro S3 Object Lambda.
Obiettivo

In questo tutorial imparerai come aggiungere codice personalizzato alle richieste GET S3 standard per modificare l'oggetto richiesto recuperato da S3 in modo che questo soddisfi le esigenze del client o dell'applicazione richiedente. In particolare, imparerai a trasformare in maiuscolo tutto il testo dell'oggetto originale archiviato in S3 attraverso S3 Object Lambda.

Prerequisiti

Prima di iniziare questo tutorial, devi disporre di un account AWS al quale puoi eseguire l'accesso come utente AWS Identity and Access Management (IAM) con le autorizzazioni corrette. Devi inoltre installare la versione 3.8 o successiva di Python.

Creazione di un utente IAM con autorizzazioni nel tuo account AWS (console)

Puoi creare un utente IAM per il tutorial oppure aggiungere autorizzazioni a un utente IAM esistente. Per completare questo tutorial, l'utente IAM deve allegare le seguenti policy IAM per accedere alle relative risorse AWS ed eseguire azioni specifiche.

L'utente IAM richiede le seguenti policy:

  • AmazonS3FullAccess: concede le autorizzazioni a tutte le operazioni di Amazon S3, incluse le autorizzazioni per creare e utilizzare un punto di accesso Object Lambda.

  • AWSLambda_FullAccess: concede le autorizzazioni a tutte le operazioni Lambda.

  • IAMFullAccess: concede le autorizzazioni a tutte le operazioni IAM.

  • IAMAccessAnalyzerReadOnlyAccess: concede le autorizzazioni per la lettura di tutte le informazioni di accesso fornite da IAM Access Analyzer.

Nota

Per semplicità, questo tutorial utilizza policy gestite AWS di accesso completo. Per l'utilizzo in produzione, è consigliabile invece concedere solo le autorizzazioni minime necessarie per il caso d'uso, in conformità con le best practice in fatto di sicurezza.

Per ulteriori informazioni su come creare un utente IAM, consulta Creazione di utenti IAM (console) nella Guida per l'utente di IAM.

Installazione di Python 3.8 o versioni successive sul computer locale

Utilizza la procedura seguente per installare Python 3.8 o una versione successiva sul computer locale. Per maggiori istruzioni sull'installazione, consulta la pagina Download di Python nella Guida per principianti di Python.

  1. Apri il terminale o la shell locale ed esegui il seguente comando per determinare se Python è già installato e, in caso affermativo, la versione installata.

    python --version
  2. Se non disponi di Python 3.8 o versioni successive, scarica il programma di installazione ufficiale di Python 3.8 o versioni successive adatto al computer locale.

  3. Esegui il programma di installazione facendo doppio clic sul file scaricato e segui i passaggi per completare l'installazione.

    Per utenti Windows: scegli Add Python 3.X to PATH (Aggiungi Python 3.X a [percorso]) nella procedura guidata di installazione prima di scegliere Install Now (Installa adesso).

  4. Chiudi e riapri il terminale per riavviarlo.

  5. Per verificare che Python 3.8 o versioni successive sia installato correttamente, esegui il comando seguente.

    Se sei un utente macOS, esegui questo comando:

    python3 --version

    Per utenti Windows: esegui questo comando:

    python --version
  6. Esegui il seguente comando per verificare che il gestore di pacchetti pip3 sia installato. Se vedi un numero di versione di pip e Python 3.8 o versione successiva nella risposta al comando, significa che il gestore di pacchetti pip3 è installato correttamente.

    pip --version

Fase 1: Creazione di un bucket S3

Crea un bucket per archiviare i dati originali che intendi trasformare.

Per creare un bucket
  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).

  3. Scegliere Create bucket (Crea bucket).

    Viene visualizzata la pagina Create bucket (Crea bucket).

  4. In Bucket name (Nome bucket), inserisci un nome per il bucket (ad esempio tutorial-bucket).

    Per ulteriori informazioni sulle regole di denominazione del bucket in Amazon S3, consulta Regole di denominazione dei bucket.

  5. In Region (Regione) scegli la Regione AWS in cui desideri che il bucket risieda.

    Per ulteriori informazioni sulla regione del bucket, consulta Panoramica dei bucket.

  6. In Block Public Access settings for this bucket (Blocca le impostazioni di accesso pubblico per questo bucket), mantieni le impostazioni predefinite (è abilitato Block all public access (Blocca tutto l'accesso pubblico).

    È consigliabile di lasciare abilitate tutte le impostazioni di blocco dell'accesso pubblico, a meno che non abbia bisogno di disattivarne una o più per il caso d'uso. Per ulteriori informazioni sul blocco dell'accesso pubblico, consulta Blocco dell'accesso pubblico allo storage Amazon S3.

  7. Mantieni le impostazioni rimanenti impostate sui valori di default.

    (Facoltativo) Se desideri configurare ulteriori impostazioni del bucket per il tuo caso d'uso specifico, consulta Creazione di un bucket.

  8. Scegliere Create bucket (Crea bucket).

Fase 2: Caricamento di un file nel bucket S3

Carica il file di testo nel bucket S3. Questo file di testo contiene i dati originali che trasformerai in maiuscolo più avanti in questo tutorial.

Ad esempio, puoi caricare un file tutorial.txt che contiene il testo seguente:

Amazon S3 Object Lambda Tutorial: You can add your own code to process data retrieved from S3 before returning it to an application.
Per caricare un file in un bucket
  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).

  3. Nell'elenco Buckets (Bucket) scegli il nome del bucket creato nella Fase 1 (ad esempio,tutorial-bucket) in cui caricare il file.

  4. Nella scheda Oggetti del bucket seleziona Carica.

  5. Nella pagina Upload (Caricamento), sotto Files and Folders (File e cartelle) scegli Add Files (Aggiungi file).

  6. Seleziona un file da caricare, quindi scegli Apri. Ad esempio, puoi caricare il file di esempio tutorial.txt menzionato in precedenza.

  7. Scegli Carica.

Fase 3: Creazione di un punto di accesso S3

Per utilizzare un punto di accesso S3 Object Lambda per accedere e trasformare i dati originali, devi creare un punto di accesso S3 e associarlo al bucket S3 creato nella Fase 1. Il punto di accesso deve trovarsi nella stessa Regione AWS degli oggetti che desideri trasformare.

Più avanti in questo tutorial, utilizzerai questo punto di accesso come punto di accesso di supporto per il tuo punto di accesso Object Lambda.

Per creare un punto di accesso
  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nel pannello di navigazione a sinistra, scegli Access Points (Punti di accesso).

  3. Nella pagina Access Points (Punti di accesso) scegli Create access point (Crea punto di accesso).

  4. Nel campo Access point name (Nome del punto di accesso), inserisci il nome (per esempio, tutorial-access-point) per il punto di accesso.

    Per ulteriori informazioni sui punti di accesso S3, consulta Regole per la denominazione degli access point Amazon S3.

  5. Nel campo Bucket name (Nome bucket) inserisci il nome del bucket creato nella Fase 1 (ad esempio, tutorial-bucket). S3 allega quindi il punto di accesso a questo bucket.

    (Facoltativo) Puoi scegliere Browse S3 (Sfoglia S3) per sfogliare e cercare i bucket nell'account. Se scegli Browse S3 (Sfoglia S3), scegli il bucket desiderato e scegli Choose path (Scegli percorso) per popolare il campo Bucket name (Nome bucket) con il nome del bucket.

  6. In Network origin (Origine rete), scegli Internet.

    Per ulteriori informazioni sulle origini di rete per i punti di accesso, consulta Creazione di access point limitati a un cloud privato virtuale.

  7. Tutte le impostazioni di blocco dell'accesso pubblico sono abilitate per impostazione predefinita per il punto di accesso. È consigliabile lasciare abilitato Block all public access (Blocca tutto l'accesso pubblico).

    Per ulteriori informazioni, consulta Gestione dell'accesso pubblico agli access point.

  8. Per tutte le altre impostazioni del punto di accesso, mantieni i valori di default.

    (Facoltativo) Puoi modificare le impostazioni del punto di accesso per supportare il caso d'uso. Per questo tutorial, ti consigliamo di mantenere le impostazioni di default.

    (Facoltativo) Se è necessario gestire l'accesso al punto di accesso, puoi specificare una policy per il punto di accesso. Per ulteriori informazioni, consulta Esempi di policy degli access point.

  9. Selezionare Crea punto di accesso.

Fase 4: Creazione di una funzione Lambda

Per trasformare i dati originali, crea una funzione Lambda utilizzabile con il punto di accesso S3 Object Lambda.

Scrittura del codice della funzione Lambda e creazione di un pacchetto di implementazione in un ambiente virtuale

  1. Sul computer locale, crea una cartella denominata object-lambda per l'ambiente virtuale da utilizzare più avanti in questo tutorial.

  2. Nella cartella object-lambda, crea un file con una funzione Lambda che modifica tutto il testo dell'oggetto originale in maiuscolo. Ad esempio, puoi utilizzare la seguente funzione scritta in Python. Salva questa funzione in un file denominato transform.py.

    import boto3 import requests # This function capitalizes all text in the original object def lambda_handler(event, context): object_context = event["getObjectContext"] # Get the presigned URL to fetch the requested original object # from S3 s3_url = object_context["inputS3Url"] # Extract the route and request token from the input context request_route = object_context["outputRoute"] request_token = object_context["outputToken"] # Get the original S3 object using the presigned URL response = requests.get(s3_url) original_object = response.content.decode("utf-8") # Transform all text in the original object to uppercase # You can replace it with your custom code based on your use case transformed_object = original_object.upper() # Write object back to S3 Object Lambda s3 = boto3.client('s3') # The WriteGetObjectResponse API sends the transformed data # back to S3 Object Lambda and then to the user s3.write_get_object_response( Body=transformed_object, RequestRoute=request_route, RequestToken=request_token) # Exit the Lambda function: return the status code return {'status_code': 200}
    Nota

    La precedente funzione Lambda di esempio carica l'intero oggetto richiesto in memoria prima di trasformarlo e restituirlo al client. In alternativa, puoi trasmettere l'oggetto da S3 per evitare di caricare l'intero oggetto in memoria. Questo approccio può essere utile quando lavori con oggetti di grandi dimensioni. Per ulteriori informazioni sullo streaming delle risposte con i punti di accesso Object Lambda, consulta gli esempi di streaming in Utilizzo di richieste GetObject in Lambda.

    Quando scrivi una funzione Lambda utilizzabile con un punto di accesso S3 Object Lambda, la funzione si basa sul contesto dell'evento di input che S3 Object Lambda fornisce alla funzione stessa Il contesto dell'evento fornisce informazioni relative alla richiesta eseguita nell'evento inviato da S3 Object Lambda a Lambda. e che contiene i parametri utilizzati per crearla.

    I campi utilizzati per creare la funzione Lambda precedente sono i seguenti:

    Il campo getObjectContext si riferisce ai dettagli di ingresso e uscita per le connessioni ad Amazon S3 e S3 Object Lambda. Ha i seguenti campi:

    • inputS3Url: un URL prefirmato che la funzione Lambda può utilizzare per scaricare l'oggetto originale dal punto di accesso di supporto. Utilizzando un URL prefirmato, la funzione Lambda non ha bisogno di avere le autorizzazioni di lettura di Amazon S3 per recuperare l'oggetto originale e può accedere solo all'oggetto elaborato da ogni chiamata.

    • outputRoute: un token di routing che viene aggiunto all'URL di S3 Object Lambda quando la funzione Lambda richiama WriteGetObjectResponse per reinviare l'oggetto trasformato.

    • outputToken: un token utilizzato da S3 Object Lambda per associare la chiamata WriteGetObjectResponse al chiamante originale quando reinvia l'oggetto trasformato.

    Per ulteriori informazioni su tutti i campi del contesto dell'evento, consulta Formato e utilizzo del contesto degli eventi e Scrittura di funzioni Lambda per i punti di accesso S3 Object Lambda.

  3. Nel terminale locale, inserisci il seguente comando per installare il pacchetto virtualenv:

    python -m pip install virtualenv
  4. Nel terminale locale, apri la cartella object-lambda creata in precedenza e inserisci il seguente comando per creare e inizializzare un nuovo ambiente virtuale denominato venv.

    python -m virtualenv venv
  5. Per attivare l'ambiente virtuale, inserire il seguente comando per eseguire il file activate dalla cartella dell'ambiente:

    Se sei un utente macOS, esegui questo comando:

    source venv/bin/activate

    Per utenti Windows: esegui questo comando:

    .\venv\Scripts\activate

    Il prompt dei comandi si modifica per mostrare (venv), indicando che l'ambiente virtuale è attivo.

  6. Per installare le librerie richieste, esegui i seguenti comandi riga per riga nell'ambiente virtuale venv.

    Questi comandi installano versioni aggiornate delle dipendenze della funzione Lambda lambda_handler. Queste dipendenze sono gli SDK per Python (Boto3) AWS e il modulo delle richieste.

    pip3 install boto3
    pip3 install requests
  7. Per disattivare l'ambiente virtuale, esegui il comando seguente:

    deactivate
  8. Per creare un pacchetto di implementazione con le librerie installate come file .zip denominato lambda.zip alla root della directory object-lambda, eseguire i seguenti comandi riga per riga nel terminale locale.

    Suggerimento

    È possibile che i seguenti comandi debbano essere regolati per funzionare in un ambiente specifico. Ad esempio, una libreria potrebbe essere visualizzata in site-packages o dist-packages e la prima cartella potrebbe essere lib o lib64. Inoltre, la cartella python potrebbe essere denominata con una versione di Python diversa. Per localizzare un pacchetto specifico, utilizza il comando pip show.

    Se sei un utente macOS, esegui questi comandi:

    cd venv/lib/python3.8/site-packages
    zip -r ../../../../lambda.zip .

    Se sei un utente Windows, esegui questi comandi:

    cd .\venv\Lib\site-packages\
    powershell Compress-Archive * ../../../lambda.zip

    L'ultimo comando salva il pacchetto di implementazione nella directory principale della directory object-lambda.

  9. Aggiungere il file del codice della funzione transform.py alla root del pacchetto di implementazione.

    Se sei un utente macOS, esegui questi comandi:

    cd ../../../../
    zip -g lambda.zip transform.py

    Se sei un utente Windows, esegui questi comandi:

    cd ..\..\..\
    powershell Compress-Archive -update transform.py lambda.zip

    Dopo aver completato questa fase, si dovrà avere la seguente struttura della directory:

    lambda.zip$ │ transform.py │ __pycache__ | boto3/ │ certifi/ │ pip/ │ requests/ ...

Creare una funzione Lambda con un ruolo di esecuzione (console)

  1. Accedere alla AWS Management Console e aprire la console di AWS Lambda all'indirizzo https://console.aws.amazon.com/lambda/.

  2. Nel pannello di navigazione a sinistra, scegli Functions (Funzioni).

  3. Selezionare Create function (Crea funzione).

  4. Scegli Author from scratch (Crea da zero).

  5. In Basic information (Informazioni di base) eseguire queste operazioni:

    1. Nel campo Function name (Nome funzione), immettere tutorial-object-lambda-function.

    2. In Runtime (Runtime), scegli Python 3.8 o una versione successiva.

  6. Espandi la sezione Change default execution role (Cambia ruolo di esecuzione predefinito). In Execution role (Ruolo di esecuzione), scegli Create a new role with basic Lambda permissions (Crea un nuovo ruolo con le autorizzazioni Lambda di base).

    Nella Fase 5, più avanti in questo tutorial, allegherai la policy AmazonS3ObjectLambdaExecutionRolePolicy a questo ruolo di esecuzione della funzione Lambda.

  7. Mantieni le impostazioni rimanenti impostate sui valori predefiniti.

  8. Selezionare Create function (Crea funzione).

Implementa il codice della tua funzione Lambda con gli archivi in file .zip e configura la funzione Lambda (console)

  1. Nella console AWS Lambda all'indirizzo https://console.aws.amazon.com/lambda/, scegli Functions (Funzioni) nel pannello di navigazione a sinistra.

  2. Scegli la funzione Lambda creata in precedenza (ad esempio, tutorial-object-lambda-function).

  3. Nella pagina dei dettagli della funzione Lambda, scegli la scheda Code (Codice). Nella sezione Code source (Origine codice), scegli Upload from (Carica da) e quindi .zip file (file .zip).

  4. Scegli Upload (Carica) per selezionare il file .zip locale.

  5. Scegli il file lambda.zip creato in precedenza, quindi scegli Open (Apri).

  6. Selezionare Salva.

  7. Nel pannello Runtime settings (Impostazioni runtime), scegli Edit (Modifica).

  8. Nella pagina Edit runtime settings (Modifica impostazioni runtime), verifica che Runtime (Runtime) sia impostato su Python 3.8 o una versione successiva.

  9. Per indicare al runtime Lambda quale metodo gestore richiamare nel codice della funzione Lambda, inserisci transform.lambda_handler in Handler (Gestore).

    Quando si configura una funzione in Python, il valore dell'impostazione del gestore è costituito dal nome del file e dal nome del modulo del gestore esportato, separati da un punto. Ad esempio, transform.lambda_handler richiama il metodo lambda_handler definito nel file transform.py.

  10. Selezionare Salva.

  11. (Facoltativo) Nella pagina dei dettagli della funzione Lambda, scegli la scheda Configuration (Configurazione). Nel pannello di navigazione a sinistra, scegli General configuration (Configurazione generale), quindi scegli Edit (Modifica). Nel campo Timeout inserisci 1 min 0 sec. Mantieni le impostazioni rimanenti sui valori predefiniti e scegli Save (Salva).

    Il Timeout è la quantità di tempo consentita da Lambda per l'esecuzione di una funzione per una chiamata prima di arrestarla. Il valore predefinito è 3 secondi. La durata massima per una funzione Lambda utilizzata da S3 Object Lambda è di 60 secondi. I prezzi si basano sulla quantità di memoria configurata e sulla quantità di tempo di esecuzione del codice.

Fase 5: Configurazione di una policy IAM per il ruolo di esecuzione della funzione Lambda

Per abilitare la funzione Lambda a fornire dati personalizzati e intestazioni di risposta al chiamante GetObject, il ruolo di esecuzione della funzione Lambda deve disporre delle autorizzazioni IAM per chiamare l'API WriteGetObjectResponse.

Allegare una policy IAM al ruolo della funzione Lambda

  1. Nella console AWS Lambda all'indirizzo https://console.aws.amazon.com/lambda/, scegli Functions (Funzioni) nel pannello di navigazione a sinistra.

  2. Scegli la funzione creata nella Fase 4 (ad esempio, tutorial-object-lambda-function).

  3. Nella pagina dei dettagli della funzione Lambda, scegli la scheda Configuration (Configurazione), quindi scegli Permissions (Autorizzazioni) nel pannello di navigazione a sinistra.

  4. In Execution role (Ruolo di esecuzione) scegli il collegamento Role Name (Nome ruolo). Si apre la console IAM.

  5. Nella pagina Summary (Riepilogo) della console IAM del ruolo di esecuzione della funzione Lambda, seleziona la scheda Permissions (Autorizzazioni), quindi scegli Attach policies (Allega policy).

  6. Nella pagina Attach permissions (Allega autorizzazioni) inserisci AmazonS3ObjectLambdaExecutionRolePolicy nella casella di ricerca per filtrare l'elenco di policy. Seleziona la casella di controllo accanto al nome della policy AmazonS3ObjectLambdaExecutionRolePolicy.

  7. Scegli Attach policy (Collega policy).

Fase 6: Creazione di un punto di accesso S3 Object Lambda

Un punto di accesso S3 Object Lambda offre la flessibilità di richiamare una funzione Lambda direttamente da una richiesta GET S3 in modo che la funzione possa elaborare i dati recuperati da un punto di accesso S3. Quando crei e configuri un punto di accesso S3 Object Lambda, devi specificare la funzione Lambda da richiamare e fornire il contesto dell'evento in formato JSON come parametri personalizzati utilizzabili da Lambda.

Per creare un punto di accesso S3 Object Lambda
  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nel pannello di navigazione a sinistra, scegli Object Lambda Access Points (Punti di accesso Object Lambda).

  3. Nella pagina Object Lambda Access Points (Punti di accesso Object Lambda), scegli Create Object Lambda Access Point (Crea punto di accesso Object Lambda).

  4. In Object Lambda Access Point name (Nome punto di accesso Object Lambda), inserisci il nome che desideri utilizzare per il punto di accesso Object Lambda (per esempio, tutorial-object-lambda-accesspoint).

  5. In Supporting Access Point (Access point di supporto), inserisci o seleziona il punto di accesso standard creato nella Fase 3 (ad esempio, tutorial-access-point), quindi scegli Choose supporting Access Point (Scegli punto di accesso di supporto).

  6. In Invoke Lambda function (Chiama una funzione Lambda) per questo tutorial puoi scegliere una delle due opzioni seguenti.

    • Scegli Choose from functions in your account (Scegli tra le funzioni nell'account), dopodiché scegli la funzione Lambda creata nella Fase 4 (ad esempio, tutorial-object-lambda-function) dall'elenco a discesa Lambda function (Funzione Lambda).

    • Scegli Enter ARN (Inserisci ARN), quindi inserisci l'Amazon Resource Name (ARN) della funzione Lambda creata nella Fase 4.

  7. In Lambda function version (Versione delle funzioni Lambda), scegli $LATEST (l'ultima versione della funzione Lambda creata nella Fase 4).

  8. (Facoltativo) Se hai bisogno che la tua funzione Lambda riconosca ed elabori le richieste GET con intestazioni con intervalli e numeri di parte, seleziona Lambda function supports requests using range (La funzione Lambda supporta le richieste che utilizzano l'intervallo) e Lambda function supports requests using part numbers (La funzione Lambda supporta le richieste che utilizzano numeri di parte). Altrimenti, deselezionare queste due caselle di controllo.

    Per ulteriori informazioni sull'utilizzo di intervalli o numeri di parte con S3 Object Lambda, consulta Utilizzo delle intestazioni Range e partNumber.

  9. (Facoltativo) In Payload - optional (Payload - facoltativo), aggiungi il testo JSON per fornire alla tua funzione Lambda ulteriori informazioni.

    Un payload è un testo JSON opzionale che puoi fornire alla tua funzione Lambda come input per tutte le chiamate provenienti da uno specifico punto di accesso S3 Object Lambda. Per personalizzare il comportamento di più punti di accesso Object Lambda che richiamano la stessa funzione Lambda, puoi configurare payload con parametri diversi, estendendo così la flessibilità della funzione stessa.

    Per ulteriori informazioni sul payload, consulta Formato e utilizzo del contesto degli eventi.

  10. (Facoltativo) In Request metrics - optional (Parametri di richiesta - facoltativo), scegli Disable (Disabilita) o Enable (Abilita) per aggiungere il monitoraggio Amazon S3 al punto di accesso Object Lambda. I parametri di richiesta vengono fatturati in base alla tariffa Amazon CloudWatch standard. Per ulteriori informazioni, consultare la pagina dei prezzi di CloudWatch

  11. In Object Lambda Access Point policy - optional (Policy del punto di accesso Object Lambda - facoltativo mantieni l'impostazione di default.

    (Facoltativo) Puoi impostare una policy delle risorse. Questa policy delle risorse concede all'API GetObject l'autorizzazione per utilizzare il punto di accesso Object Lambda specificato.

  12. Mantieni le impostazioni rimanenti sui valori di default, quindi scegliCreate Object Lambda Access Point (Crea punto di accesso Object Lambda).

Fase 7: Visualizzazione dei dati trasformati

S3 Object Lambda è ora pronto a trasformare i tuoi dati per il tuo caso d'uso. In questo tutorial, S3 Object Lambda trasforma tutto il testo dell'oggetto in maiuscolo.

Visualizzazione dei dati trasformati nel punto di accesso S3 Object Lambda

Quando chiedi di recuperare un file tramite il punto di accesso S3 Object Lambda, esegui una chiamata API GetObject a S3 Object Lambda. S3 Object Lambda richiama la funzione Lambda per trasformare i dati, dopodiché restituisce i dati trasformati come risposta alla chiamata API GetObject S3 standard.

  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nel pannello di navigazione a sinistra, scegli Object Lambda Access Points (Punti di accesso Object Lambda).

  3. Nella pagina Object Lambda Access Points (Punti di accesso Object Lambda) scegli il punto di accesso S3 Object Lambda creato nella Fase 6 (ad esempio, tutorial-object-lambda-accesspoint).

  4. Nella scheda Objects (Oggetti) del punto di accesso S3 Object Lambda, seleziona il file con lo stesso nome (ad esempio, tutorial.txt) di quello che hai caricato nel bucket S3 nella Fase 2.

    Questo file deve contenere tutti i dati trasformati.

  5. Per visualizzare i dati trasformati, scegli Open (Apri) o Download (Scarica).

Esegui uno script Python per stampare i dati originali e trasformati

Puoi utilizzare S3 Object Lambda con le tue applicazioni esistenti. A tale scopo, aggiorna la configurazione dell'applicazione in modo da utilizzare l'ARN del nuovo punto di accesso S3 Object Lambda creato nella Fase 6 per recuperare i dati da S3.

Il seguente script Python di esempio stampa sia i dati originali dal bucket S3 sia i dati trasformati dal punto di accesso S3 Object Lambda.

  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nel pannello di navigazione a sinistra, scegli Object Lambda Access Points (Punti di accesso Object Lambda).

  3. Nella pagina Object Lambda Access Points (Punti di accesso Object Lambda) scegli il pulsante di opzione a sinistra del punto di accesso S3 Object Lambda creato nella Fase 6 (ad esempio, tutorial-object-lambda-accesspoint).

  4. Scegli Copy ARN (Copia ARN).

  5. Salva l'ARN per utilizzarlo in un secondo momento.

  6. Scrivi uno script Python sul tuo computer locale per stampare sia i dati originali (ad esempio, tutorial.txt) dal tuo bucket S3 sia i dati trasformati (ad esempio, tutorial.txt) dal punto di accesso S3 Object Lambda. Puoi utilizzare il seguente script di esempio.

    import boto3 s3 = boto3.client('s3') def getObject(bucket, key): objectBody = s3.get_object(Bucket = bucket, Key = key) print(objectBody["Body"].read().decode("utf-8")) print("\n") print('Original object from the S3 bucket:') # Replace the two input parameters of getObject() below with # the S3 bucket name that you created in Step 1 and # the name of the file that you uploaded to the S3 bucket in Step 2 getObject("tutorial-bucket", "tutorial.txt") print('Object transformed by S3 Object Lambda:') # Replace the two input parameters of getObject() below with # the ARN of your S3 Object Lambda access point that you saved earlier and # the name of the file with the transformed data (which in this case is # the same as the name of the file that you uploaded to the S3 bucket # in Step 2) getObject("arn:aws:s3-object-lambda:us-west-2:111122223333:accesspoint/tutorial-object-lambda-accesspoint", "tutorial.txt")
  7. Salva il tuo script Python con un nome personalizzato (ad esempio, tutorial_print.py) nella cartella (ad esempio, object-lambda) che hai creato nella Fase 4 sul computer locale.

  8. Nel terminale locale, esegui il seguente comando dalla root della directory (ad esempio, object-lambda) che hai creato nella Fase 4.

    python3 tutorial_print.py

    Dovresti vedere sia i dati originali sia i dati trasformati (tutto il testo in maiuscolo) attraverso il terminale. Per esempio l'output visualizzato sarà simile al testo seguente.

    Original object from the S3 bucket: Amazon S3 Object Lambda Tutorial: You can add your own code to process data retrieved from S3 before returning it to an application. Object transformed by S3 Object Lambda: AMAZON S3 OBJECT LAMBDA TUTORIAL: YOU CAN ADD YOUR OWN CODE TO PROCESS DATA RETRIEVED FROM S3 BEFORE RETURNING IT TO AN APPLICATION.

Fase 8: Pulizia

Se hai trasformato i dati attraverso S3 Object Lambda solo come esercizio di apprendimento, elimina le risorse AWS che hai allocato per non accumulare più addebiti.

Eliminazione del punto di accesso Object Lambda

  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nel pannello di navigazione a sinistra, scegli Object Lambda Access Points (Punti di accesso Object Lambda).

  3. Nella pagina Object Lambda Access Points (Punti di accesso Object Lambda) scegli il pulsante di opzione a sinistra del punto di accesso S3 Object Lambda creato nella Fase 6 (ad esempio, tutorial-object-lambda-accesspoint).

  4. Scegliere Delete (Elimina).

  5. Conferma di voler eliminare il punto di accesso Object Lambda inserendone il nome nel campo di testo che viene visualizzato, quindi scegli Delete (Elimina).

Eliminazione del punto di accesso S3

  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nel pannello di navigazione a sinistra, scegli Access Points (Punti di accesso).

  3. Passa al punto di accesso creato nella Fase 3 (ad esempio, tutorial-access-point), quindi scegli il pulsante di opzione accanto al nome del punto di accesso.

  4. Scegliere Delete (Elimina).

  5. Conferma di voler eliminare il punto di accesso inserendone il nome nel campo di testo che viene visualizzato, quindi scegli Delete (Elimina).

Eliminazione del ruolo di esecuzione per la funzione Lambda

  1. Accedere alla AWS Management Console e aprire la console di AWS Lambda all'indirizzo https://console.aws.amazon.com/lambda/.

  2. Nel pannello di navigazione a sinistra, scegli Functions (Funzioni).

  3. Scegli la funzione creata nella Fase 4 (ad esempio, tutorial-object-lambda-function).

  4. Nella pagina dei dettagli della funzione Lambda, scegli la scheda Configuration (Configurazione), quindi scegli Permissions (Autorizzazioni) nel pannello di navigazione a sinistra.

  5. In Execution role (Ruolo di esecuzione) scegli il collegamento Role Name (Nome ruolo). Si apre la console IAM.

  6. Nella pagina Summary (Riepilogo) della console IAM del ruolo di esecuzione della funzione Lambda, scegli Delete role (Elimina ruolo).

  7. Nella finestra di dialogo Delete role (Elimina ruolo), scegli Yes, Delete (Sì, elimina).

Eliminazione della funzione Lambda

  1. Nella console AWS Lambda all'indirizzo https://console.aws.amazon.com/lambda/, scegli Functions (Funzioni) nel pannello di navigazione a sinistra.

  2. Seleziona la casella di controllo a sinistra del nome della funzione creata nella Fase 4 (ad esempio, tutorial-object-lambda-function).

  3. Scegli Actions (Operazioni), quindi Delete (Elimina).

  4. Nella finestra di dialogo Delete function (Elimina funzione), scegli Delete (Elimina).

Eliminazione del gruppo di registri CloudWatch

  1. Aprire la console CloudWatch all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nel pannello di navigazione a sinistra, scegli Log groups (Gruppi di registri).

  3. Individua il gruppo di registri il cui nome termina con la funzione Lambda creata nella Fase 4( ad esempio, tutorial-object-lambda-function).

  4. Seleziona la casella di controllo a sinistra del nome del gruppo di registri.

  5. Scegli Actions (Operazioni), quindi scegli Delete log group(s) (Elimina gruppi di registri).

  6. Nella finestra di dialogo Delete log group(s) (Elimina gruppo/i di log) scegli Delete (Elimina).

Eliminazione del file originale nel bucket S3 di origine

  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).

  3. Nell'elenco Bucket name (Nome bucket) scegli il nome del bucket su cui hai caricato il file originale nella Fase 2 (ad esempio, tutorial-bucket).

  4. Seleziona la casella di controllo a sinistra del nome dell'oggetto da eliminare (ad esempio, tutorial.txt).

  5. Scegliere Delete (Elimina).

  6. Nella pagina Delete objects (Elimina oggetti), nella sezione Permanently delete objects? (Eliminare definitivamente gli oggetti?) conferma che desideri eliminare questo oggetto inserendo permanently delete nella casella di testo.

  7. Scegliere Delete objects (Elimina oggetti).

Eliminazione del bucket S3 di origine

  1. Accedi alla AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

  2. Nel pannello di navigazione a sinistra, scegli Buckets (Bucket).

  3. Nell'elenco Buckets (Bucket) seleziona il pulsante di opzione accanto al nome del bucket creato nella Fase 1 (ad esempio, tutorial-bucket).

  4. Scegliere Delete (Elimina).

  5. Nella pagina Delete bucket (Elimina bucket) conferma che desideri eliminare il bucket inserendone il nome nel campo di testo e quindi scegli Delete bucket (Elimina bucket).

Eliminazione dell'utente IAM

  1. Accedi alla AWS Management Console e apri la console IAM all'indirizzo https://console.aws.amazon.com/iam/.

  2. Nel pannello di navigazione a sinistra, scegli Users (Utenti), quindi selezionare la casella di controllo accanto al nome utente che desideri eliminare.

  3. Nella parte superiore della pagina, scegli Delete (Elimina).

  4. Nella casella di dialogo Delete user name? (Eliminare nome utente?) inserisci il nome utente nel campo di inserimento del testo per confermare l'eliminazione dell'utente. Scegliere Delete (Elimina).

Fasi successive

Dopo aver completato questo tutorial, puoi personalizzare la funzione Lambda per il tuo caso d'uso in modo da modificare i dati restituiti dalle richieste GET S3 standard.

Di seguito è riportato un elenco di casi d'uso comuni per S3 Object Lambda:

  • Mascheramento dei dati sensibili per la sicurezza e la conformità.

    Per ulteriori informazioni, consulta Tutorial: rilevamento e oscuramento dei dati PII con S3 Object Lambda e Amazon Comprehend.

  • Filtraggio di determinate righe di dati per fornire informazioni specifiche.

  • Arricchimento dei dati con informazioni provenienti da altri servizi o database.

  • Conversione tra formati di dati, come la conversione di XML in JSON per la compatibilità delle applicazioni.

  • Compressione o decompressione dei file durante il download.

  • Ridimensionamento delle immagini e creazione della filigrana.

  • Implementazione di regole di autorizzazione personalizzate per accedere ai dati.

Per ulteriori informazioni su S3 Object Lambda, consulta Trasformazione di oggetti con S3 Object Lambda.