Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
serverless — 用于在 AWS Lambda 上部署和管理无服务器应用程序的 CLI 框架,支持 YAML 基础设施、本地开发以及多语言运行时。 | Kitploit
工具/GitHubGitHub/serverless/serverless
云基础设施安全通用工具无服务器安全DevSecOps实用工具与框架身份与访问管理 (IAM)身份验证无服务器安全 分类第 14 名
GitHubserverless/serverless

serverless

46.9k5.7k2013天前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

用于在 AWS Lambda 上部署和管理无服务器应用程序的 CLI 框架,支持 YAML 基础设施、本地开发以及多语言运行时。

查看仓库网站
[![Serverless Framework AWS Lambda AWS DynamoDB AWS API Gateway](https://assets.kitploit.com/production/public/readmes/50832/e9e62fbf0dba2c8da3b3b8718db14502371596d4097b58a99f2b13db488a5ad8/c57f1273c99a5fe138a8b9df063cfde629a89e5d52cba049ad1400ba04be8f88-display-v1.webp)](https://serverless.com)

<br/>

<div align="center">
  <a aria-label="Serverless.com" href="https://serverless.com">网站</a>
  &nbsp;•&nbsp;
  <a aria-label="Serverless Framework Documentation" href="https://serverless.com/framework/docs/">文档</a>
  &nbsp;•&nbsp;
  <a aria-label="Serverless Inc Twitter" href="https://twitter.com/goserverless">X / Twitter</a>
  &nbsp;•&nbsp;
  <a aria-label="Serverless Framework Community Slack" href="https://serverless.com/slack">社区 Slack</a>
  &nbsp;•&nbsp;
  <a aria-label="Serverless Framework Community Forum" href="https://forum.serverless.com">论坛</a>
</div>

<br/>
<br/>

**Serverless Framework** – 让您轻松使用 AWS Lambda 和其他托管云服务构建应用程序,这些应用可自动扩展、空闲时零成本,并且维护成本极低。

Serverless Framework 是一个命令行工具,采用易于上手的 YAML 语法,可同时部署代码和云基础设施,满足大量无服务器应用场景,例如 API、前端、数据管道和定时任务。它是一个多语言框架,支持 Node.js、Typescript、Python、Go、Java 等。它还通过 1,000 多个插件实现完全可扩展,为框架增添更多无服务器用例和工作流。

由 [Serverless Inc](https://www.serverless.com) 积极维护。

<br/>

# Serverless Framework - V.4

<div align="center" style="max-width: 500px; margin: auto;">
  <a href="https://www.youtube.com/watch?v=UQL_PPJUFOU" target="_blank">
    <img src="https://assets.kitploit.com/production/public/readmes/50832/be27a32e339f60c5234e1f13e7a4aa223f55bc36fdde08668ca814105c2500d3/8a82b1816ed248c728a3552401d6a44372d984ca4c687cf862b0008150c8e2c4-display-v1.webp" alt="Serverless Framework V.4 概览视频" style="width: 100%; max-width: 500px;">
  </a>
</div>

<br/>

**2026 年 10 月** – V.4 持续带来重大更新。请在下方查看全部内容。近期版本新增了基于 AWS Lambda Web Functions 的 Web 应用、在 AWS Lambda 上托管 MCP 服务器、重建的 Dev Mode、对 AI 编码代理的内置支持、Sandboxes(AWS Lambda 上的隔离、临时计算)、原生 Amazon Bedrock AgentCore 支持、Managed Instances、Durable Functions,以及内置的 AWS 登录与 SSO。一如既往,我们对无服务器的未来比以往任何时候都更加期待。

## V.4 中的新功能

以下是迄今为止 V.4 中所有新增功能的列表:

- **Web 应用** – 在 AWS Lambda Web Functions 上运行 Express、Fastify、Hono、Next.js 及其他 Node.js HTTP 服务器。在顶层 `webApps` 块中定义服务器,`serverless deploy` 会将其打包、创建 Web 函数及其 HTTPS 端点,并打印 URL。你的代码像在本地一样监听 `process.env.PORT` —— 无需导出处理程序,也无需安装适配器。自定义域名通过 Amazon CloudFront 提供服务。[更多信息见此](https://www.serverless.com/framework/docs/providers/aws/guide/web-apps)。
- **MCP 服务器托管** – 通过 `serverless.yml` 中的 `mcp` 部分,将使用官方 MCP TypeScript SDK 编写的 MCP 服务器部署到 API Gateway 后面的 AWS Lambda,并支持响应流式传输。[更多信息见此](https://www.serverless.com/framework/docs/providers/aws/guide/mcp)。
- **AI 编码代理支持** – [`serverless agent setup`](https://www.serverless.com/framework/docs/providers/aws/cli-reference/agent-setup) 会安装捆绑的 [Agent Skills](https://www.serverless.com/framework/docs/guides/agent-skills),教会 Claude Code、Codex、Cursor 及其他代理使用该框架,而 `serverless agent` 命令则为代理提供对服务的结构化访问。当命令在检测到的 AI 编码代理下运行时,CLI 从不打开提示符,并以纯文本行显示进度。
- **沙箱** – 在 AWS Lambda 上部署隔离的、临时的计算环境 —— 非常适合不可信或按会话划分的工作负载,例如 AI 代理和代码执行。[更多信息见此](https://www.serverless.com/framework/docs/providers/aws/guide/sandboxes)。
- **Amazon Bedrock AgentCore 支持** – 通过 `ai` 属性直接在 `serverless.yml` 中定义 AI 代理、内存、工具、网关、浏览器和代码解释器,并使用 `serverless agent` 命令管理它们。[更多信息见此](https://www.serverless.com/framework/docs/providers/aws/guide/agents)。
- **AWS 登录与 SSO** – 通过 [`serverless login aws`](https://www.serverless.com/framework/docs/providers/aws/cli-reference/login-aws) 和 [`serverless login aws sso`](https://www.serverless.com/framework/docs/providers/aws/cli-reference/login-aws-sso) 使用基于浏览器的流程设置 AWS 凭证。
- **部署差异** – 在部署前使用 [`serverless diff`](https://www.serverless.com/framework/docs/providers/aws/cli-reference/diff) 预览部署将如何更改你正在运行的 AWS CloudFormation 堆栈。
- **Reconcile 命令** – 当堆栈在 CLI 之外被移除时,通过 [`serverless reconcile`](https://www.serverless.com/framework/docs/providers/aws/cli-reference/reconcile) 保持使用记录与你的 AWS 账户同步。
- **托管实例** – 原生支持由 EC2 支持的 Lambda 执行,以实现更高的吞吐量、可预测的容量和长时间运行的工作负载。
- **持久函数** – 内置支持持久、有状态的工作流和长时间运行的编排。
- **Lambda 租户隔离模式:** 使用租户隔离模式为每个租户创建独立的 Lambda 计算环境,以帮助减少嘈杂邻居效应,并更干净地隔离高流量客户。
- **HTTP 响应流式传输:** 通过 API Gateway HTTP API 从 Lambda 流式传输日志、长时间运行的报告、部分响应或 AI LLM 响应。
- **按函数 IAM 角色:** 添加按函数的 IAM 策略,或将整个服务切换为使用按函数策略。
- **内置插件**:流行的社区插件现已成为框架的一等内置功能,包括 Python requirements、AppSync、Prune、API Gateway Service Proxy 等。
- **改进的自定义域名支持:** 你不再需要外部插件来为 API 等自动配置自定义域名和 SSL 证书。它现已内置于 [Serverless Framework CLI](https://www.serverless.com/framework/docs/providers/aws/guide/domains) 中。
- **与 Doppler 集成:** 你现在可以通过 [Serverless Framework Variables](https://www.serverless.com/framework/docs/guides/variables/doppler) 轻松从 Doppler 获取 Secrets。
- **推出 [Serverless MCP](https://www.serverless.com/framework/docs/guides/mcp):** 专为 Cursor、Windsurf 及其他 AI 驱动的 IDE 打造,它可从你的代码中自动检测云资源,从 AWS 获取日志、状态和配置,让你直接在 IDE 中调试无服务器应用——无需访问 AWS 控制台!支持 Serverless Framework、Cloudformation 等。
- **支持 AWS SAM、AWS CloudFormation 及传统 Serverless Framework 项目:** 现在,你可以用一个工具部署这三种 IaC 项目文件。[更多信息见此](https://www.serverless.com/framework/docs/guides/sam)
- **原生 TypeScript 支持:** 你现在可以在 `serverless.yml` 的 AWS Lambda 函数中使用 `.ts` 处理程序,并在部署时自动构建它们。框架现已内置 [ESBuild](https://esbuild.github.io/),使这一功能成为可能。[更多信息见此](https://www.serverless.com/framework/docs/providers/aws/guide/building)。
- **AWS AI Stack:** V.4 针对 [AWS AI Stack](https://github.com/serverless/aws-ai-stack) 进行了优化。在 AWS 上部署一个全栈、无服务器的 AI 应用样板,包含通过 Amazon Bedrock 提供的 LLM 等诸多功能。
- **全新开发模式:** 运行 `serverless dev`,你已部署阶段的真实流量——API 请求、队列消息、直接调用——将运行你工作副本中的代码,使用函数自身的环境和 IAM 角色,无需部署。`serverless dev --detach` 可在后台运行会话,适用于脚本和 AI 编码代理,并通过 `dev status`、`dev wait`、`dev stop`、`dev requests` 和 `dev replay` 进行控制。[更多信息见此](https://www.serverless.com/framework/docs/providers/aws/guide/dev-mode)。
- **Lambda 自管理代码存储:** 设置 `provider.deploymentBucket.codeStorageMode: reference`,让 Lambda 直接从你的部署存储桶运行函数和层代码。[更多信息见此](https://www.serverless.com/framework/docs/guides/deployment-bucket)。
- **事件源的预置模式:** `provisionedPollers` 属性可为 [`sqs`](https://www.serverless.com/framework/docs/providers/aws/events/sqs)、[`kafka`](https://www.serverless.com/framework/docs/providers/aws/events/kafka) 和 [`msk`](https://www.serverless.com/framework/docs/providers/aws/events/msk) 事件启用 AWS Lambda 的预置模式。
- **运行时弃用警告:** 当函数使用的运行时已超过其 AWS 弃用日期时,`package` 和 `deploy` 会发出警告,并说明 Lambda 何时停止允许在该运行时上创建新函数和进行更新。
- **最新运行时支持:** 在 AWS Lambda 上支持 Node.js 24(`nodejs24.x`)、Python 3.14(`python3.14`)、Java 25(`java25`)、Ruby 4.0(`ruby4.0`)、.NET 10(`dotnet10`)以及 Amazon Linux 2023 Java 运行时(`java8.al2023`、`java11.al2023`、`java17.al2023`),此外还支持公共预览版的 `nodejs26.x` 和 `python3.15`。
- **最新区域支持:** 支持所有主要区域,包括新西兰新公布的 `ap-southeast-6`。
- **新增 Stages 属性:** 通过 `stages` 轻松组织特定阶段的配置,并设置 `default` 配置作为回退。
- **改进的 Compose 体验:** Serverless Compose 现在拥有美观的全新 CLI 体验,能更好地展示正在部署的内容。服务之间通过 `${service:<service>.<Output>}` 解析器相互引用输出,包括部署到不同阶段的服务,并且 `--service` 接受逗号分隔的列表,以便对部分服务运行命令。[更多信息见此](https://www.serverless.com/framework/docs/guides/compose)。
- **AWS 分区变量:** `${aws:partition}` 会解析为部署区域对应的 AWS 分区,例如 `aws`、`aws-cn` 或 `aws-us-gov`,使 ARN 可跨分区移植。[更多信息见此](https://www.serverless.com/framework/docs/guides/variables/aws)。
- **全新的 Terraform 与 Vault 集成:** 从多种 Terraform 状态存储解决方案中拉取状态输出,并从 Vault 中拉取密钥。[Terraform 文档](https://www.serverless.com/framework/docs/guides/variables/hashicorp/terraform) [Vault 文档](https://www.serverless.com/framework/docs/guides/variables/hashicorp/vault)
- **AWS Lambda 高级日志控制:** 以 JSON 格式捕获日志、提高日志粒度,并设置自定义日志组。参见 [AWS 文章](https://aws.amazon.com/blogs/compute/introducing-advanced-logging-controls-for-aws-lambda-functions/)。参见 [YAML 实现](https://www.serverless.com/framework/docs/providers/aws/guide/serverless.yml#logs)
- **Axiom 集成:** 与 [Axiom 的可观测性解决方案](https://www.serverless.com/framework/docs/guides/observability/axiom)集成,获得强大的日志、指标和追踪体验,成本比 AWS CloudWatch 低 3 倍。
- **AWS SSO:** 环境变量,尤其是由 AWS SSO 设置的变量,会被优先处理。Framework 和 Dashboard 不再干扰这些变量。
- **自动更新:** 现在默认启用。不过,你将能够控制自己愿意接受的更新级别。
- **改进的入门与设置:** `serverless` 命令已被重写,在设置新项目或现有项目时更加有用。
- **更新的自定义资源处理器:** 所有自定义资源处理器现在都使用当前的 Node.js 运行时(`nodejs24.x`)。
- **弃用非 AWS 提供商:** 其他云提供商已被弃用。V.4 专注于在 AWS 上提供最佳体验。

## 重大变更

我们力求避免对“aws” Provider 造成重大变更。不过,有几项较大的变化需要您留意:

- V.4 许可证正在变更。详情请参阅下文相关章节。
- CLI 中现在要求进行身份验证。
- 非 AWS Provider 已被弃用。我们将在 V.4 中引入使用其他云基础设施供应商的新方式。

如果您遇到其他重大变更,请创建 issue。如需进一步了解有哪些不同之处以及潜在的重大变更,请参阅我们的[升级到 Serverless Framework V4 文档](https://www.serverless.com/framework/docs/guides/upgrading-v4)。

## V.4 中的许可证变更

请注意,V.4 仓库的结构和许可与 V.4 npm 模块不同。npm 模块包含部分专有许可软件,因为 V.4 正过渡为通用 SaaS 产品,[如此前公告所述](https://www.serverless.com/blog/serverless-framework-v4-a-new-model)。原始 Serverless Framework 源代码及更多内容将继续保持 MIT 许可证软件,仓库结构经过设计,以清晰区分专有组件和开源组件——MIT 许可的代码在 `packages/serverless` 中带有自己的 `LICENSE` 文件,而仓库根目录的 `LICENSE` 则涵盖专有组件。

<br/>

# 目录

- [功能特性](#features)
- [快速开始](#quick-start)
- [示例](https://github.com/serverless/examples)
- [插件](https://github.com/serverless/plugins)
- [社区](#community)

<br/>

# <a name="features"></a>功能特性

- **多构建,少管理:** 减少基础设施管理时间,加快创新速度。
- **最大灵活性:** 应对多样化的无服务器用例,从 API 和定时任务到 WebSocket 和数据管道。
- **自动化部署:** 代码与基础设施一同部署,简化开发流程。
- **本地开发:** 将 AWS 事件路由到本地 AWS Lambda 代码,无需部署每次更改即可更快开发。
- **易于使用:** 借助简单的 YAML 配置,无需深入的云基础设施专业知识即可部署复杂应用。
- **语言无关:** 使用您偏好的语言构建——Node.js、Python、Java、Go、C#、Ruby、Swift、Kotlin、PHP、Scala 或 F#。
- **完整生命周期管理:** 轻松开发、部署、监控、更新和排查无服务器应用。
- **可扩展的组织方式:** 通过 Serverless Compose 将大型应用拆分为多个 Service,以便单独或协同工作,从而高效组织大型项目和团队。
- **轻松管理环境:** 无缝管理开发、预发布和生产环境。
- **支持自定义:** 通过丰富的插件生态系统扩展和修改框架功能。
- **活跃社区:** 获得支持,并与充满热情的无服务器开发者社区建立联系。

<br/>

# <a name="quick-start"></a>快速开始

以下介绍如何安装 Serverless Framework、设置项目,并将其部署到 AWS Lambda、AWS DynamoDB、AWS S3 等无服务器基础设施上的 Amazon Web Services。

<br/>

## 通过 NPM 安装 Serverless Framework

首先,您必须安装 [Node.js 运行时](https://nodejs.org),版本为 18.17.0 或更高,然后即可通过 NPM 安装 Serverless Framework。

打开您的 CLI 并运行以下命令,以全局安装 Serverless Framework。

```text
npm i serverless -g
```

运行 `serverless` 以验证安装是否正常工作,并显示当前版本。

<br/>

## 更新 Serverless Framework

从版本 4 开始,Serverless Framework 会自动更新自身,并每 24 小时执行一次检查以进行更新。

你可以通过运行以下命令强制更新:

```text
serverless update
```

或者,你可以设置这个环境变量:

```text
SERVERLESS_FRAMEWORK_FORCE_UPDATE=true
```

<br/>

## `serverless` 命令

Serverless Framework 附带了一个 `serverless` 命令,它会引导你完成项目的创建并将其部署到 AWS 上。它可以帮助你下载模板、设置 AWS 凭证、设置 Serverless Framework Dashboard 等,同时在此过程中解释每一个概念。

本指南也将引导你开始使用 Serverless Framework,但请注意,直接输入 `serverless` 命令可能是更优的体验。

```text
serverless
```

<br/>

## 创建服务

在 Serverless Framework 中,项目的主要概念被称为“服务”(Service),它由 `serverless.yml` 文件声明,该文件包含用于部署云基础设施的简化语法,例如 AWS Lambda 函数、通过事件触发这些函数的基础设施,以及你的 AWS Lambda 函数在各种用例中可能需要的额外基础设施(例如 AWS DynamoDB 数据库表、AWS S3 存储桶、用于接收 HTTP 请求并将其转发到 AWS Lambda 的 AWS API Gateway)。

一个服务既可以是整个应用程序,也可以是特定领域的逻辑(例如“blog”、“users”、“products”),还可以是处理单一任务的微服务。如何组织项目由你决定。通常,我们建议一开始对所有内容采用单体式方法以降低复杂性,直到拆分逻辑绝对必要为止。

要创建并完整设置一个 Serverless Framework 服务,请使用 `serverless` 命令,它提供了交互式的设置工作流。

```text
serverless
```

这将向你展示多个模板。选择适合你想要的语言和用例的模板。

```text
Serverless ϟ Framework
Welcome to Serverless Framework V.4

Create a new project by selecting a Template to generate scaffolding for a specific use-case.

? Select A Template: …
❯ AWS / Node.js / HTTP API
  AWS / Node.js / Express API
  AWS / Node.js / Express API with DynamoDB
  AWS / Node.js / Scheduled Task
  AWS / Node.js / Simple Function
  AWS / Python / HTTP API
  AWS / Python / Flask API
  AWS / Python / Flask API with DynamoDB
  AWS / Python / Scheduled Task
  AWS / Python / Simple Function
  (Scroll for more)
```

选择服务模板后,其文件将被下载,你将有机会为你的服务命名。

```text
? Name Your Service: ›
```

请仅使用小写字母、数字和连字符。此外,请保持服务名称简短,因为它们会被添加到 Serverless Framework 创建的每个云资源的名称中,而某些云资源的名称存在字符长度限制。

在[核心概念文档](https://www.serverless.com/framework/docs/providers/aws/guide/intro)中了解更多关于服务及其他内容的信息。

<br/>

## 登录

从 Serverless Framework V.4 开始,如果你使用 `serverless` 命令来设置服务,它最终会要求你登录。

如果你需要在其他情况下登录,请运行 `serverless login`。

登录会将你重定向到浏览器中的 [Serverless Framework Dashboard](https://app.serverless.com)。注册或登录后,返回你的 CLI,你将处于已登录状态。

请注意,你可以免费使用 Serverless Framework CLI 和 Dashboard 开始工作,并且 CLI 对小型组织和独立开发者将始终免费。有关定价的更多信息,请查看我们的[定价页面](https://serverless.com/pricing)。

<br/>

## 创建应用

“应用”概念是一个父容器,用于容纳一个或多个“服务”,你可以通过 `serverless.yml` 中的 `app` 属性选择性地设置它。设置 `app` 还会为该服务启用 Serverless Framework Dashboard 功能,例如在 Serverless Framework Dashboard 中跟踪你的服务及其部署、在服务之间共享输出、在服务之间共享密钥,以及启用指标、追踪和日志。

如果你使用 `serverless` 引导命令,它将帮助你设置一个 `app` 并将其添加到你的服务中。你也可以使用 `serverless` 命令在现有服务上创建应用,或在 Dashboard 中创建应用。

```text
❯ Create A New App
  ecommerce
  blog
  acmeinc
  Skip Adding An App
```

也可以通过 `app` 属性在 serverless.yml 中手动设置该应用:

```yaml
service: my-service
app: my-app
```

如果你不想使用 Serverless Framework Dashboard 的功能,只需不添加 `app` 属性即可。应用不是必需的。

<br/>

## 设置 AWS 凭证

要将云基础设施部署到 AWS,你必须让 Serverless Framework 能够访问你的 AWS 凭证。

在新的或现有的 Service 中运行 Serverless Framework 的 `serverless` 命令,将有助于判断 AWS 凭证是否已正确设置或是否已过期,或帮助你从头开始设置它们。

```text
No valid AWS Credentials were found in your environment variables or on your machine. Serverless Framework needs these to access your AWS account and deploy resources to it. Choose an option below to set up AWS Credentials.

❯ Sign in with AWS Console (Recommended)
  Save AWS Credentials in a Local Profile
  Skip & Set Later (AWS SSO, ENV Vars)
```

我们建议使用 AWS Console 登录:它会打开你的浏览器,登录后,Framework 会将短期凭证保存到本机的 AWS 配置文件中,因此不会存储长期访问密钥。你可以随时使用 [`serverless login aws`](https://www.serverless.com/framework/docs/providers/aws/cli-reference/login-aws) 运行相同的流程。

如果你已登录 Serverless Framework Dashboard,该列表还会提供 **Create AWS IAM Role**,它会在 Dashboard 中存储一个 AWS IAM Role,使凭证集中保存在团队层面,而不是存放在每个团队成员的机器上。

如果你使用的是 AWS SSO,可以运行 [`serverless login aws sso`](https://www.serverless.com/framework/docs/providers/aws/cli-reference/login-aws-sso) 通过浏览器登录,或者直接在终端中将临时 SSO 凭证作为环境变量粘贴进去。

要了解更多关于设置 AWS 凭证的信息,[请阅读本指南](https://www.serverless.com/framework/docs/providers/aws/guide/credentials)。

<br/>

## 部署服务

在你使用 `serverless` 命令完成所有设置后,就可以将服务部署到 AWS 了。

请确保你的终端会话位于包含 `serverless.yml` 文件的目录中。如果你刚刚创建了一个服务,别忘了 `cd` 进入该目录。

```text
cd [your-new-service-name]
```

部署会同时在 AWS 上创建/更新云基础设施和代码。

运行 `deploy` 命令:

```text
serverless deploy
```

有关部署的更多详细信息,请参见[此处](https://www.serverless.com/framework/docs/providers/aws/guide/deploying)。

<br/>

## 开发

许多 Serverless Framework 和 serverless 开发者通常选择在云端进行开发,因为这与实际情况(即你的生产环境)相符,而在本地模拟 Lambda 及其他基础设施依赖可能会很复杂。

在 Serverless Framework V.4 中,我们创建了一种*混合开发方式*,帮助开发者以真实云环境的准确性进行快速开发。这就是新的 `dev` 命令:

```text
serverless dev
```

运行此命令后,Dev Mode 会在几秒内将已部署阶段中的 Node.js 和 Python 函数附加到你的机器上,无需进行部署。

此后,对这些函数的真实调用——API 请求、队列消息、直接调用——都会在你的机器上运行代码,使用函数自身的环境和 IAM 角色,并将结果返回给调用方。你的修改会在下一次调用时生效。

来自你代码的日志和错误会显示在你的终端 `dev` 会话中。

按 Ctrl+C 结束会话:Dev Mode 会将你的函数恢复为已部署的配置。

请注意,`dev` 仅适用于开发或个人阶段/环境,不应在生产环境或任何正在处理大量事件的阶段中运行。Dev Mode 会拒绝 `prod` 和 `production` 阶段。

在 [Dev Mode 指南](https://www.serverless.com/framework/docs/providers/aws/guide/dev-mode) 和 [`serverless dev` 参考](https://www.serverless.com/framework/docs/providers/aws/cli-reference/dev) 中了解更多信息。

<br/>

## 调用

要在云端调用你的 AWS Lambda 函数,你可以在 `serverless deploy` 的输出中找到带有 API 端点的函数 URL,或通过 `serverless info` 获取它们。如果你的函数没有 API 端点,你可以使用 `invoke` 命令,如下所示:

```bash
sls invoke -f hello

# Invoke and display logs:
serverless invoke -f hello --log
```

有关 `invoke` 命令的更多详细信息,请参见[此处](https://www.serverless.com/framework/docs/providers/aws/cli-reference/invoke)。

<br/>

## 部署函数

要快速部署代码更改,你可以跳过 `serverless deploy` 命令(该命令会触发完整的 AWS CloudFormation 更新,因此速度要慢得多),而只将代码和配置更改部署到特定的 AWS Lambda 函数。

要在几秒钟内将代码和配置更改部署到单个 AWS Lambda 函数,请使用 `deploy function` 命令,并将 `-f [serverless.yml 中的函数名]` 设置为你想要部署的函数。

```text
serverless deploy function -f my-api
```

有关 `deploy function` 命令的更多详细信息,请参见[此处](https://www.serverless.com/framework/docs/providers/aws/cli-reference/deploy-function)。

<br/>

## 流式日志

你可以使用 Serverless Framework 将 AWS Cloudwatch 中的日志直接流式传输到终端。在单独的终端窗口中运行 `sls logs` 命令:

```bash
sls logs -f [Function name in serverless.yml] -t
```

通过 `-f` 选项指定特定函数,并通过 `-t` 选项启用跟踪(即流式输出)。

<br/>

## 完整的本地开发

许多 Serverless Framework 用户选择在本地模拟其整个无服务器架构。请注意,模拟 AWS Lambda 及其他云服务从来都不准确,而且随着项目和团队成员的增长,这一过程可能会变得复杂。自 V.4 起,我们强烈建议使用带有个人阶段的新 `dev` 模式。

如果你确实选择在本地开发,我们推荐以下工作流程……

使用 `invoke local` 命令在本地调用你的函数:

```bash
sls invoke local -f my-api
```

你也可以通过多种方式向这个本地调用传递数据。以下是其中一种:

```bash
sls invoke local --function functionName --data '{"a":"bar"}'
```

有关 `invoke local` 命令的更多详细信息,请参见[此处](https://www.serverless.com/framework/docs/providers/aws/cli-reference/invoke-local)

Serverless Framework 还有一个出色的插件,允许你在本地运行服务器并模拟 AWS API Gateway。这就是 `serverless-offline` 插件。

更多详细信息请参见 [serverless-offline 文档](https://github.com/dherault/serverless-offline)。

<br/>

## 使用插件

Serverless Framework 的一大优势在于其[插件生态系统](https://serverless.com/plugins)。

插件可以扩展或覆盖 Serverless Framework,为其赋予新的用例或能力,并且这样的插件有数百个之多。

请注意,一些曾经流行的插件已不再需要——它们的功能现已内置于框架中,包括 Python requirements、custom domains、AppSync、Prune 和 API Gateway Service Proxy。

一些最常见的插件包括:

- **[Serverless Offline](https://github.com/dherault/serverless-offline)** - 在开发 Serverless 项目时,在本地模拟 AWS Lambda 和 API Gateway。
- **[Serverless Step Functions](https://github.com/serverless-operations/serverless-step-functions)** - 构建 AWS Step Functions 架构。

你可以使用 [`serverless plugin install --name pluginName`](https://www.serverless.com/framework/docs/providers/aws/cli-reference/plugin-install) 向你的服务添加插件,该命令会通过 npm 安装插件并将其注册到你的 `serverless.yml` 中。

<br/>

## 组合服务

Serverless Framework Compose 允许你同时处理多个 Serverless Framework 服务,并执行以下操作……

- 并行部署多个服务
- 按特定顺序部署服务
- 在一个服务与另一个服务之间共享输出
- 跨多个服务运行命令

项目结构可能如下所示:

```bash
my-app/
  service-a/
    src/
      ...
    serverless.yml
  service-b/
    src/
      ...
    serverless.yml
```

使用 Serverless Framework Compose 需要 `serverless-compose.yml` 文件。在该文件中,你可以指定希望部署哪些 Service。你还可以在一个 Service 与另一个 Service 之间共享数据,这同时也会创建部署顺序。

```yaml
# serverless-compose.yml

services:
  service-a:
    path: service-a

  service-b:
    path: service-b
    params:
      queueUrl: ${service-a.queueUrl}
```

通常由另一个 Service 继承的 Outputs 被定义为 AWS CloudFormation Outputs:

```yaml
# service-a/serverless.yml

# ...

resources:
  Resources:
    MyQueue:
      Type: AWS::SQS::Queue
      # ...
  Outputs:
    queueUrl:
      Value: !Ref MyQueue
```

该值将作为名为 `queueUrl` 的[参数](https://www.serverless.com/framework/docs/guides/parameters)传递给 `service-b`。在 Serverless Framework 配置中,可以通过 `${param:xxx}` 语法引用参数:

```yaml
# service-b/serverless.yml

provider:
  ...
  environment:
    # Here we inject the queue URL as a Lambda environment variable
    SERVICE_A_QUEUE_URL: ${param:queueUrl}
```

有关 Serverless Framework Compose 的更多详细信息,请参见[此处](https://www.serverless.com/framework/docs/guides/compose)。

<br/>

## 移除你的服务

如果你想删除你的服务,请运行 `remove`。这将删除你的项目创建的所有 AWS 资源,并确保你不会产生任何意外费用。它还会从 Serverless Dashboard 中移除该服务。

```bash
sls remove
```

有关 `remove` 命令的更多详细信息,请参见[此处](https://www.serverless.com/framework/docs/providers/aws/cli-reference/remove)。

<br/>

## 后续步骤

以下是一些有助于继续使用 Serverless Framework 的有用资源:

- [学习 Serverless Framework 的核心概念](https://www.serverless.com/framework/docs/providers/aws/guide/intro)
- [从这些 Serverless Framework 模板中获取灵感](https://github.com/serverless/examples)
- [了解所有可触发 Lambda 函数的事件](https://www.serverless.com/framework/docs/providers/aws/guide/events)
- [收藏 Serverless Framework 的 `serverless.yml` 指南](https://www.serverless.com/framework/docs/providers/aws/guide/serverless.yml)
- [搜索插件注册表以扩展 Serverless Framework](https://www.serverless.com/plugins)

<br/>

# <a name="community"></a>社区

- [X / Twitter](https://twitter.com/goserverless)
- [社区 Slack](https://serverless.com/slack)
- [Serverless 聚会](http://www.meetup.com/serverless/)
- [Stackoverflow](http://stackoverflow.com/questions/tagged/serverless-framework)
- [Facebook](https://www.facebook.com/serverless)
- [联系我们](mailto:[email protected])

## 安全与漏洞披露

我们高度重视安全。如果您发现安全问题,请通过 [[email protected]](mailto:[email protected]) 联系我们进行负责任的披露。在我们处理这些问题之前,请勿公开披露漏洞。

更多详细信息,请参阅我们的[安全政策](https://github.com/serverless/serverless/blob/main/SECURITY.md)。
下载工具