# AWS-简介

Serverless Framework 可帮助您开发和部署AWS Lambda函数,以及它们所需的AWS基础设施资源。它是一个提供开箱即用的结构化、自动化和最佳实践的CLI,使您可以专注于构建复杂的,事件驱动的无服务器架构,该架构由 函数事件 组成。

Serverless Framework 不同于其他应用程序框架,因为:

  • 它管理您的代码以及基础架构
  • 它支持多种语言(Node.js,Python,Java等)

# 核心概念

以下是框架的主要概念以及它们与AWS和Lambda的关系。

# 函数

函数是一个AWS Lambda函数。它是一个独立的部署单元,就像微服务一样。它仅仅是部署在云中的代码,通常编写这些代码来执行单个任务,比如:

  • Saving a user to the database 将用户保存到数据库
  • Processing a file in a database 处理数据库中的文件
  • Performing a scheduled task 执行预定的任务

您可以在代码中执行多个任务,但是如果没有充分的理由,我们不建议这样做。关注点分离是最好的,框架的设计目的是帮助您轻松地开发和部署函数,以及管理大量函数。

# 事件

任何触发AWS Lambda函数执行的操作都被框架视为一个事件。事件是AWS上的基础设施事件,例如:

  • An AWS API Gateway HTTP endpoint request (e.g., for a REST API) AWS API网关HTTP端点请求
  • An AWS S3 bucket upload (e.g., for an image) AWS S3存储桶上传
  • A CloudWatch timer (e.g., run every 5 minutes) CloudWatch计时器
  • An AWS SNS topic (e.g., a message) AWS SNS主题
  • A CloudWatch Alert (e.g., something happened) CloudWatch警报
  • And more...

当您在 Serverless Framework 中为您的AWS Lambda函数定义一个事件时,该框架将自动创建该事件所需的任何基础设施(例如,API网关终端节点)并配置您的AWS Lambda函数以侦听该事件。

# 资源

资源是您的函数使用的AWS基础设施组件,例如:

  • An AWS DynamoDB Table (e.g., for saving Users/Posts/Comments data) AWS DynamoDB表(例如,用于保存用户/帖子/评论数据)
  • An AWS S3 Bucket (e.g., for saving images or files) AWS S3存储桶(例如,用于保存图像或文件)
  • An AWS SNS Topic (e.g., for sending messages asynchronously) AWS SNS主题(例如,用于异步发送消息)
  • Anything that can be defined in CloudFormation is supported by the Serverless Framework 任何可以在CloudFormation中定义的东西都受Serverless Framework的支持

Serverless Framework 不仅部署您的函数和触发它们的事件,还部署您的函数所依赖的AWS基础设施组件。

# 服务

服务是框架的组织单元。您可以将其视为项目文件,尽管您可以为单个应用程序提供多种服务。在这里,您可以在一个名为serverless.yml(或serverless.json或serverless.js)的文件中定义函数,触发它们的事件以及函数所使用的资源。看起来像这样:

# serverless.yml

service: users

functions: # Your "Functions"
  usersCreate:
    events: # The "Events" that trigger this function
      - http: post users/create
  usersDelete:
    events:
      - http: delete users/delete

resources: # The "Resources" your "Functions" use.  Raw AWS CloudFormation goes in here. 原始的AWS云形成在这里。

# 插件

您可以使用插件覆盖或扩展框架的功能。每个serverless.yml都可以包含plugins:属性,该属性具有多个插件。

# serverless.yml

plugins:
  - serverless-offline
  - serverless-secrets

# 参考

-AWS - Introduction

更新时间: 5/18/2020, 11:39:53 AM