Serverless Framework的serverless.yml是什么?是否为AWS CloudFormation yml封装?
Serverless Framework serverless.yml 相关问题解答
什么是serverless.yml
serverless.yml是Serverless Framework的核心配置文件,是你定义整个Serverless应用资源、部署规则、运行配置的唯一入口。你可以在这个文件里声明应用使用的云厂商、要部署的函数列表、触发函数的事件源(API网关、定时触发器、对象存储事件等)、需要配套创建的云资源、环境变量、代码打包规则等所有和应用部署、运行相关的配置。
它是不是AWS CloudFormation YAML的封装?
针对AWS部署场景,答案是肯定的。serverless.yml就是CloudFormation YAML的上层抽象封装,它把CloudFormation中冗长的、偏底层的IAC配置,封装成了更贴合Serverless开发场景的简洁语法,大幅降低了配置门槛。
举个实际例子:你只需要在
serverless.yml里写5行以内的配置,就能定义一个带API网关触发器的Lambda函数,Serverless Framework会自动把这几行配置转换为包含Lambda资源、API网关资源、触发器权限配置、日志配置在内的几十行标准CloudFormation配置。
如果是对接AWS之外的云厂商(比如GCP、阿里云、腾讯云),serverless.yml就对应各云厂商自身的IAC服务的上层封装,和CloudFormation无关。
具体工作机制
当你执行sls deploy部署命令时,整体工作流程如下:
- 首先校验
serverless.yml的语法合法性,检查必填配置是否存在 - 加载对应云厂商的适配插件,把
serverless.yml里的高层语法转换为对应云厂商的标准IAC模板,对接AWS时就是生成完整的CloudFormation模板 - 根据配置的打包规则,对业务代码和依赖进行压缩打包,生成对应云厂商Serverless运行时可识别的部署包(比如AWS Lambda的zip包)
- 调用云厂商API,先把部署包上传到指定的存储服务(AWS场景下就是S3桶),再把生成好的CloudFormation模板提交给CloudFormation服务执行资源的创建或更新
- 监听CloudFormation的执行进度,执行完成后将生成的服务地址、函数ARN等产出信息返回给你
如果你在serverless.yml里自定义了原生CloudFormation配置段,Serverless Framework会直接把这部分配置合并到最终生成的CloudFormation模板中,不需要额外转换,方便你实现框架原生语法不支持的高阶需求。
内容的提问来源于stack exchange,提问作者Rodrigo Alcorta
相关产品推荐
相关产品推荐

