AWS核心概念
无服务器框架可帮助您开发和部署AWS Lambda功能及其所需的AWS基础架构资源。它是一个CLI,提供开箱即用的结构,自动化和最佳实践,使您可以专注于构建由功能和事件组成的复杂,事件驱动,无服务器架构。
无服务器框架与其他应用程序框架不同,因为:
它管理您的代码和基础架构
它支持多种语言(Node.js,Python,Java等)
功能
Function是AWS Lambda函数。它是一个独立的部署单元,就像微服务一样。它只是部署在云中的代码,通常用于执行单个作业,例如:
- 将用户保存到数据库
- 处理数据库中的文件
- 执行计划任务
您可以在代码中执行多个作业,但我们不建议您在没有充分理由的情况下执行此操作。关注点分离是最好的,框架旨在帮助您轻松开发和部署函数,以及管理大量函数。
活动
任何触发AWS Lambda函数执行的内容都被框架视为事件。事件是AWS上的基础结构事件,例如:
- AWS API网关HTTP端点请求(例如,用于REST API)
- AWS S3存储桶上传(例如,用于图像)
- CloudWatch计时器(例如,每5分钟运行一次)
- AWS SNS主题(例如,消息)
- CloudWatch警报(例如,发生的事情)
在无服务器框架中为AWS Lambda函数定义事件时,框架将自动创建该事件所需的任何基础结构(例如,API网关端点),并配置AWS Lambda函数以监听它。
资源
资源是您的函数使用的AWS基础结构组件,例如:
- AWS DynamoDB表(例如,用于保存用户/帖子/评论数据)
- AWS S3存储桶(例如,用于保存图像或文件)
- AWS SNS主题(例如,用于异步发送消息)
- 无服务器框架支持CloudFormation中可以定义的任何内容
无服务器框架不仅会部署您的函数和触发它们的事件,还会部署您的函数所依赖的AWS基础架构组件。
服务
一个服务是组织框架的单元。您可以将其视为项目文件,但您可以为单个应用程序提供多种服务。您可以在一个名为serverless.yml
(或serverless.json
或serverless.js
)的文件中定义函数,触发它们的事件以及函数使用的资源。它看起来像这样:
# serverless.yml //文件名
service: users
functions: //你的方法
usersCreate:
events: //触发此函数的“事件”
- http: post users/create
usersDelete:
events:
- http: delete users/delete
resources: //你的“功能”使用的“资源”。这里有原始的AWS云形成。
通过运行部署Framework时,会立即部署serverless deploy
所有内容serverless.yml
。
插件
您可以使用插件覆盖或扩展Framework的功能。每个serverless.yml
都可以包含一个plugins:
属性,其中包含多个插件。
# serverless.yml //文件名
plugins: //属性
- serverless-offline
- serverless-secrets