Serverless 部署功能
创建新项目
导航到要在其中创建要部署到Serverless的第一个项目的新文件夹。在该文件夹中,运行以下命令-
sls create--template aws-python3
此命令将创建样板代码,用于使用Serverless和 Python 运行时部署 lambda 函数。
请注意,您也可以使用其他运行时。运行
sls create--help 以获取所有模板的列表。
创建样板代码后,您将在文件夹中看到两个文件:handler.py 和 serverless.yml。 handler.py 是包含 lambda 函数代码的文件。 serverless.yml 是告诉 AWS 如何创建 lambda 函数的文件。配置文件或设置文件将成为本教程几章的重点。我们先来看看handler.py文件。
import json
def hello(event, context):
body = {
"message": "Go Serverless v1.0! Your function executed successfully!", "input": event
}
response = {
"statusCode": 200, "body": json.dumps(body)
}
return response
# Use this code if you don't use the http event with the LAMBDA-PROXY
# integration
"""
return {
"message": "Go Serverless v1.0! Your function executed successfully!", "event": event
}
"""
它包含一个函数
hello。这个函数接受两个参数:事件和上下文。这两个都是任何 AWS Lambda 函数的必需参数。每当调用 lambda 函数时,lambda 运行时都会将两个参数传递给函数-事件和上下文。
event 参数包含要处理的 lambda 函数的数据。例如,如果您通过 REST AP 触发您的 lambda 函数I,无论您在路径参数或 API 主体中发送的任何数据,都将发送到事件参数中的 lambda 函数。在后面的章节中会有更多的介绍。需要注意的重要一点是,事件通常是 python
dict 类型,但也可以是
str、
float、
int、
list 或
NoneType 类型。
context 对象是在运行时传递给 lambda 函数的另一个参数。它不经常使用。 AWS 官方文档指出,
此对象提供了提供有关调用、函数和运行时环境信息的方法和属性。您可以阅读有关
事件 和
的更多信息上下文 对象此处.
该功能非常简单。它只是返回一条状态代码为 200 的消息。如果我们不使用带有 LAMBDA-PROXY 设置的 HTTP 事件,则应使用底部的注释。更多关于 API 触发的 lambda 章节的内容。
现在,让我们看看 serverless.yml 文件。这是一个被大量评论的文件。这些评论对于开始使用Serverless的人非常有用。我们鼓励您彻底阅读评论。在接下来的章节中,我们将研究许多与 serverless.yml 相关的概念。让我们在这里略读一下基本概念。
如果您在删除注释后查看 serverless.yml 文件,它会是这样的-
service: aws-serverless
frameworkVersion: '2'
provider:
name: aws
runtime: python3.8
lambdaHashingVersion: 20201221
functions:
hello:
handler: handler.hello
服务字段决定了 CloudFormation 堆栈的名称,您的 lambda 函数和所有必需的资源将在其中创建。将服务视为您的项目。执行 AWS Lambda 函数所需的一切都将在该服务中创建。您可以设置您选择的服务名称。
框架版本是指Serverless框架的版本。这是一个可选字段,通常保留以确保与您共享代码的人使用相同的版本号。如果 serverless.yml 中提到的 frameworkVersion 与您机器中安装的 serverless 版本不同,您将在部署过程中收到错误消息。您还可以为 frameworkVersion 指定一个范围,例如
frameworkVersion − >=2.1.0 && <3.0.0。您可以在此处.
下一部分,
provider,可以被认为是一组全局设置。我们将在后面的章节中讨论 provider 中涵盖的其他参数。在这里,我们将重点介绍可用的参数。
name 字段确定您的平台环境的名称,在本例中为 aws。运行时是 python3.8,因为我们使用了 python3 模板。 lambdaHashingVersion 是指框架应该使用的哈希算法的名称。
请注意,如果您在上一章的配置凭据步骤中添加了自定义配置文件,则需要在提供中添加配置文件参数。例如,我将我的个人资料名称设置为 yash-sanghvi。因此,我的提供者看起来像-
provider:
name: aws
runtime: python3.8
lambdaHashingVersion: 20201221
profile: yash-sanghvi
最后,functions 块定义了所有的 lambda 函数。我们这里只有一个函数,在处理程序文件中。函数的名字是你好。函数的路径在handler字段中提到。
部署函数
要部署您需要打开命令提示符的功能,导航到包含 serverless.yml 的文件夹,然后输入以下命令-
-v 是一个可选参数,表示详细输出。它可以帮助您更好地了解后台进程。部署您的函数后,您应该能够在 us-east-1 区域(这是默认设置)的 AWS 控制台上看到它。您可以使用"测试"功能从控制台调用它(您可以保留相同的默认事件,因为我们的 lambda 函数无论如何都不使用事件输入)。您还可以使用命令提示符进行测试-
sls invoke--function hello
请注意,如果您的函数与 S3 或 dynamoDB 等其他 AWS 服务接口,则您无法始终在本地测试您的函数。只能在本地测试非常基本的函数。
从现有项目部署功能
如果要将现有项目部署到 AWS,请修改现有函数以仅接收
event 和
context 作为参数。接下来,在文件夹中添加一个 serverless.yml 文件,并在 serverless.yml 中定义您的函数。然后打开命令提示符,导航到该文件夹,然后点击
sls deploy-v。这样,您现有的函数也可以部署到 AWS Lambda。