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

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

部署无服务器应用

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

您可以使用手动部署应用程序。Amazon SAM命令行界面 (CLI) 命令。您还可以使用持续集成和持续部署 (CI/CD) 系统自动执行应用程序的部署。您可以使用许多常用的CI/CD 系统进行部署Amazon SAM应用程序,包括Amazon CodePipelineJenkinsGitLab CI/CD, 和GitHub 操作.

使用 CI/CD 系统部署

Amazon SAM帮助组织为其首选 CI/CD 系统创建管道,以便他们能够以最少的努力实现 CI/CD 的好处,例如加快部署频率、缩短变更的准备时间以及减少部署错误。

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

支持多个 CI/CD 系统Amazon SAM构建容器映像。你应该使用哪个 CI/CD 系统取决于几个因素。其中包括应用程序是使用单个运行时还是多次运行时,还是要在容器映像中构建应用程序,还是直接在主机上构建应用程序,无论是虚拟机 (VM) 还是裸机主机。

Amazon SAM还为封装的多个 CI/CD 系统提供了一组默认管道模板Amazon的部署最佳实践。这些默认管道模板使用标准的 JSON/YAML 管道配置格式,内置的最佳实践有助于执行多账户和多区域部署,并验证管道是否无法对基础架构进行意外更改。

您有两个主要选项可供使用Amazon SAM部署无服务器应用程序:1) 修改现有管道配置以使用Amazon SAMCLI 命令,或 2) 生成示例 CI/CD 管道配置,您可以用作自己的应用程序的起点。

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

使用部署Amazon SAMCLI

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

要拥有Amazon SAM通过提示指导您完成部署,请指定--guided旗。当你指定此标志时,sam deploy命令 Zip 您的应用程序工件,将其上传到亚马逊 Simple Storage Service (Amazon S3)(用于 .zip 文件存档)或亚马逊 Elastic Container Registry (Amazon ECR)(用于包含图像)。然后,该命令将您的应用程序部署到Amazon云。

示例:

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

使用排除部署Amazon SAMCLI

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

运行时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提供。有关更多信息,请参阅 。在 CodeDeploy 中使用部署配置中的Amazon CodeDeploy用户指南.

有关配置Amazon SAM应用程序要逐步部署,请参阅逐步部署无服务器应用程序.