部署无服务器应用程序 - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

部署无服务器应用程序

Amazon SAM 使用 Amazon CloudFormation 作为基础部署机制。有关更多信息,请参阅Amazon CloudFormation《用户指南》中的什么是Amazon CloudFormation?。用于部署无服务器应用程序的标准输入是使用 sam build 命令创建的构建构件。有关 sam build 的更多信息,请参阅构建无服务器应用程序

您可以使用 Amazon SAM 命令行界面(CLI)命令手动部署应用程序。您还可以使用持续集成和持续部署 (CI/CD) 系统自动部署应用程序。您可以使用许多常见的 CI/CD 系统来部署Amazon SAM应用程序,包括 Amazon CodePipelineJenkins、C GitLab I/CD 和 Ac tions。GitHub

使用 CI/CD 系统进行部署

Amazon SAM 可帮助组织为其首选的 CI/CD 系统创建管道,以便他们能毫不费力地获得 CI/CD 的好处,例如,加快部署频率,缩短变更交付时间,以及减少部署错误。

借助构建容器映像,Amazon SAM 可简化无服务器应用程序的 CI/CD 任务。Amazon SAM 提供的映像包括 Amazon SAM CLI 以及适用于许多受支持 Amazon Lambda 运行时的构建工具。这使得使用 Amazon SAM CLI 构建和打包无服务器应用程序变得更轻松。这些映像还使团队无需自行为 CI/CD 系统创建和管理映像。有关 Amazon SAM 构建容器映像的更多信息,请参阅 映像存储库

多个 CI/CD 系统支持 Amazon SAM 构建容器映像。您应使用哪个 CI/CD 系统取决于多个因素。这些因素包括:应用程序使用单个运行时系统还是多个运行时系统;您是要在容器映像中还是直接在主机(虚拟机 (VM) 或裸机主机)上构建应用程序。

Amazon SAM 还为多个 CI/CD 系统提供了一组默认管道模板,其中纳入了 Amazon 的部署最佳实践。这些默认管道模板使用标准的 JSON/YAML 管道配置格式,内置的最佳实践有助于执行多账户和多区域部署,并确保管道不会对基础设施进行意外更改。

有两种方法可使用 Amazon SAM 来部署无服务器应用程序:1) 修改现有管道配置以使用 Amazon SAM CLI 命令;或者 2) 生成示例 CI/CD 管道配置,您可以将其用作自己的应用程序的起点。

有关这些选项的更多信息,请参阅以下主题:

使用 Amazon SAM CLI 进行部署

在本地开发和测试无服务器应用程序后,您可以使用 sam deploy 命令部署应用程序。

要让 Amazon SAM 使用提示来指导您完成部署,请指定 --guided 标记。指定此标记后,sam deploy 命令会压缩应用程序构件,将其上传到 Amazon Simple Storage Service (Amazon S3)(对于 .zip 文件存档)或 Amazon Elastic Container Registry (Amazon ECR)(对于容器映像)。此命令然后将您的应用程序部署到 Amazon 云。

示例

# Deploy an application using prompts: sam deploy --guided

使用 Amazon SAM CLI 故障排除部署

Amazon SAM CLI错误:“未满足安全限制”

运行 sam deploy --guided 时,系统用问题 HelloWorldFunction may not have authorization defined, Is this okay? [y/N] 向您发出提示。如果您用 N(默认选项)来回应此提示,将会出现以下错误:

 
Error: Security Constraints Not Satisfied
            

此提示告知您,您即将部署的应用程序可能在未经授权的情况下配置了 Amazon API Gateway API。用 N 来回应此提示,即表明您不同意继续部署。

要解决此问题,您具有以下选项:

  • 在经授权的情况下配置应用程序。有关配置授权的更多信息,请参阅 控制 API Gateway API 访问权限

  • Y 来回答此问题,以表明您同意部署在未经授权的情况下配置了 API Gateway API 的应用程序。

逐步部署

如果您想逐步部署 Amazon SAM 应用程序,而不是一次性全部部署,您可以指定 Amazon CodeDeploy 提供的部署配置。有关更多信息,请参阅《Amazon CodeDeploy用户指南》 CodeDeploy中的使用部署配置

有关配置 Amazon SAM 应用程序以进行逐步部署的信息,请参阅逐步部署无服务器应用程序

了解更多信息

有关部署无服务器应用程序的实际操作示例,请参阅完整 Amazon SAM 研讨会中的以下主题:

  • 模块 3 - 手动部署 - 了解如何使用 Amazon SAM CLI 构建、打包和部署无服务器应用程序。

  • 模块 4 - CI/CD - 了解如何通过创建持续集成和持续交付 (CI/CD) 管道实现构建、打包和部署阶段的自动化。