什么是 Amazon Serverless Application ModelAmazon SAM? - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

什么是 Amazon Serverless Application ModelAmazon SAM?

Amazon Serverless Application Model(Amazon SAM)是一个使用基础设施即代码(IaC)构建无服务器应用程序的开源框架。使用 Amazon SAM 的简写语法,开发人员可以声明 Amazon CloudFormation 资源和专业的无服务器资源,这些资源在部署期间会转换为基础设施。在使用 Amazon SAM 时,您将与以下对象进行交互:

  1. Amazon SAM CLI - 一款命令行工具,可帮助您开发、本地测试并部署无服务器应用程序。

  2. Amazon SAM 模板 - 作为 Amazon CloudFormation 的扩展,它提供了简化的语法来定义无服务器资源。

当您使用 sam init 命令时,它会创建一个项目目录(我们称之为 Amazon SAM 项目),该目录通常包含您的 Amazon SAM 模板、应用程序代码以及其他配置文件。

何时使用 Amazon SAM

Amazon SAM 是理想的 IaC 解决方案,适用于需要简化无服务器开发同时充分利用 Amazon CloudFormation 强大功能的场景。例如,您可以在以下情况中使用 SAM:

  • 无服务器应用程序:您可以使用 SAM 来快速定义 Amazon Lambda 函数、Amazon API Gateway API、Amazon DynamoDB 表以及其他无服务器资源,且只需极少代码。

  • Amazon CloudFormation 增强功能:您可以将 SAM 与现有 CloudFormation 模板结合使用,为传统基础设施添加无服务器组件。SAM 资源可在同一模板中与标准 CloudFormation 资源协同工作。

  • 本地开发和测试:您可以使用 SAM CLI 在本地测试 Lambda 函数、模拟 API 网关端点,并在部署到 Amazon 之前在开发计算机上调试无服务器应用程序。

  • 适用于无服务器的 CI/CD:您可以使用 SAM 模板来构建部署管道,这些模板会自动生成用于过渡环境和生产环境所需的 CloudFormation 基础设施。

  • 从控制台创建的资源迁移:您可以使用 SAM 模板将 Amazon Management Console 中创建的 Lambda 函数和 API 网关资源转换为“基础设施即代码”。

将 Amazon SAM 与其他 IaC 工具进行比较

  • 使用 SAM 替代 CloudFormation,在保持模板兼容性的同时简化无服务器资源定义。

  • 若您更倾向于采用声明式方法而非编程式方法来描述基础设施,请用 SAM 来替代 Amazon CDK。

  • 使用 SAM CLI 的本地测试功能将 SAM 与 Amazon CDK 相结合,可增强您的 CDK 应用程序。

主要特征

Amazon SAM 提供多种好处,通过允许您执行以下操作来改善开发人员体验:

使用更少的代码快速定义应用程序基础设施代码

编写 Amazon SAM 模板来定义无服务器应用程序基础设施代码。将模板直接部署到 Amazon CloudFormation 以配置资源。

在无服务器应用程序的整个开发生命周期中对其进行管理

使用 Amazon SAM CLI 在开发生命周期的编写、构建、部署、测试和监控阶段管理无服务器应用程序。有关更多信息,请参阅 Amazon SAM CLI

使用 Amazon SAM 连接器快速配置资源之间的权限

在 Amazon SAM 模板中使用 Amazon SAM 连接器来定义 Amazon 资源之间的权限。Amazon SAM 会将代码转换为所需的 IAM 权限,以帮助实现您的目的。有关更多信息,请参阅 使用 Amazon SAM 连接器管理资源权限

在开发时持续将本地更改同步到云端

使用 Amazon SAM CLI sam sync 命令自动将本地更改同步到云端,从而加快开发和云测试工作流程。有关更多信息,请参阅 使用 sam sync 同步到 Amazon Web Services 云 简介

管理 Terraform 无服务器应用程序

使用 Amazon SAM CLI 对 Lambda 函数和层执行本地调试和测试。有关更多信息,请参阅 Amazon SAM CLI Terraform 支持

相关信息