开始使用 AWS Lambda 和 Python 2.7

Amazon Web Services (AWS) Lambda 是一种“无服务器”计算服务,可执行任意 Python 代码以响应开发人员定义的事件,例如入站 API 调用或文件上传到 AWS S3。请注意,AWS Lambda 与 Python 中用于创建匿名函数的 lambda 关键字无关,它只是碰巧与现有 Python 语言功能名称冲突的产品名称。

在本教程中,我们将学习如何快速编写和运行 Lambda 函数,以执行一些简单的 Python 2.7 代码并处理环境变量。然后可以修改代码以构建更复杂的 Python 应用程序。

注意:AWS 在 2021 年终止了对 Python 2.7 Lambda 函数的支持,并且 Python 2.7 不再获得支持,因此您实际上应该使用 Python 3.8 或更高版本。

我们需要的工具

除了 Web 浏览器之外,我们不需要任何本地开发环境工具来完成本演练,因为所有工作都将在 AWS 上进行。

获取新的免费套餐 Amazon Web Services 账户或使用您现有的 AWS 账户。

Lambda 的第一步

在您的网络浏览器中前往 AWS Lambda 登录页面。登录您的帐户,或注册一个免费套餐的新帐户,这样您就无需付费。

AWS Lambda 着陆页。

如果您在登录后没有直接进入 Lambda 控制台页面,您将看到主控制台。 AWS 提供的服务数量惊人(似乎每周都在增加),因此最好的解决方法是选择搜索文本框并搜索“lambda”,如下面的屏幕截图所示。

在仪表板文本框中搜索 lambda。

按“创建 Lambda 函数”按钮,您将看到“选择蓝图”页面。

选择蓝图 Lambda 屏幕,您应该在其中选择空白函数。

选择“空白函数”。下一个屏幕提供了选择“触发器”的选项,这就是 Lambda 函数的执行方式。触发器是一些与其他 AWS 服务集成的事件,可以通过 API 或设备(例如 Alexa)在外部公开。

配置触发屏幕,我们暂时不会使用它,因为我们将手动启动我们的 Lambda。

但是,我们不打算为此功能设置触发器,因为我们稍后可以在将 Lambda 连接到触发器之前手动测试它。将触发器图标留空,然后单击“下一步”按钮移动到下一个屏幕.

空白的 Lambda 配置屏幕。

现在我们可以在屏幕上输入新 Lambda 的特定配置和代码。

编写我们的 Python 代码

首先为您的 Lambda 函数输入名称,例如“my_first_python_lambda”和描述。描述字段是可选的,但当您开始定期使用 Lambda 以保持所有功能正常时,它会很方便。在运行时下拉列表中,选择 Python 2.7 作为执行语言。

输入名称、描述并在 Lambda 配置屏幕上选择 Python 2.7。

在“运行时”下拉列表下方,您会看到一个用于编写代码的大文本框。我们还可以选择使用我们的 Python 应用程序上传 ZIP 文件,这比简单的测试 Lambda 更方便。但是,对于我们简单的 starterLambda 应用程序,您可以复制或键入以下代码(或从此 GitHub 存储库复制它)。确保替换文本框中已有的内容。

import os


def lambda_handler(event, context):
    what_to_print = os.environ.get("what_to_print")
    how_many_times = int(os.environ.get("how_many_times"))

    # make sure what_to_print and how_many_times values exist
    if what_to_print and how_many_times > 0:
        for i in range(0, how_many_times):
            print(what_to_print)
        return what_to_print
    return None

以上代码具有所需的lambda_handler 函数定义,它为 Lambda 服务提供了一个挂钩,以了解从哪里开始执行 Python 代码。当您使用此服务时,将 lambda_handler 视为 main 函数。

我们的 Python 代码期望并读取两个环境变量,然后代码根据 how_many_times 变量中定义的数量打印零到多次消息。如果打印了消息,则函数返回 what_to_print 字符串,如果未打印任何消息,则返回 None

在代码输入文本框的正下方是可以设置的环境变量键值对。我们的代码将使用两个环境变量,名为what_to_printhow_many_times

输入名为what_to_printhow_many_times 的键,然后输入它们的值。 what_to_print 的值使用字符串消息,how_many_times 使用大于 0 的整数。我们的 Python 代码的错误处理不是很健壮,因此 how_many_times 变量中的数字以外的值将导致脚本在执行时抛出错误。

输入 what_to_print 和 how_many_times 的确切键以及相应的值作为环境变量。

我们的代码和环境变量已准备就绪,我们只需要再设置一些特定于 AWS 的设置即可测试 Lambda 函数。

执行 Lambda

在环境变量下方向下滚动到“Lambda 函数处理程序和角色”部分。本节包含最后几个必需的配置项。保留默认处理程序,它应该是 lambda_function.lambda_handler。从下拉列表中选择“从模板创建新角色”,然后在“角色名称”字段中输入“dynamodb_permissions”。在“策略模板”下选择“简单微服务权限”。

对于最终配置,保留默认处理程序,从简单微服务权限模板创建一个新角色,并使用唯一名称保存它。

“简单微服务权限”使我们的 Lambda 能够访问 AWS DynamoDB。我们不会在本教程中使用 DynamoDB,但在使用 Lambda 时,它作为永久或临时存储非常有用。

现在我们的代码和配置已经到位,单击页面右下角的“下一步”按钮。

我们可以查看配置期间设置的值。

审查屏幕将向我们展示我们的配置设置。向下滚动到底部并单击“创建函数”按钮继续。

点击创建函数按钮继续。

我们应该会在下一页的“保存并测试”按钮下方看到一条成功消息。

保存并测试按钮。

按“测试”按钮执行 Lambda。 Lambda 提示我们提供一些数据来模拟会触发我们函数的事件。选择“Hello World”示例事件模板,其中包含一些示例键。我们的 Lambda 将不会在其执行中使用这些键,因此它们是什么并不重要。单击模态底部的“保存并测试”按钮。

我们的 Lambda 执行的示例事件模板。

向下滚动到“执行结果”部分,我们可以在其中看到我们的输出。

运行我们的 Lambda 函数的执行结果。

我们得到了显示我们函数返回值的日志输出。在这种情况下,它是来自 what_to_print 的字符串消息。我们还可以在下面看到我们的打印函数产生了五次输出。

下一步是什么?

太棒了,您刚刚在 AWS Lambda 上配置、编写并执行了您的第一个 Python 2.7 代码!当您将触发器连接到 Lambda 时,它的真正威力就会发挥出来,这样您的代码就会根据事件执行。我们将在下一个教程中了解这一点。

您还可以使用 Python 和 Lambda 做什么?查看 AWS Lambda 页面以获取更多示例和教程。

有问题吗?通过 Twitter@fullstackpython 或@mattmakai 与我联系。我也在 GitHub 上,用户名是 mattmakai。

这篇文章有问题吗?在 GitHub 上创建此页面的源代码。

赞(0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏