

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

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

此頁面提供 AWS Serverless Application Model Command Line Interface (AWS SAM CLI) `sam sync`命令的參考資訊。
+ 如需 的簡介 AWS SAM CLI，請參閱 [什麼是 AWS SAM CLI？](what-is-sam-overview.md#what-is-sam-cli)
+ 如需使用 的文件 AWS SAM CLI，請參閱 [AWS SAM CLI](using-sam-cli.md)。

`sam sync` 命令會將本機應用程式變更同步至 AWS 雲端。

## Usage
<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>
針對此目錄，解析函數或 layer 原始程式碼的相對路徑。使用此選項可變更原始程式碼資料夾的相對路徑解析方式。根據預設，相對路徑會根據 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 Elastic Container Registry (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`
若要同步程式碼資源， 會直接 AWS SAM 使用 AWS 服務 APIs，而不是透過 部署 AWS CloudFormation。若要更新您的 CloudFormation 堆疊，請執行 **sam sync --watch**或 **sam deploy**。

`--config-env TEXT`  <a name="sam-cli-command-reference-sam-sync-options-config-env"></a>
在要使用的組態檔案中指定預設參數值的環境名稱。預設值為「預設值」。如需關於組態檔案的詳細資訊，請參閱 [AWS SAM CLI 組態檔案](serverless-sam-cli-config.md)。

`--config-file PATH`  <a name="sam-cli-command-reference-sam-sync-options-config-file"></a>
組態檔案的路徑和檔案名稱，其中包含要使用的預設參數值。專案目錄根目錄中的預設值為「`samconfig.toml`」。如需關於組態檔案的詳細資訊，請參閱 [AWS SAM CLI 組態檔案](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>
用來加密 Amazon S3 儲存貯體中靜態成品的 AWS Key Management Service (AWS KMS) 金鑰 ID。如果您未指定此選項，則 AWS SAM 會使用 Amazon S3-managed加密金鑰。

`--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>
與堆疊建立 CloudFormation 關聯的 Amazon Simple Notification Service (Amazon SNS) 主題 ARNs 清單。

`--no-use-container`  <a name="ref-sam-cli-sync-options-no-use-container"></a>
可讓您使用 IDE 工具組來設定預設行為的選項。

`--parameter-overrides`  <a name="sam-cli-command-reference-sam-sync-options-parameter-overrides"></a>
包含 CloudFormation 參數的字串會覆寫編碼為鍵值對的字串。使用與 AWS Command Line Interface () 相同的格式AWS CLI。格式 AWS SAM CLI是明確的索引鍵和值關鍵字，每個覆寫都會以空格分隔。以下是兩個範例：  
+ `--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 Resource Name (ARN)。

`--s3-bucket TEXT`  <a name="sam-cli-command-reference-sam-sync-options-s3-bucket"></a>
此命令上傳 CloudFormation 範本的 Amazon Simple Storage Service (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 SAM CLI 將比較您的本機 AWS SAM 範本與部署的 CloudFormation 範本，並只在偵測到變更時才執行部署。  
指定 在每次執行`sam sync`時`--no-skip-deploy-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 範本時， AWS SAM 會使用 CloudFormation 來更新基礎設施資源。

`--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 同步命令的選項](using-sam-cli-sync.md#using-sam-cli-sync-options)。