- AWS Lambda 教程
- AWS Lambda - 主页
- AWS Lambda - 概述
- AWS Lambda - 环境设置
- AWS Lambda - 简介
- 构建 Lambda 函数
- NODEJS 中的函数
- Java 中的函数
- Python 中的函数
- Go 中的函数
- C# 中的函数
- 配置 Lambda 函数
- 使用 AWS 控制台创建和部署
- 使用 AWS CLI 创建和部署
- 使用无服务器框架创建和部署
- AWS 执行和调用 Lambda 函数
- 删除 Lambda 函数
- 使用 Amazon API Gateway
- 使用 Amazon S3 的 Lambda 函数
- 使用 Amazon DynamoDB 的 Lambda 函数
- 具有预定事件的 Lambda 函数
- 带有 Amazon SNS 的 Lambda 函数
- 带有 CloudTrail 的 Lambda 函数
- 使用 Amazon Kinesis 的 Lambda 函数
- 具有自定义用户应用程序的 Lambda 函数
- AWS Lambda@Edge 与 CloudFront
- 使用 Cloudwatch 进行监控和故障排除
- AWS Lambda - 其他示例
- AWS Lambda 有用资源
- AWS Lambda - 快速指南
- AWS Lambda - 有用的资源
- AWS Lambda - 讨论
AWS Lambda – Python 中的函数
在本章中,我们将使用 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 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 有 2 个参数:事件和上下文。
Python 中的上下文对象
Context 对象提供 Lambda 函数名称、剩余时间(以毫秒为单位)、请求 ID、云监视组名称、超时详细信息等详细信息。
上下文对象上可用的方法和属性如下表所示 -
先生编号 | 方法名称和描述 |
---|---|
1 | get_remaining_time_in_millis() 此方法给出 lambda 函数终止该函数之前的剩余时间(以毫秒为单位) |
先生编号 | 属性及描述 |
---|---|
1 | 函数名 这给出了 aws lambda 函数名称 |
2 | 函数版本 这给出了 aws lambda 函数执行的版本 |
3 | 调用函数_arn 这将提供 ARN 详细信息。 |
4 | 内存限制in_mb 这显示了创建 lambda 函数时添加的内存限制 |
5 | aws_请求_id 这给出了 aws 请求 ID。 |
6 | og_组_名称 这将给出 cloudwatch 组的名称 |
7 | 日志流名称 这将给出写入日志的 cloudwatch 日志流名称。 |
8 | 身份 这将提供与 aws mobile sdk 一起使用时有关 amazon cognito 身份提供商的详细信息。详细信息如下 -
|
9 | 客户端上下文 这将是与 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 中此代码的输出如下所示 -
观察以下示例以了解如何使用记录器将日志打印到 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!')
日志显示如下图所示 -