

# 从 AWS Toolkit for JetBrains 同步 AWS SAM 应用程序
<a name="sam-sync"></a>

AWS Serverless Application Model（AWS SAM）`sam sync` 是一个 AWS SAM-CLI 命令部署过程，可自动识别对无服务器应用程序所做的更改，然后选择构建这些更改并将其部署到 AWS Cloud 的最佳方式。如果您只对应用程序代码进行了更改，而没有更改基础架构，AWS SAM Sync 会更新您的应用程序，而不会重新部署 CloudFormation 堆栈。

有关 `sam sync` 和 AWS SAM CLI 命令的更多信息，请参阅《AWS Serverless Application Model 用户指南》**中的 [AWS SAM CLI command reference](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-command-reference.html) 主题。

以下各节介绍如何开始使用 AWS SAM Sync。

## 先决条件
<a name="w7aac13c40c11b9"></a>

在使用 AWS SAM Sync 之前，必须满足以下先决条件：
+ 拥有正常运行的 AWS SAM 应用程序。有关创建 AWS SAM 应用程序的更多信息，请参阅本用户指南中的 [Working with AWS SAM](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/key-tasks.html#key-tasks-sam-create) 主题。
+ 已安装 AWS SAM CLI 的版本 1.78.0 或更高版本。有关安装 AWS SAM CLI 的更多信息，请参阅《AWS Serverless Application Model 用户指南》**中的 [Installing the AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html) 主题。
+ 应用程序正在开发环境中运行。

**注意**  
要同步和部署包含具有任何非默认属性的 AWS Lambda 函数的无服务器应用程序，必须在部署之前在与 AWS Lambda 函数关联的 AWS SAM 模板文件中设置可选属性。  
有关 AWS Lambda 属性的更多信息，请参阅 GitHub 上《AWS Serverless Application Model 用户指南》**中的 [AWS::Serverless::Function](https://github.com/aws/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction) 部分。

## 入门
<a name="w7aac13c40c11c11"></a>

要开始使用 AWS SAM Sync，请完成以下过程。

**注意**  
确保 AWS 区域设置为与无服务器应用程序关联的位置。  
要了解有关从 AWS Toolkit for JetBrains 更改 AWS 区域的更多信息，请参阅本用户指南中的 [Switch between AWS Regions](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/key-tasks.html#key-tasks-switch-region) 主题。

1. 在**项目**工具窗口的无服务器应用程序项目中，打开（右键单击）`template.yaml` 文件的上下文菜单。

1. 在 `template.yaml` 上下文菜单中，选择**同步无服务器应用程序（以前称为“部署”）**，以打开**确认开发堆栈**对话框。

1. 确认您正在使用开发堆栈打开**同步无服务器应用程序**对话框。  
![\[“确认开发堆栈”对话框\]](http://docs.aws.amazon.com/zh_cn/toolkit-for-jetbrains/latest/userguide/images/sam-sync-dev-stack.png)

1. 完成**同步无服务器应用程序**对话框中的步骤，然后选择**同步**以开始 AWS SAM Sync 过程。要了解有关**同步无服务器应用程序**对话框的更多信息，请参阅位于下方的 [“同步无服务器应用程序”对话框](#sam-sync-serverless-app-dialog) 部分。

1. 在同步过程中，已使用部署状态更新 AWS Toolkit for JetBrains **运行窗口**。

1. 成功同步后，CloudFormation 堆栈的名称已添加到 **AWS Explorer**。

   如果同步失败，可以在 JetBrains **运行窗口**或 CloudFormation **事件日志**中找到故障排除详细信息。要了解有关查看 CloudFormation 事件日志的更多信息，请参阅本用户指南中的 [Viewing event logs for a stack](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/key-tasks.html#key-tasks-cloudformation-logs) 主题。

## “同步无服务器应用程序”对话框
<a name="sam-sync-serverless-app-dialog"></a>

**“同步无服务器应用程序”对话框**可帮助您完成 AWS SAM 同步过程。以下各节是每个不同对话框组件的描述和详细信息。

### 创建堆栈或更新堆栈
<a name="w7aac13c40c11c13b5"></a>

**必需：**要创建新的部署堆栈，请在提供的字段中输入名称，以便为无服务器应用程序部署创建和设置 CloudFormation 堆栈。

或者，要部署到现有的 CloudFormation 堆栈，请从与 AWS 账户关联的堆栈自动填充列表中选择堆栈名称。

### 模板参数
<a name="w7aac13c40c11c13b7"></a>

**可选：**填充从项目 `template.yaml` 文件中检测到的参数列表。要指定参数值，请在**值**列中提供的文本字段中输入新的参数值。

### S3Bucket
<a name="w7aac13c40c11c13b9"></a>

**必需：**要选择现有 Amazon Simple Storage Service（Amazon S3）存储桶来存储 CloudFormation 模板，请从列表中选择。

要创建并使用新的 Amazon S3 存储桶进行存储，请选择**创建**并按照提示操作。

### ECR 存储库
<a name="w7aac13c40c11c13c11"></a>

**必需：仅在使用映像包类型时可见：**选择现有 Amazon Elastic Container Registry（Amazon ECR）存储库 URI，用于部署无服务器应用程序。

有关 AWS Lambda 包类型的信息，请参阅**《AWS Lambda 开发人员指南》中的 [Lambda 部署包](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html)部分。

### CloudFormation 功能
<a name="w7aac13c40c11c13c13"></a>

**必需：**选择创建堆栈时允许 CloudFormation 使用的功能。

### 标签
<a name="w7aac13c40c11c13c15"></a>

**可选：**在提供的文本字段中输入首选标签以标记参数。

### 在容器内构建函数
<a name="w7aac13c40c11c13c17"></a>

**可选，Docker 为必需：**选择此选项可在部署之前在本地 Docker 容器内构建无服务器应用程序函数。如果函数依赖于具有本地编译的依赖项或程序的包，此选项会很有用。

有关更多信息，请参阅《AWS Serverless Application Model 开发人员指南》**中的 [Building applications](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using-build.html) 主题。