

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

# sam sync
<a name="sam-cli-command-reference-sam-sync"></a>

本页提供 AWS Serverless Application Model 命令行界面 (AWS SAMCLI) `sam sync` 命令的参考信息。
+ 有关简介 AWS SAMCLI，请参阅 [那是什么 AWS SAMCLI？](what-is-sam-overview.md#what-is-sam-cli)
+ 有关使用的文档 AWS SAMCLI，请参阅[AWS SAM CLI](using-sam-cli.md)。

`sam sync` 命令将本地应用程序的更改同步到 AWS 云。

## 用法
<a name="sam-cli-command-reference-sam-sync-usage"></a>

```
$ sam sync <options>
```

## 选项
<a name="sam-cli-command-reference-sam-sync-options"></a>

`--base-dir, -s DIRECTORY`  <a name="sam-cli-command-reference-sam-sync-options-base-dir"></a>
根据此目录解析函数或层的源代码的相对路径。使用此选项更改源代码文件夹相对路径的解析方式。默认情况下，相对路径是根据 AWS SAM 模板的位置进行解析的。  
除了正在构建的根应用程序或堆栈中的资源外，此选项还适用于嵌套应用程序或堆栈。此外，此选项适用于以下资源类型和属性：  
+ 资源类型：`AWS::Serverless::Function` 属性：`CodeUri`
+ 资源类型：`AWS::Serverless::Function` 资源属性：`Metadata` 条目：`DockerContext`
+ 资源类型：`AWS::Serverless::LayerVersion` 属性：`ContentUri`
+ 资源类型：`AWS::Lambda::Function` 属性：`Code`
+ 资源类型：`AWS::Lambda::LayerVersion` 属性：`Content`

`--build-image TEXT`  <a name="sam-cli-command-reference-sam-sync-options-build-image"></a>
构建应用程序时要使用的[容器映像](serverless-image-repositories.md#serverless-image-repository-uris)的 URI。默认情况下， AWS SAM 使用[亚马逊弹性容器注册表 (Amazon ECR) Public 中的容器](https://docs.aws.amazon.com/AmazonECR/latest/public/what-is-ecr.html)镜像存储库 URI。指定此选项以使用不同的映像。  
您可以在单个命令中多次使用此选项。每种选项都接受一个字符串或一个键值对。  
+ **字符串** – 指定应用程序中所有资源都将使用的容器映像的 URI。以下是示例：

  ```
  $ sam sync --build-image amazon/aws-sam-cli-build-image-python3.8
  ```
+ **键值对** – 将资源名称指定为键，并将要与该资源一起使用的容器映像 URI 指定为值。使用此格式为应用程序中的每个资源指定不同的容器映像 URI。以下是示例：

  ```
  $ sam sync --build-image Function1=amazon/aws-sam-cli-build-image-python3.8
  ```
在指定了 `--use-container` 选项的情况下此选项才适用，否则会导致错误。

`--build-in-source | --no-build-in-source`  <a name="sam-cli-command-reference-sam-sync-options-build-in-source"></a>
提供 `--build-in-source` 以便直接在源文件夹中生成项目。  
`--build-in-source` 选项支持以下运行时和构建方法：  
+ **运行时**：`sam init --runtime` 选项支持的任何 Node.js 运行时。
+ **构建方法**：`Makefile`、`esbuild`。
`--build-in-source` 选项与以下选项不兼容：  
+ `--use-container `
*默认值*：`--no-build-in-source`

`--capabilities LIST`  <a name="sam-cli-command-reference-sam-sync-options-capabilities"></a>
您指定允许创建特定堆栈 CloudFormation 的功能列表。某些堆栈模板可能包含可能会影响您的权限的资源 AWS 账户。例如，通过创建新 AWS Identity and Access Management (IAM) 用户。指定此选项以覆盖默认值。有效值包括：  
+ CAPABILITY\$1IAM
+ CAPABILITY\$1NAMED\$1IAM
+ CAPABILITY\$1RESOURCE\$1POLICY
+ CAPABILITY\$1AUTO\$1EXPAND
*默认值*：`CAPABILITY_NAMED_IAM` 和 `CAPABILITY_AUTO_EXPAND`

`--code`  <a name="sam-cli-command-reference-sam-sync-options-code"></a>
默认情况下， AWS SAM 同步应用程序中的所有资源。指定此选项可仅同步代码资源，包括以下内容：  
+ `AWS::Serverless::Function`
+ `AWS::Lambda::Function`
+ `AWS::Serverless::LayerVersion`
+ `AWS::Lambda::LayerVersion`
+ `AWS::Serverless::Api`
+ `AWS::ApiGateway::RestApi`
+ `AWS::Serverless::HttpApi`
+ `AWS::ApiGatewayV2::Api`
+ `AWS::Serverless::StateMachine`
+ `AWS::StepFunctions::StateMachine`
要同步代码资源，请 APIs 直接 AWS SAM 使用 AWS 服务，而不是通过部署 AWS CloudFormation。要更新您的 CloudFormation 堆栈，请运行**sam sync --watch**或**sam deploy**。

`--config-env TEXT`  <a name="sam-cli-command-reference-sam-sync-options-config-env"></a>
在配置文件中指定要使用的默认参数值的环境名称。默认值为“default”。有关配置文件的详细信息，请参阅 [AWS SAMCLI 配置文件](serverless-sam-cli-config.md)。

`--config-file PATH`  <a name="sam-cli-command-reference-sam-sync-options-config-file"></a>
包含要使用的默认参数值的配置文件的路径和文件名。在项目目录的根目录中，默认值为“`samconfig.toml`”。有关配置文件的详细信息，请参阅 [AWS SAMCLI 配置文件](serverless-sam-cli-config.md)。

`--dependency-layer | --no-dependency-layer`  <a name="sam-cli-command-reference-sam-sync-options-dependency-layer"></a>
指定是否将单个函数的依赖项分离到另一层以加快同步过程。  
*默认值*：`--dependency-layer`

`--image-repository TEXT`  <a name="sam-cli-command-reference-sam-sync-options-image-repository"></a>
此命令用于上传函数映像的 Amazon Elastic Container Registry (Amazon ECR) 存储库的名称。对于使用 `Image` 包类型声明的函数是必需的。

`--image-repositories TEXT`  <a name="sam-cli-command-reference-sam-sync-options-image-repositories"></a>
函数与其 Amazon ECR 存储库 URI 之间的映射。通过逻辑 ID 引用函数。以下是示例：  

```
$ sam sync --image-repositories Function1=123456789012.dkr.ecr.us-east-1.amazonaws.com/my-repo
```
您可以在单个命令中多次指定此选项。

`--kms-key-id TEXT`  <a name="sam-cli-command-reference-sam-sync-options-kms-key-id"></a>
 AWS Key Management Service (AWS KMS) 密钥的 ID，用于对 Amazon S3 存储桶中的静态项目进行加密。如果您未指定此选项，则 AWS SAM 使用 Amazon S3 托管的加密密钥。

`--metadata`  <a name="sam-cli-command-reference-sam-sync-options-metadata"></a>
要附加到模板中引用的所有构件的元数据的映射。

`--notification-arns LIST`  <a name="sam-cli-command-reference-sam-sync-options-notification-arns"></a>
与堆栈关联的亚马逊简单通知服务 (Amazon SNS) Service ARNs 主题 CloudFormation 列表。

`--no-use-container`  <a name="ref-sam-cli-sync-options-no-use-container"></a>
让您可以使用 IDE toolkit 来设置默认行为的选项。

`--parameter-overrides`  <a name="sam-cli-command-reference-sam-sync-options-parameter-overrides"></a>
包含编码为键值对的 CloudFormation 参数覆盖的字符串。使用与 AWS Command Line Interface (AWS CLI) 相同的格式。 AWS SAMCLI 格式为显式密钥和值关键字，每个覆盖都用空格分隔。以下是两个示例：  
+ `--parameter-overrides ParameterKey=hello,ParameterValue=world`
+ `--parameter-overrides ParameterKey=hello,ParameterValue=world ParameterKey=example1,ParameterValue=example2 ParameterKey=apple,ParameterValue=banana`

`--resource TEXT`  <a name="sam-cli-command-reference-sam-sync-options-resource"></a>
指定要同步的资源类型。要同步多个资源，可以多次指定此选项。`--code` 选项支持此选项。该值必须是 `--code` 下列出的资源之一。例如 `--resource AWS::Serverless::Function --resource AWS::Serverless::LayerVersion`。

`--resource-id TEXT`  <a name="sam-cli-command-reference-sam-sync-options-resource-id"></a>
指定要同步的资源 ID。要同步多个资源，可以多次指定此选项。`--code` 选项支持此选项。例如 `--resource-id Function1 --resource-id Function2`。

`--role-arn TEXT`  <a name="sam-cli-command-reference-sam-sync-options-role-arn"></a>
应用变更集时 CloudFormation 扮演的 IAM 角色的 Amazon 资源名称 (ARN)。

`--s3-bucket TEXT`  <a name="sam-cli-command-reference-sam-sync-options-s3-bucket"></a>
此命令用于上传 CloudFormation 模板的亚马逊简单存储服务 (Amazon S3) 存储桶的名称。如果模板大于 51,200 字节，则需要 `--s3-bucket` 或 `--resolve-s3` 选项。如果同时指定 `--s3-bucket` 和 `--resolve-s3` 选项，则会出现错误。

`--s3-prefix TEXT`  <a name="sam-cli-command-reference-sam-sync-options-s3-prefix"></a>
上传到 Amazon S3 存储桶的构件的名称中添加的前缀。前缀名称是 Amazon S3 存储桶的路径名称（文件夹名称）。这仅适用于使用 `Zip` 包类型声明的函数。

`--save-params`  <a name="sam-cli-command-reference-sam-sync-options-save-params"></a>
将您在命令行中提供的参数保存到 AWS SAM 配置文件中。

`--skip-deploy-sync | --no-skip-deploy-sync`  <a name="sam-cli-command-reference-sam-sync-options-skip-deploy-sync"></a>
若不需要，则指定 `--skip-deploy-sync` 以跳过初始基础设施同步。 AWS SAMCLI会将您的本地 AWS SAM 模板与已部署的 CloudFormation 模板进行比较，并且仅在检测到更改时才执行部署。  
指定`--no-skip-deploy-sync`每次运行时`sam sync`都执行 CloudFormation 部署。  
要了解更多信息，请参阅[跳过初始 CloudFormation 部署](using-sam-cli-sync.md#using-sam-cli-sync-options-skip-deploy-sync)。  
*默认值*：`--skip-deploy-sync`

`--stack-name TEXT`  <a name="sam-cli-command-reference-sam-sync-options-stack-name"></a>
您的应用程序的 CloudFormation 堆栈名称。  
此选项是必需的。

`--tags LIST`  <a name="sam-cli-command-reference-sam-sync-options-tags"></a>
要与已创建或更新的堆栈关联的标签列表。 CloudFormation 还会将这些标签传播到堆栈中支持它的资源。

`--template-file, --template, -t PATH`  <a name="sam-cli-command-reference-sam-sync-options-template-file"></a>
您的 AWS SAM 模板所在的路径和文件名。  
如果指定此选项，则仅 AWS SAM 部署模板及其指向的本地资源。

`--use-container, -u`  <a name="sam-cli-command-reference-sam-sync-options-use-container"></a>
如果您的函数依赖于具有本机编译依赖关系的包，请使用此选项在 AWS Lambda类似的Docker容器中构建函数。  
目前，此选项与 `--dependency-layer` 不兼容。如果您将 `--use-container` 与 `--dependency-layer` 一起使用，则 AWS SAM CLI 会通知您并继续 `--no-dependency-layer`。

`--watch`  <a name="sam-cli-command-reference-sam-sync-options-watch"></a>
启动一个进程，监视您的本地应用程序是否有更改，并自动将其同步到。 AWS 云默认情况下，当您指定此选项时，会在更新应用程序中的所有资源时对其进行 AWS SAM 同步。使用此选项， AWS SAM 执行初始 CloudFormation 部署。然后， AWS SAM 使用 AWS 服务 APIs 来更新代码资源。 AWS SAM CloudFormation 用于在更新 AWS SAM 模板时更新基础架构资源。

`--watch-exclude TEXT`  <a name="sam-cli-command-reference-sam-sync-options-watch-exclude"></a>
禁止文件或文件夹用于文件更改的观测。如果要使用此选项，则还必须提供 `--watch`。  
此选项收到键值对：  
+ **键**：应用程序中 Lambda 函数的逻辑 ID。
+ **值**：要排除的关联文件名或文件夹。
当您更新使用该`--watch-exclude`选项指定的任何文件或文件夹时， AWS SAM CLI将不会启动同步。但是，当对其他文件或文件夹的更新启动同步时，这些文件或文件夹将包含在该同步中。  
您可以在单个命令中多次提供此选项。

## 示例
<a name="sam-cli-command-reference-sam-sync-examples"></a>

有关使用此命令的示例，请参阅[sam sync 命令的选项](using-sam-cli-sync.md#using-sam-cli-sync-options)。