如何部署Lambda函数到AWS

date
Aug 15, 2024
slug
how-to-deploy-lambda-function-to-aws
status
Published
tags
Devops
Tech
summary
AWS Lambda允许开发者无需管理服务器即可快速部署和扩展应用,探讨如何通过ZIP文件上传、AWS CDK和Serverless框架来高效部署Lambda函数。了解如何利用Lambda提升开发效率和创新能力
type
Post

什么是Lambda函数

Lambda是AWS面向开发人员推出的应用层级Serverless解决方案。使用通过符合Lambda规范的代码,在AWS的环境上快速部署线上使用。通过配置支持自动扩容,安全,权限,网关等,完全屏蔽底层服务器管理的功能。

Lambda的优势

根据AWS的Blog的宣传,我们看到Serverless的优势包括一下几个点。
  • 无服务器管理
  • 连续缩放
  • 毫秒级
  • 丰富生态
  • 增加创新

AWS Lambda实践

基本使用

AWS的Lambda函数,支持多种语言,包括Node.js, .Net Core, Python3, Ruby2.7,Java 等如果我们想要开发一个Lambda函数,可以通过本地IDE编写,也可以通过AWS提供的线上控制台,工具包等多种开发环境。
如果我们选择使用本地IDE来编写,开发完成后我们应该怎么方便地部署Lambda到AWS上呢?
怎么进行CICD呢?

Lambda函数的部署

控制台上传Zip文件包

最简单的方式当然是把handler文件和依赖打包到一个ZIP文件,在控制台上传压缩包,但是这对于开发者来说极其不方便,我们需要在本地 npm ci 之后,把所有的代码文件和node_modules目录打成一个zip包然后在控制台上传
 
当然了,控制台还提供了一种通过上传ZIP压缩包到S3的部署方式,用起来也很简单,我想这种方式更多是提供给程序自动部署使用的。
但是我们使用Lambda的时候通常并不只是单纯的使用云函数这一个功能,通常我们会配合使用api_gateway,sqs,sns,event_bus等一系列组件,那我们在部署lambda的时候怎么同时将这些依赖服务的设置部署上去呢?

使用AWS CDK自动部署

可以参考AWS官方提供的这篇文章,他们使用lambda开发了一个用来监控aws lightsail服务器流量使用情况的小程序,就是使用的cdk的方式来部署。
这种方式需要使用aws cdk来初始化的项目,初始化之后会在项目的 lib 目录下面生成一个 *stack.ts 的文件,这里面可以使用aws-cdk-lib包来通过代码添加各项依赖服务的设置。

使用Serverless部署

Serverless是一种云计算模型的抽象定义,让开发者无需管理服务器即可构建和运行应用程序。它自动处理服务器管理和扩展,简化了应用的开发和运维,AWS,阿里云,腾讯云,Cloudflare都对这个“接口”做了实现。
使用Serverless框架,可以快速部署AWS Lambda函数。你只需编写代码并配置serverless.yml文件,框架会处理部署和管理,简化了操作过程,可以参考这个github项目。
serverless.yml
LeiShi1313
 

© Devpan 2023 - 2025