SST简介
SST是一个非常优秀的Serverless框架,除了可以帮助你非常简单的编写RESTful HTTPS API外,它的特色还有:
- 轻松的和前段框架集成(比如Next.js、Svelte、Astro)并快速部署到AWS Lambda,实现页面的服务端渲染(SSR)
- 专为Nodejs优化,方便开发人员使用TypeScript/JavaScript编写AWS Lambda代码并本地直接发布到AWS云上,同时也能轻松和CI/CD系统集成
- 非常完善的本地debug功能,并自带一个本地的网页窗口帮助进行功能测试
- 完善的AWS Lambda继承,除了帮助你开发/调试/发布 AWS Lambda代码外,还能轻松的使用基础设施即代码(IaaS)的方式为你的项目管理AWS Lambda所依赖的资源,比如AWS DynamoDB。
使用SST编写第一个AWS Lambda项目
本文假设你拥有一个AWS云账户(AWS海外账户更好)并有足够的IAM权限(推荐有AdministratorAccess权限),并在本地电脑上配置了AWS IAM用户凭证,如果没有请先注册一个AWS账户并参考AWS Cli同时配置海外区和中国区的凭证 进行本地凭证的配置。同时你需要在本地安装好nodejs(推荐nodejs 18及以上)
我们以一个最简单的RESTful API为例,实现一个输出hello world的HTTP API入门项目,我们参考sst start standalone来进行演示
我们首先执行npx create-sst@latest hello-world-restful-api
来一键创建项目,并给它一个项目名称为hello-world-restful-api
,稍等片刻即可完成
项目创建完成后,我们可以用vs code或者WebStorm打开,并继续执行npx sst dev
,这时SST会创建一个本地调试环境并在AWS云端完成相关资源的准备和创建工作,这个过程是自动的,我们等待即可。
创建过程中,SST会在命令框里面输出一个本地化的http api,我们可以直接访问这个api进入本地调试页面,例如我的本地调试页面地址为console.sst.dev/hello-world…
继续等待SST帮我们把项目部署到AWS上,部署完成后会给将我们的RESTFul HTTP API地址输出到命令框里。这里我的API地址为4neeoowbv7.execute-api.us-east-1.amazonaws.com/
我们可以直接访问这个API,得到输出,这里我们看到接口返回了一个字符串
我们也可以打开本地前面讲的调试页面,进行本地测试
我们可以进行代码修改然后让SST自动进行相关的集成和发布,例如我修改了lambda函数代码里面的输出内容,SST会立即自动感知到并进行编译和部署
当我们再次访问API时,发现我们的修改已经生效了
最后,我们可以使用npx sst remove
一键从云端销毁项目,清理实验资源,避免产生费用。
总结
通过本例子,我们发现SST是一个非常自动化的框架,帮我们做到了代码的编译、发布、更新、debug和AWS资源的创建等繁琐的操作,大大的降低了AWS Lambda的上手难度并提升了开发效率。
这个例子也非常的简单,主要就是通过AWS API-Gateway做HTTP网关并将HTTP请求事件转发到AWS Lambda,AWS Lambda正确执行后会将结果返回给用户。SST也同时提供一个本地web debug控制台方便用户进行本地调试。
参考: