

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

# 用于部署应用程序的选项 AWS SAM
<a name="deploying-options"></a>

借 AWS SAM助，您可以手动部署应用程序并自动进行部署。使用 AWS SAMCLI 来手动部署应用程序。要自动执行部署，请使用管线与持续集成和持续部署（CI/CD）系统。本节中的主题提供有关这两种方法的信息。

**Topics**
+ [如何使用 AWS SAMCLI 手动部署](#serverless-sam-cli-using-package-and-deploy)
+ [使用 CI/CD 系统和管道进行部署](#serverless-deploying-ci-cd)
+ [逐步部署](#serverless-deploying-gradual)
+ [使用 AWS SAM CLI 故障排除部署](#serverless-deploying-troubleshooting)
+ [了解详情](#serverless-sam-cli-using-invoke-learn)

## 如何使用 AWS SAMCLI 手动部署
<a name="serverless-sam-cli-using-package-and-deploy"></a>

在本地开发和测试无服务器应用程序后，您可以使用 **[sam deploy](sam-cli-command-reference-sam-deploy.md)** 命令部署应用程序。

要使用提示 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
```

## 使用 CI/CD 系统和管道进行部署
<a name="serverless-deploying-ci-cd"></a>

AWS SAM 使用管道和持续集成和持续部署 (CI/CD) 系统帮助您实现自动部署。 AWS SAM 可用于创建管道和简化无服务器应用程序的 CI/CD 任务。多个 CI/CD 系统支持 AWS SAM 构建容器镜像， AWS SAM 还为多个 CI/CD 系统提供一组默认管道模板，用于封 AWS装部署最佳实践。

有关更多信息，请参阅 [使用 CI/CD 系统和管道进行部署 AWS SAM](deploying-cicd-overview.md)。

## 逐步部署
<a name="serverless-deploying-gradual"></a>

如果您想逐步部署 AWS SAM 应用程序，而不是一次全部部署，则可以指定 AWS CodeDeploy 提供的部署配置。有关更多信息，请参阅《*AWS CodeDeploy 用户指南》 CodeDeploy*[中的使用部署配置](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html)。

有关将 AWS SAM 应用程序配置为逐步部署的信息，请参阅[使用以下方法逐步部署无服务器应用程序 AWS SAM](automating-updates-to-serverless-apps.md)。

## 使用 AWS SAM CLI 故障排除部署
<a name="serverless-deploying-troubleshooting"></a>

### AWS SAM CLI错误：“未满足安全限制”
<a name="troubleshooting-security-constraints"></a>

运行 **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** 来回应此提示，即表明您不同意继续部署。

要解决此问题，您具有以下选项：
+ 在经授权的情况下配置应用程序。有关配置授权的更多信息，请参阅 [使用您的 AWS SAM 模板控制 API 访问权限](serverless-controlling-access-to-apis.md)。
+ 用 **Y** 来回答此问题，以表明您同意部署在未经授权的情况下配置了 API Gateway API 的应用程序。

## 了解详情
<a name="serverless-sam-cli-using-invoke-learn"></a>

有关部署无服务器应用程序的实际操作示例，请参阅*完整 AWS SAM 研讨会中的*以下内容：
+ [模块 3-手动部署-](https://s12d.com/sam-ws-en-manual-deploy) 学习如何使用构建、打包和部署无服务器应用程序。 AWS SAMCLI
+ [模块 4 - CI/CD](https://s12d.com/sam-ws-en-cicd-deploy) - 了解如何通过创建*持续集成和持续交付 (CI/CD)* 管道实现构建、打包和部署阶段的自动化。