如何使用无服务器框架创建第一个Golang Lambda
#aws #serverless #go #部署

本文解释了如何使用 的简单AWS lambda

遵循本文的先决条件

为什么要使用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>


无服务器Crete Skeleton Project

步骤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

尝试


尝试Postman

的端点

您也可以使用相同的无服务器框架

serverless invoke -f health


尝试通过无服务器框架

进行服务

奖金

您可以删除所有应用程序,包括de 无服务器框架的基础架构

serverless remove

结论

在本文中,我们已经能够逐步查看如何使用 无服务器框架来创建一个非常简单的应用程序,这是一个很好的工具,使我们的生活更加轻松。 P>

我没有假装发表非常详细的文章,我只是想展示如何从零来制作简单的应用程序。