在本章中,我们将在Python中创建一个简单的AWS Lambda函数,并详细了解其工作概念.
在继续开始在AWS中创建Lambda函数之前,我们需要AWS工具包支持Python.为此,请按照下面给出的步骤进行操作,并观察附加的相应屏幕截图;
步骤1
登录AWS控制台并创建Lambda函数和选择语言为Python.
第2步
现在,单击创建功能按钮,然后输入在Python中创建简单AWS Lambda的详细信息.此代码返回消息使用Python从Lambda发送Hello ,看起来如下所示 :
步骤3
现在,保存更改并测试代码以查看输出.使用UI中的测试按钮在AWS控制台中测试时,您应该看到以下输出和日志.
步骤4
现在,您可以在任何编辑器或Python的IDE中编写代码.在这里,我们使用visual studio代码编写代码.您应该稍后压缩文件并在AWS控制台中上传.
在这里,我们已经压缩了代码并使用了AWS控制台.
步骤5
现在,选择上传.ZIP文件选项,如下所示 :
Python的处理程序详细信息
请注意,处理程序必须是文件的名称,后跟函数的名称.在上面的例子中,我们的文件名是 hellopython.py ,函数的名称是 my_handler; 所以处理程序将是 hellopython.my_handler .
上传完成并保存更改后,它实际上会在AWS Lambda控制台的在线编辑器中显示zip文件的详细信息.现在,让我们测试代码以查看输出和日志.
现在,让我们使用以下示例代码&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身份提供者.给出的详细信息如下 :
|
9 | client_context 这将与aws mobile 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"
上面显示的代码的相应输出在下面和下面给出;
使用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中此代码的输出如下所示 :
观察以下示例以了解使用记录器将日志打印到CloudWatch :
import logginglogger = 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"
此输出将如下面的截图所示 :
Python中Lambda函数的错误处理
在本节中,让我们看一个工作示例,该示例演示如何在Python中处理错误.观察这里给出的代码和减号;
def error_handler(event, context): raise Exception('Error Occured!')
日志显示如图所示 :