AWS Lambda - Fonction en Python

Dans ce chapitre, nous allons créer une fonction AWS Lambda simple en Python et comprendre ses concepts de fonctionnement en suivant les détails.

Avant de commencer à créer une fonction Lambda dans AWS, nous avons besoin de la prise en charge de la boîte à outils AWS pour Python. Pour cela, suivez les étapes ci-dessous et observez les captures d'écran correspondantes ci-jointes -

Étape 1

Connectez-vous à la console AWS, créez une fonction Lambda et sélectionnez le langage Python.

Étape 2

Maintenant, cliquez sur Create functionet entrez les détails de la création d'un AWS Lambda simple en Python. Ce code renvoie le messageHello from Lambda using Python et ressemble à celui montré ici -

Étape 3

Maintenant, enregistrez les modifications et testez le code pour voir la sortie. Vous devriez voir la sortie et les journaux suivants lorsque vous le testez dans la console AWS à l'aide du bouton de test de l'interface utilisateur.

Étape 4

Désormais, vous pouvez écrire du code dans n'importe quel éditeur ou dans un IDE pour Python. Ici, nous utilisons le code Visual Studio pour écrire le code. Vous devez ensuite compresser le fichier et le télécharger dans la console AWS.

Ici, nous avons compressé le code et utilisé la console AWS.

Étape 5

Maintenant, sélectionnez Upload a .ZIP file option comme indiqué ci-dessous -

Détails du gestionnaire pour Python

Notez que le gestionnaire doit être le nom du fichier suivi du nom de la fonction. Dans le cas ci-dessus, notre nom de fichier esthellopython.py et le nom de la fonction est my_handler; donc le gestionnaire sera hellopython.my_handler.

Une fois le téléchargement terminé et les modifications enregistrées, les détails du fichier zip sont affichés dans l'éditeur en ligne de la console AWS Lambda. Maintenant, testons le code pour voir la sortie et les journaux.

Maintenant, laissez-nous comprendre les détails de la fonction Lambda à l'aide de l'exemple de code suivant -

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

Dans le code ci-dessus, le nom de la fonction my_handler a 2 paramètres, événement et contexte.

Objet de contexte en Python

L'objet de contexte donne des détails tels que le nom de la fonction Lambda, le temps restant en millisecondes, l'identifiant de la demande, le nom du groupe de surveillance cloud, les détails du délai d'expiration, etc.

Les méthodes et attributs disponibles sur l'objet de contexte sont indiqués dans les tableaux ci-dessous -

Sr. Non Nom et description de la méthode
1

get_remaining_time_in_millis()

Cette méthode donne le temps restant en millisecondes jusqu'à ce que la fonction lambda termine la fonction

Sr. Non Attribut et description
1

function_name

Cela donne le nom de la fonction lambda aws

2

function_version

Cela donne la version de l'exécution de la fonction lambda aws

3

invoked_function_arn

Cela donnera les détails de l'ARN.

4

memory_limit_in_mb

Cela montre la limite de mémoire ajoutée lors de la création de la fonction lambda

5

aws_request_id

Cela donne l'ID de demande aws.

6

og_group_name

Cela donnera le nom du nom du groupe cloudwatch

sept

log_stream_name

Cela donnera le nom du nom du flux de journal cloudwatch où les journaux sont écrits.

8

identity

Cela donnera des détails sur le fournisseur d'identité amazon cognito lorsqu'il est utilisé avec aws mobile sdk. Les détails donnés sont les suivants -

  • identity.cognito_identity_id
  • identity.cognito_identity_pool_id
9

client_context

Cela détaille l'application client lorsqu'elle est utilisée avec aws mobile sdk. Les détails donnés sont les suivants -

  • 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 - il a dict des valeurs personnalisées de l'application client mobile
  • client_context.env - il contient des détails d'environnement provenant du kit SDK AWS Mobile

Voyons un exemple de travail en Python qui génère les détails du contexte. Observez le code ci-dessous -

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"

La sortie correspondante du code ci-dessus est donnée ci-dessous -

Journalisation à l'aide de Python

Pour enregistrer les informations en utilisant Python, nous pouvons utiliser la fonction d'impression ou de journalisation disponible. Utilisons l'exemple de contexte ci-dessus et vérifions dansCloudWatch pour voir si les journaux sont imprimés. Respectez le code suivant -

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"

La sortie de ce code dans CloudWatch est comme indiqué ci-dessous -

Observez l'exemple suivant pour comprendre l'utilisation de l'enregistreur pour imprimer des journaux sur 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"

La sortie pour cela sera comme indiqué dans la capture d'écran ci-dessous -

Gestion des erreurs dans Python pour la fonction Lambda

Dans cette section, voyons un exemple fonctionnel qui montre comment gérer les erreurs en Python. Observez le morceau de code donné ici -

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

L'affichage du journal est comme indiqué dans l'image ici -