无服务器 – 部署功能

无服务器 – 部署功能


创建新项目

导航到要在其中创建要部署到无服务器的第一个项目的新文件夹。在该文件夹中,运行以下命令 –

sls create --template aws-python3

此命令将创建样板代码,用于使用无服务器和 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 运行时都会将两个参数传递给函数 – 事件和上下文。

事件的参数包含了lambda函数来处理数据。例如,如果您通过 REST API 触发您的 lambda 函数,则您在路径参数或 API 主体中发送的任何数据都将发送到事件参数中的 lambda 函数。在后面的章节中会有更多的介绍。需要注意的重要一点是,事件通常是 python dict类型,但也可以是strfloatintlistNoneType类型。

上下文对象是在运行时传递到您的lambda表达式的另一个理由。它不经常使用。AWS 官方文档指出,此对象提供了提供有关调用、函数和运行时环境信息的方法和属性。您可以在此处阅读有关事件上下文对象的更多信息

该功能非常简单。它只是返回一条状态代码为 200 的消息。如果我们不使用带有 LAMBDA-PROXY 设置的 HTTP 事件,则应使用底部的注释。更多关于 API 触发的 lambda 章节。

现在,让我们看看 serverless.yml 文件。这是一个被大量评论的文件。这些评论对于开始使用无服务器的人非常有用。我们鼓励您彻底阅读评论。在接下来的章节中,我们将研究很多与 serverless.yml 相关的概念。让我们简单地浏览一下这里的基本概念。

如果您在删除注释后查看 serverless.yml 文件,它会是这样的 –

service: aws-serverless
frameworkVersion: '2'

provider:
   name: aws
   runtime: python3.8
   lambdaHashingVersion: 20201221
functions:
   hello:
      handler: handler.hello

service 字段确定 CloudFormation 堆栈的名称,您的 lambda 函数和所有必需的资源将在其中创建。将服务视为您的项目。执行 AWS Lambda 函数所需的一切都将在该服务中创建。您可以设置您选择的服务名称。

框架版本是指无服务器框架的版本。这是一个可选字段,通常保留以确保与您共享代码的人使用相同的版本号。如果 serverless.yml 中提到的 frameworkVersion 与您机器中安装的 serverless 版本不同,您将在部署过程中收到错误消息。您还可以为 frameworkVersion 指定一个范围,例如frameworkVersion − >=2.1.0 && <3.0.0您可以在此处阅读有关 frameworkVersions 的更多信息

下一部分provider可以被视为一组全局设置。我们将在后面的章节中讨论 provider 中涵盖的其他参数。在这里,我们将重点介绍可用的参数。名称字段用于确定您的平台环境,这是在这种情况下,AWS的名称。运行时是 python3.8,因为我们使用了 python3 模板。lambdaHashingVersion 指的是框架应该使用的散列算法的名称。

请注意,如果您在上一章的配置凭据步骤中添加了自定义配置文件,则需要在提供中添加配置文件参数。例如,我将我的个人资料名称设置为 yash-sanghvi。因此,我的提供者看起来像 –

provider:
   name: aws
   runtime: python3.8
   lambdaHashingVersion: 20201221
   profile: yash-sanghvi

最后,functions 块定义了所有的 lambda 函数。我们这里只有一个函数,在处理程序文件中。函数的名字是你好。函数的路径在处理程序字段中提到。

部署函数

要部署您需要打开命令提示符的功能,导航到包含 serverless.yml 的文件夹,然后输入以下命令 –

sls deploy -v

所述-v是一个可选参数,表示详细的输出。它可以帮助您更好地了解后台进程。部署您的函数后,您应该能够在 us-east-1 区域(这是默认值)的 AWS 控制台上看到它。您可以使用“测试”功能从控制台调用它(您可以保留相同的默认事件,因为我们的 lambda 函数无论如何都不使用事件输入)。您还可以使用命令提示符进行测试 –

sls invoke --function hello

请注意,如果您的函数与 S3 或 dynamoDB 等其他 AWS 服务接口,则您无法始终在本地测试您的函数。只能在本地测试非常基本的函数。

从现有项目部署功能

如果要将现有项目部署到 AWS,请修改现有函数以仅接受事件上下文作为参数。接下来,在文件夹中添加一个 serverless.yml 文件,并在 serverless.yml 中定义您的函数。然后打开命令提示符,导航到该文件夹​​,然后点击sls deploy -v这样,您现有的函数也可以部署到 AWS Lambda。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁