部署无服务器应用程序 - AWS Serverless Application Model

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

部署无服务器应用程序

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

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

使用 CI/CD 系统进行部署

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

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

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

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

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

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

使用 AWS SAM CLI 进行部署

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

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

示例

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

使用 AWS SAM CLI 故障排除部署

AWS 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 的应用程序。

逐步部署

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

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

了解更多信息

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

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

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