本文解释了如何使用 的简单AWS lambda 。
遵循本文的先决条件
- AWS account
- aws-cli带有财产权限
- Node.js使用无服务器框架
- Go
为什么要使用AWS lambda?
AWS Lambda是亚马逊Web服务(AWS)提供的无服务器计算服务。它允许您在不需要提供或管理服务器的情况下运行代码。使用AWS Lambda,您可以专注于编写应用程序代码,而AWS负责您的基础架构和扩展。
优点
- 成本:您只为计算时间付费您的功能消耗。无需支付空闲服务器资源的费用,使其对于具有不同工作负载的应用程序具有成本效益。
- 自动缩放:lambda自动缩放您的代码以处理传入的请求或事件。它可以并行运行数千个函数实例。
- 无状态:lambda功能的设计为无状态,这意味着它们在调用之间不保留记忆。您可以将外部存储服务用于持久数据。
const
- 冷启动潜伏期:在闲置一段时间后调用功能时,就会发生冷启动。冷启动可以在您的应用程序中引入延迟,这可能并非适用于所有用例。
- 限制: lambda功能具有最大的执行时间限制,并且具有预定义的资源限制(CPU,内存),这可能不足以适用于某些应用程序。
为什么使用AWS无服务器框架?
Serverless Framework是用节点编写的工具,可简化无服务器应用程序和功能的部署和管理。它抽象了设置和配置无服务器服务等许多复杂性,例如AWS Lambda,API Gateway等。
开始
步骤1:安装无服务器框架
打开终端并运行以下命令以全球安装
npm install -g serverless
注意 :如果在终端中键入 serverless
,则可以选择一个模板来生成项目的骨架。<<<<<<<<<<<<< /em>
步骤2:在GO中创建简单的健康检查
从项目创建一个目录并初始化Golang项目。
注意 :随时更改项目名称。
mkdir GoServerless
cd GoServerless
go mod init go-lambda-serverless
最后,使用简单的健康检查来创建您的main.go
。
package main
import (
"context"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
)
type Response events.APIGatewayProxyResponse
func Handler(ctx context.Context, request events.LambdaFunctionURLRequest) (Response, error) {
return Response{Body: "It works!", StatusCode: 200}, nil
}
func main() {
lambda.Start(Handler)
}
然后安装所有依赖关系
go mod tidy
步骤3:编译项目
env GOARCH=amd64 GOOS=linux go build -ldflags="-s -w" -o bin/health main.go
步骤4:创建无服务器配置文件
创建 serverless.yml
在root项目上带有内容:
service: go-serverless # Define your service name
provider:
name: aws
runtime: go1.x
region: eu-central-1 # Put your AWS region
package:
patterns:
- '!./**'
- ./bin/**
functions:
health:
handler: bin/health # route to binary
events:
- http:
path: /health
method: get
cors: true
private: false
注意 :您可以找到有关官方文档的所有信息: https://www.serverless.com/framework/docs/providers/aws/guide/serverless.yml
步骤5:部署!
多亏了无服务器框架,部署任何应用程序非常容易,只需在控制台上的serverless deploy
,魔术就发生了:-)
serverless deploy
注意 :如果您获得有关部署的更多信息,则可以添加 --verbose parameter
。
就是全部!该框架负责在AWS上创建必要的基础架构并将URL返回到定义的端点。
您可以尝试CURL的终点
curl -X GET https://jqlar1r8pd.execute-api.eu-central-1.amazonaws.com/dev/health
,或者如果您愿意,可以通过Postman
尝试 的端点您也可以使用相同的无服务器框架
serverless invoke -f health
奖金
您可以删除所有应用程序,包括de 无服务器框架的基础架构。
serverless remove
结论
在本文中,我们已经能够逐步查看如何使用 无服务器框架来创建一个非常简单的应用程序,这是一个很好的工具,使我们的生活更加轻松。> P>
我没有假装发表非常详细的文章,我只是想展示如何从零来制作简单的应用程序。