AWS Lambda – Python 中的函数

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

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

步骤 1

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

Lambda Function Python

步骤 2

现在,单击创建函数按钮并输入在 Python 中创建简单 AWS Lambda 的详细信息。此代码返回消息 Hello from Lambda using Python,如下所示 −

Create Function Python

步骤 3

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

AWS_console_Python

步骤 4

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

IDE for Python。

在这里,我们压缩了代码并使用它 AWS 控制台。

步骤 5

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

上传文件

Python 的处理程序详细信息

请注意,处理程序必须是文件的名称,后跟函数的名称。在上述情况下,我们的文件名是 hellopython.py,函数名称是 my_handler;,因此处理程序将是 hellopython.my_handler

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

Handler Details Python

现在,让我们使用以下示例代码了解 Lambda 函数的详细信息 −

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

在上面的代码中,函数名称 my_handler 有 2 个参数,event 和 context。

Python 中的 Context 对象

Context 对象提供详细信息,例如 Lambda 函数的名称、剩余时间(以毫秒为单位)、请求 ID、云监视组名称、超时详细信息等。

下表显示了 context 对象上可用的方法和属性 −

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 一起使用时 amazon 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 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"

上面显示的代码的相应输出如下所示 −

Corresponding Output

使用 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 中的输出如下所示 −

Logging using Python

观察以下示例,了解如何使用 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"

此操作的输出将如下面的屏幕截图所示 −

Cloudwatch Python

Python 中 Lambda 函数的错误处理

在本节中,让我们看一个实际示例,该示例展示了如何在 Python 中处理错误。观察此处给出的代码片段 −

def error_handler(event, context):
   raise Exception('Error Occured!')
Python 中的错误处理

日志显示如下图所示 −

Python 输出中的错误处理