AWS Lambda - Python中的函数

在本章中,我们将在Python中创建一个简单的AWS Lambda函数,并详细了解其工作概念.

在继续开始在AWS中创建Lambda函数之前,我们需要AWS工具包支持Python.为此,请按照下面给出的步骤进行操作,并观察附加的相应屏幕截图;

步骤1

登录AWS控制台并创建Lambda函数和选择语言为Python.

Lambda Function Python

第2步

现在,单击创建功能按钮,然后输入在Python中创建简单AWS Lambda的详细信息.此代码返回消息使用Python从Lambda发送Hello ,看起来如下所示 :

创建函数Python

步骤3

现在,保存更改并测试代码以查看输出.使用UI中的测试按钮在AWS控制台中测试时,您应该看到以下输出和日志.

AWS_console_Python

步骤4

现在,您可以在任何编辑器或Python的IDE中编写代码.在这里,我们使用visual studio代码编写代码.您应该稍后压缩文件并在AWS控制台中上传.

用于Python的IDE

在这里,我们已经压缩了代码并使用了AWS控制台.

步骤5

现在,选择上传.ZIP文件选项,如下所示 :

上传文件

Python的处理程序详细信息

请注意,处理程序必须是文件的名称,后跟函数的名称.在上面的例子中,我们的文件名是 hellopython.py ,函数的名称是 my_handler; 所以处理程序将是 hellopython.my_handler .

上传完成并保存更改后,它实际上会在AWS Lambda控制台的在线编辑器中显示zip文件的详细信息.现在,让我们测试代码以查看输出和日志.

Handler Details Python

现在,让我们使用以下示例代码&minus来理解Lambda函数的详细信息;

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

在上面的代码中,函数名称my_handler有2个参数,事件和上下文.

Python中的上下文对象

上下文对象提供了一些详细信息,如Lambda函数的名称,剩余时间(以毫秒为单位),请求ID,云监视组名,超时详细信息等.

上下文给出的表中显示了上下文对象可用的方法和属性;<

Sr.No方法名称&说明
1

get_remaining_time_in_millis()

此方法给出剩余时间(以毫秒为单位),直到lambda函数终止函数

Sr.No属性&说明
1

function_name

这给出了aws lambda函数名称

2

function_version

这给出了执行aws lambda函数的版本

3

invoked_function_arn

这将提供ARN详细信息.

4

memory_limit_in_mb

这显示添加的内存限制创建lambda函数时

5

aws_request_id

这给出了aws请求ID.

6

og_group_name

这将给出cloudwatch组名称的名称

7

log_stream_name

这将给出写日志的cloudwatch日志流名称.

8

identity

这将提供有关亚马逊的详细信息与aws mobile sdk一起使用时的cognito身份提供者.给出的详细信息如下 :

  • identity.cognito_identity_id

  • identity.cognito_identity_pool_id

9

client_context

这将与aws mobile sdk一起使用时提供客户端应用程序的详细信息.给出的详细信息如下 :

  • 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  - 它具有来自移动客户端应用程序的自定义值的字典

  • client_context.env  - 它具有来自AWS的环境详细信息移动SDK

让我们看一下Python中的一个工作示例输出上下文详细信息.观察下面给出的代码 :

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"

上面显示的代码的相应输出在下面和下面给出;

Corresponding Output

使用Python记录

要使用Python记录信息,我们可以使用打印或记录功能.让我们使用上面的上下文示例并检查inCloudWatch以查看是否打印了日志.请注意以下代码 :

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"

CloudWatch中此代码的输出如下所示 :

Logging使用Python

观察以下示例以了解使用记录器将日志打印到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"

此输出将如下面的截图所示 :

Cloudwatch Python

Python中Lambda函数的错误处理

在本节中,让我们看一个工作示例,该示例演示如何在Python中处理错误.观察这里给出的代码和减号;

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


错误处理Python

日志显示如图所示 :

Python输出中的错误处理