
# 简介
Serverless Framework帮助您使用华为云函数工作流开发和部署无服务器应用。它是一个CLI，提供开箱即用的结构、自动化功能和最佳实践，您可以专注于构建复杂的、事件驱动的、无服务器架构，由[函数]和[事件]组成。
Serverless Framework与其他应用程序框架不同，因为它：
- 管理您的代码和基础设施。
- 支持多种语言（Node.js、Python、Java等）。
#### 核心概念
以下将介绍Framework的主要概念，以及它们与华为云函数工作流的关系。
 #### 函数
函数是[华为云函数工作流函数](https://www.huaweicloud.com/product/functiongraph.html)。它是一个独立的部署单元，就像微服务一样。它只是部署在云中的代码，主要是为了执行单个任务而编写，例如：
- 将用户保存到数据库。
- 处理数据库中的文件。
您可以在代码中执行多个任务，但不建议在没有充分理由的情况下这样做。分离关注点是最好的，Framework旨在帮助您轻松开发和部署函数，以及管理它们。
 #### 事件
任何触发华为云函数工作流的函数执行的事务都被Framework视为**事件**。事件是指华为云函数工作流上的平台事件，例如：API网关服务和API（例如，REST API）、OBS桶（例如，上传到桶中的镜像）等等。
在Serverless Framework中为华为云函数工作流定义事件时，Framework会自动将事件及其函数转换为相应的云资源。这样就可以配置事件，以便您的函数可以侦听它。
#### 服务
**服务**是Framework的组织单位。您可以将其视为项目文件，单个应用可以拥有多个服务。可以在服务中定义函数、触发它们的事件以及函数使用的资源，所有这些都在一个名为serverless.yml（或serverless.json）的文件中，例如：
```
# serverless.yml
service: fgs
functions: # Your "Functions"
  hello_world:
    events: # The "Events" that trigger this function
      - apigw:
          env_id: DEFAULT_ENVIRONMENT_RELEASE_ID
          env_name: RELEASE
          req_method: GET
          path: /test
          name: API_test
```
通过运行serverless deploy使用Framework进行部署时，serverless.yml中的所有内容都会同时部署。
#### 插件
可以使用**插件** 覆盖或扩展Framework的功能。每个serverless.yml都可以包含一个"plugins:属性"，该属性具有多个插件。
```
# serverless.yml
plugins:
  - serverless-huawei-functions
```
