- AWS Lambda 教程
- AWS Lambda - 首页
- AWS Lambda - 概述
- AWS Lambda - 环境设置
- AWS Lambda - 简介
- 构建 Lambda 函数
- NODEJS 函数
- Java 函数
- Python 函数
- Go 函数
- C# 函数
- 配置 Lambda 函数
- 使用 AWS 控制台创建和部署
- 使用 AWS CLI 创建和部署
- 使用 Serverless Framework 创建和部署
- AWS 执行和调用 Lambda 函数
- 删除 Lambda 函数
- 使用 Amazon API Gateway
- Lambda 函数与 Amazon S3
- Lambda 函数与 Amazon DynamoDB
- Lambda 函数与定时事件
- Lambda 函数与 Amazon SNS
- Lambda 函数与 CloudTrail
- Lambda 函数与 Amazon Kinesis
- Lambda 函数与自定义用户应用程序
- AWS Lambda@Edge 与 CloudFront
- 使用 CloudWatch 进行监控和故障排除
- AWS Lambda - 附加示例
- AWS Lambda 有用资源
- AWS Lambda - 快速指南
- AWS Lambda - 有用资源
- AWS Lambda - 讨论
AWS Lambda – Python 函数
本章将创建一个简单的 Python AWS Lambda 函数,并详细了解其工作原理。
在开始在 AWS 中创建 Lambda 函数之前,我们需要 Python 的 AWS 工具包支持。为此,请按照以下步骤操作,并观察相应的附加屏幕截图:
步骤 1
登录 AWS 控制台并创建 Lambda 函数,选择 Python 作为语言。
步骤 2
现在,单击创建函数按钮并输入创建简单的 Python AWS Lambda 的详细信息。此代码返回消息Hello from Lambda using Python,如下所示:
步骤 3
现在,保存更改并测试代码以查看输出。当您使用 UI 中的测试按钮在 AWS 控制台中对其进行测试时,您应该会看到以下输出和日志。
步骤 4
现在,您可以在任何 Python 编辑器或 IDE 中编写代码。在这里,我们使用 Visual Studio Code 编写代码。您稍后应压缩文件并将其上传到 AWS 控制台。
在这里,我们压缩了代码并使用 AWS 控制台。
步骤 5
现在,选择上传 .ZIP 文件选项,如下所示:
Python 的处理程序详细信息
请注意,处理程序必须是文件名后跟函数名。在上述情况下,我们的文件名是hellopython.py,函数名是my_handler;因此,处理程序将是hellopython.my_handler。
上传完成后并保存更改后,它实际上会在 AWS Lambda 控制台的在线编辑器中显示 zip 文件的详细信息。现在,让我们测试代码以查看输出和日志。
现在,让我们使用以下示例代码了解 Lambda 函数的详细信息:
def my_handler(event, context): return "aws lambda in python using zip file"
在上面的代码中,函数名 my_handler 有两个参数,event 和 context。
Python 中的 Context 对象
Context 对象提供诸如 Lambda 函数名称、剩余时间(毫秒)、请求 ID、CloudWatch 组名称、超时详细信息等详细信息。
下表显示了 context 对象上可用的方法和属性:
序号 | 方法名称和说明 |
---|---|
1 | get_remaining_time_in_millis() 此方法以毫秒为单位提供 Lambda 函数终止函数之前的剩余时间 |
序号 | 属性和说明 |
---|---|
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 | log_group_name 这将提供 CloudWatch 组名称。 |
7 | log_stream_name 这将提供写入日志的 CloudWatch 日志流名称。 |
8 | identity 当与 AWS Mobile SDK 一起使用时,这将提供有关 Amazon 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 记录信息,我们可以使用可用的 print 或 logger 函数。让我们使用上面关于上下文的示例,并在 CloudWatch 中检查是否打印了日志。请观察以下代码:
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 中的输出如下所示:
请观察以下示例,以了解有关使用 logger 将日志打印到 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"
此代码的输出将如以下屏幕截图所示:
Python 中的 Lambda 函数错误处理
在本节中,让我们来看一个有效的示例,该示例显示如何在 Python 中处理错误。请观察此处提供的代码段:
def error_handler(event, context): raise Exception('Error Occured!')
日志显示如下图所示: