五分钟的云Lambda函数
构建一个无服务器函数很容易。AWS将他们的无服务器函数称为Lambdas。让我们在AWS上用Python建立一个无服务器函数。
无服务器计算是非常酷的。
你需要在云中完成一些事情。它可能是存储一个GPS位置。或者根据一些查询参数从数据库中提取一些数据。但建立一个完整的服务器实例将是多余的。你只需要一个API端点来接受查询并吐出结果。
你需要一个无服务器函数。
构建一个无服务器函数很容易。让我们在AWS上用Python构建一个无服务器函数。
AWS称其无服务器函数为Lambdas,因此我将在本教程中交替使用这些术语。
AWS账户
首先,你需要一个AWS账户。如果你还没有,先不要开始计时。创建账户可能比创建Lambda更难。
登录到AWS控制台
如果你已经用AWS账户启动并运行,你可以直接进入控制台。
在我的控制台,Lambda出现在靠近顶部的位置,因为我最近使用了它。
然而,如果你需要,你可以点击查看所有服务 来找到它。
它就在顶部附近,在计算之下。
点击Lambda,让我们创建一个服务。
新建Lambda
这将带你到你的Lambdas列表。
下面是我的Lambda的样子。
我有一个来自Alexa技能的旧函数。如果你以前没有创建过Lambda,你会看到一个空列表。
点击 "创建函数"按钮。
现在,终于到了定义一个函数的时候了。
这里有你的选择:
- 选择从头开始创作。
- 给你的函数起个名字。
- 从运行时间下拉菜单中选择Python 3.9。
这将给我们一个单一的Python函数。当网络客户端调用我们的Lambda时,AWS将调用它。
然而,我们还需要设置一个东西,使该函数可以从标准的网络客户端调用。
点击高级设置。
勾选启用函数URL的方框**。**这将为你的函数提供一个网络地址。
接下来,为授权类型选择NONE 。
正如警告所说,这不是一个安全的配置,你不应该把它用在访问安全数据的函数上,或者作为攻击其他服务的载体。因为这只是一个演示应用程序,所以现在还可以。
点击 "创建函数",我们将查看我们的创建,并对它进行试运行。
这是你的函数信息页面应该是这样的。
试运行
在右侧,你可以看到你的函数的公共URL。点击它。
这就从浏览器向你的函数发送了一个GET请求。
从技术上讲,我们可以在这里停止计时。你已经创建了一个无服务器函数。但让我们再进一步,让它处理一个更复杂的请求。
邮递员
接下来我将使用Postman来完成这个部分。如果你还没有账户,就去创建吧。我们在这里要做的一切都可以用免费登录。
让我们把Postman指向新函数。
创建一个新的请求。将你的函数URL粘贴在URL部分,然后点击发送。
Postman在底部显示结果。所以,我们已经用Postman做了和浏览器一样的请求。
现在让我们来找点乐子。
将JSON数据发布到Lambda函数中
如果我们想让我们的函数做一些有趣的事情,我们需要向它发送一些数据。
将你的请求类型切换为POST,并给你的请求一个主体。
现在,如果我们发送这个,什么都不会改变。我们需要做一些代码的修改。
下面是代码:
import json
def lambda_handler(event, context): request = event['body'] request_obj = json.loads(request) return { 'statusCode': 200, 'headers': { 'Content-Type': 'application/json' }, 'body': "{}, {} {}!".format(request_obj['Greeting'], request_obj['Title'], request_obj['Name']) }
当你从一个函数URL调用Lambda时,请求数据会作为body字段包含在事件对象中。由于它是一个原始字符串,我们需要把它从事件中拉出来,用json.load转换为一个对象。
然后我们就可以访问这些字段并使用它们来构建一个新的字符串。
把这段代码粘贴进去,然后进行部署。
现在,发送新的请求。
成功了!你建立了一个Lambda。
所以,你可以看到,在AWS中,五分钟内构建无服务器函数是很容易的。
在接下来的教程中,我们将看到它们还能做什么。