AWS Lambda - Funzione in Python

In questo capitolo, creeremo una semplice funzione AWS Lambda in Python e ne comprenderemo i concetti di lavoro seguendo i dettagli.

Prima di procedere alla creazione di una funzione Lambda in AWS, abbiamo bisogno del supporto del toolkit AWS per Python. A tal fine, seguire i passaggi indicati di seguito e osservare gli screenshot corrispondenti allegati:

Passo 1

Accedi alla console AWS e crea la funzione Lambda e seleziona la lingua come Python.

Passo 2

Ora fai clic su Create functione inserisci i dettagli per creare un semplice AWS Lambda in Python. Questo codice restituisce il messaggioHello from Lambda using Python e sembra come mostrato qui -

Passaggio 3

Ora salva le modifiche e prova il codice per vedere l'output. Dovresti vedere l'output ei log seguenti quando lo provi nella console AWS utilizzando il pulsante di test dall'interfaccia utente.

Passaggio 4

Ora puoi scrivere codice all'interno di qualsiasi editor o IDE per Python. Qui stiamo usando il codice di Visual Studio per scrivere il codice. Successivamente dovresti comprimere il file e caricarlo nella console AWS.

Qui abbiamo zippato il codice e lo abbiamo utilizzato nella console AWS.

Passaggio 5

Ora seleziona Upload a .ZIP file opzione come mostrato di seguito -

Dettagli del gestore per Python

Notare che il gestore deve essere il nome del file seguito dal nome della funzione. Nel caso precedente, il nome del nostro file èhellopython.py e il nome della funzione è my_handler; così sarà il gestore hellopython.my_handler.

Una volta completato il caricamento e salvate le modifiche, vengono effettivamente visualizzati i dettagli del file zip nell'editor online nella console AWS Lambda. Ora, testiamo il codice per vedere l'output ei log.

Ora, comprendiamo i dettagli della funzione Lambda utilizzando il seguente codice di esempio:

def my_handler(event, context):
   return "aws lambda in python using zip file"

Nel codice sopra, il nome della funzione my_handler ha 2 parametri, evento e contesto.

Oggetto contesto in Python

L'oggetto contesto fornisce dettagli come il nome della funzione Lambda, il tempo rimanente in millisecondi, l'ID della richiesta, il nome del gruppo di cloud watch, i dettagli del timeout ecc.

I metodi e gli attributi disponibili sull'oggetto contesto sono mostrati nelle tabelle fornite di seguito:

Suor n Nome e descrizione del metodo
1

get_remaining_time_in_millis()

Questo metodo fornisce il tempo rimanente in millisecondi fino a quando la funzione lambda non termina la funzione

Suor n Attributo e descrizione
1

function_name

Questo fornisce il nome della funzione lambda aws

2

function_version

Questo fornisce la versione della funzione aws lambda in esecuzione

3

invoked_function_arn

Questo fornirà i dettagli ARN.

4

memory_limit_in_mb

Questo mostra il limite di memoria aggiunto durante la creazione della funzione lambda

5

aws_request_id

Questo fornisce l'ID richiesta aws.

6

og_group_name

Questo darà il nome del nome del gruppo di cloudwatch

7

log_stream_name

Questo darà il nome del nome del flusso di log di cloudwatch in cui sono scritti i log.

8

identity

Questo fornirà dettagli sul provider di identità cognito amazon quando utilizzato con aws mobile sdk. I dettagli forniti sono i seguenti:

  • identity.cognito_identity_id
  • identity.cognito_identity_pool_id
9

client_context

Questo fornirà i dettagli dell'applicazione client quando viene utilizzato con aws mobile sdk. I dettagli forniti sono i seguenti:

  • client_context.client.installation_id
  • client_context.client.app_title
  • client_context.client.app_version_name
  • client_context.client.app_version_code
  • client_context.client.app_package_name
  • client_context.custom: dispone di valori personalizzati dall'app client mobile
  • client_context.env: contiene dettagli sull'ambiente da AWS Mobile SDK

Vediamo un esempio funzionante in Python che restituisce i dettagli del contesto. Rispettare il codice riportato di seguito -

def my_handler(event, context):
   print("Log stream name:", context.log_stream_name)
   print("Log group name:",  context.log_group_name)
   print("Request ID:",context.aws_request_id)
   print("Mem. limits(MB):", context.memory_limit_in_mb)
   print("Time remaining (MS):", context.get_remaining_time_in_millis())
   return "aws lambda in python using zip file"

Di seguito è riportato l'output corrispondente del codice mostrato sopra:

Registrazione tramite Python

Per registrare le informazioni utilizzando Python, possiamo utilizzare la funzione di stampa o di registrazione disponibile. Usiamo l'esempio di contesto sopra e controlliamo inCloudWatch per vedere se i log vengono stampati. Rispettare il codice seguente:

def my_handler(event, context):
   print("Log stream name:", context.log_stream_name)
   print("Log group name:",  context.log_group_name)
   print("Request ID:",context.aws_request_id)
   print("Mem. limits(MB):", context.memory_limit_in_mb)
   print("Time remaining (MS):", context.get_remaining_time_in_millis())
   return "aws lambda in python using zip file"

L'output di questo codice in CloudWatch è come mostrato di seguito:

Osservare il seguente esempio per comprendere come utilizzare il logger per stampare i log su CloudWatch:

import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)
def my_handler(event, context):
   logger.info('Using logger to print messages to cloudwatch logs')
   return "aws lambda in python using zip file"

L'output per questo sarà come mostrato nello screenshot riportato di seguito -

Gestione degli errori in Python per la funzione Lambda

In questa sezione, vediamo un esempio funzionante che mostra come gestire gli errori in Python. Osserva il pezzo di codice qui fornito -

def error_handler(event, context):
   raise Exception('Error Occured!')

La visualizzazione del registro è come mostrato nell'immagine qui -