

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

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

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

`sam build` 命令會準備應用程式以進行開發人員工作流程中的後續步驟，例如本機測試或部署到 AWS 雲端。

## Usage
<a name="ref-sam-cli-build-usage"></a>

```
$ sam build <arguments> <options>
```

## 引數
<a name="ref-sam-cli-build-args"></a>

**Resource ID (資源 ID)**  <a name="ref-sam-cli-build-args-resource-id"></a>
選用。指示 AWS SAM 在 [AWS SAM 範本](what-is-sam-overview.md#what-is-sam-template)中建立宣告的單一資源。指定資源的建置成品將是唯一可用於工作流程中後續命令的建置成品，即 `sam package`和 。 `sam deploy`

## 選項
<a name="ref-sam-cli-build-options"></a>

`--base-dir, -s DIRECTORY`  <a name="ref-sam-cli-build-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`

`--beta-features | --no-beta-features`  <a name="ref-sam-cli-build-options-beta-features"></a>
允許或拒絕 Beta 版功能。

`--build-dir, -b DIRECTORY`  <a name="ref-sam-cli-build-options-build-dir"></a>
存放建置成品的目錄路徑。此選項會移除此目錄及其所有內容。

`--build-image TEXT`  <a name="ref-sam-cli-build-options-build-image"></a>
您要為組建提取的容器映像的 URI。根據預設， 會從 Amazon ECR Public AWS SAM 提取容器映像。使用此選項從另一個位置提取映像。  
您可以多次指定此選項。此選項的每個執行個體都可以採用字串或鍵值對。如果您指定字串，它是要用於應用程式中所有資源的容器映像的 URI。例如 `sam build --use-container --build-image amazon/aws-sam-cli-build-image-python3.8`。如果您指定金鑰/值對，則金鑰是資源名稱，而值是用於該資源的容器映像的 URI。例如 `sam build --use-container --build-image Function1=amazon/aws-sam-cli-build-image-python3.8`。使用鍵/值對，您可以為不同的資源指定不同的容器映像。  
此選項僅適用於指定 `--use-container`選項時，否則將導致錯誤。

`--build-in-source | --no-build-in-source`  <a name="ref-sam-cli-build-options-build-in-source"></a>
提供 `--build-in-source` 以直接在來源資料夾中建置您的專案。  
`--build-in-source` 選項支援下列執行時間和建置方法：  
+ **執行時間** – `sam init --runtime`選項支援的任何Node.js執行時間。
+ **組建方法** – `Makefile`、`esbuild`。
`--build-in-source` 選項與下列選項不相容：  
+ `--hook-name`
+ `--use-container `
*預設*：`--no-build-in-source`

`--cached | --no-cached`  <a name="ref-sam-cli-build-options-cached"></a>
啟用或停用快取組建。使用此選項可重複使用未從先前 builds 變更的建置成品。 會 AWS SAM 評估您是否變更專案目錄中的任何檔案。根據預設，組建不會快取。如果叫用 `--no-cached`選項，則會覆寫 samconfig.toml 中的`cached = true`設定。  
AWS SAM 不會評估您是否變更了專案所依賴的第三方模組，而您尚未提供特定版本。例如，如果您的 Python 函數包含項目為 `requirements.txt`的檔案`requests=1.x`，而最新的請求模組版本從 變更為 `1.1` `1.2`，則 AWS SAM 在您執行非快取建置之前，不會提取最新版本。

`--cache-dir`  <a name="ref-sam-cli-build-options-cached-dir"></a>
`--cached` 指定 時存放快取成品的目錄。預設快取目錄為 `.aws-sam/cache`。

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

`--config-file PATH`  <a name="ref-sam-cli-build-options-config-file"></a>
組態檔案的路徑和檔案名稱，其中包含要使用的預設參數值。專案目錄根目錄中的預設值為「`samconfig.toml`」。如需關於組態檔案的詳細資訊，請參閱 [AWS SAM CLI 組態檔案](serverless-sam-cli-config.md)。

`--container-env-var, -e TEXT`  <a name="ref-sam-cli-build-options-container-env-var"></a>
要傳遞至建置容器的環境變數。您可以多次指定此選項。此選項的每個執行個體都會接受金鑰值對，其中金鑰是資源和環境變數，而值是環境變數的值。例如：`--container-env-var Function1.GITHUB_TOKEN=TOKEN1 --container-env-var Function2.GITHUB_TOKEN=TOKEN2`。  
此選項僅適用於指定 `--use-container`選項時，否則將導致錯誤。

`--container-env-var-file, -ef PATH`  <a name="ref-sam-cli-build-options-container-env-var-file"></a>
JSON 檔案的路徑和檔案名稱，其中包含容器環境變數的值。如需容器環境變數檔案的詳細資訊，請參閱 [容器環境變數檔案](serverless-sam-cli-using-build.md#serverless-sam-cli-using-container-environment-file)。  
此選項僅適用於指定 `--use-container`選項時，否則將導致錯誤。

`--debug`  <a name="ref-sam-cli-build-options-debug"></a>
開啟偵錯記錄以列印 產生的偵錯訊息 AWS SAM CLI，並顯示時間戳記。

`--docker-network TEXT`  <a name="ref-sam-cli-build-options-docker-network"></a>
指定 Lambda Docker容器應連線的現有Docker網路的名稱或 ID，以及預設橋接網路。如果未指定，Lambda 容器只會連線到預設橋接Docker器網路。

`--exclude, -x`  <a name="ref-sam-cli-build-options-exclude"></a>
要從 () 排除的資源名稱`sam build`。例如，如果您的範本包含 `Function1`、 和 `Function2`，`Function3`而且您執行 `sam build --exclude Function2`，`Function3`則只會建置 `Function1`和 。

`--help`  <a name="ref-sam-cli-build-options-help"></a>
顯示此訊息並結束。

`--hook-name TEXT`  <a name="ref-sam-cli-build-options-hook-name"></a>
用於擴展 AWS SAM CLI功能的勾點名稱。  
接受的值：`terraform`。

`--manifest , -m PATH`  <a name="ref-sam-cli-build-options-manifest"></a>
要使用的自訂相依性資訊清單檔案路徑 （例如 package.json)，而非預設值。

`--mount-symlinks`  <a name="ref-sam-cli-build-options-mount-symlinks"></a>
確保 AWS SAM CLI 一律掛載檔案中存在的符號連結來建置或叫用。這僅適用於頂層目錄上的符號連結 （也就是直接在函數根目錄上的符號連結）。根據預設，不會掛載符號連結，除了在 NodeJS `node_modules`中使用 `build-in-source` 時需要的符號連結。

`--no-use-container`  <a name="ref-sam-cli-build-options-no-use-container"></a>
可讓您使用 IDE 工具組來設定預設行為的選項。您也可以使用 在本機機器中`sam build --no-use-container`執行組建，而不是使用 Docker 容器。

`--parallel`  <a name="ref-sam-cli-build-options-parallel"></a>
啟用平行建置。使用此選項來平行建置 AWS SAM 範本的函數和層。根據預設，函數和層會依序建置。

`--parameter-overrides`  <a name="ref-sam-cli-build-options-parameter-overrides"></a>
（選用） 包含 CloudFormation 參數覆寫編碼為鍵值對的字串。使用與 AWS Command Line Interface () 相同的格式AWS CLI。例如：'`ParameterKey`=`KeyPairName`， `ParameterValue`=`MyKey` `ParameterKey`=`InstanceType`， `ParameterValue`=`t1.micro`'。此選項與 不相容`--hook-name`。

`--profile TEXT`  <a name="ref-sam-cli-build-options-profile"></a>
從您的登入資料檔案中取得 AWS 登入資料的特定設定檔。

`--region TEXT`  <a name="ref-sam-cli-build-options-region"></a>
 AWS 區域 要部署到的 。例如 us-east-1。

`--save-params`  <a name="ref-sam-cli-build-options-save-params"></a>
將您在命令列提供的參數儲存至 AWS SAM 組態檔案。

`--skip-prepare-infra`  <a name="ref-sam-cli-build-options-skip-prepare-infra"></a>
如果未進行任何基礎設施變更，請略過準備階段。使用 搭配 `--hook-name`選項。

`--skip-pull-image`  <a name="ref-sam-cli-build-options-skip-pull-image"></a>
指定命令是否應該略過提取 Lambda 執行時間的最新 Docker 映像。

`--template-file, --template, -t PATH`  <a name="ref-sam-cli-build-options-template-file"></a>
 AWS SAM 範本檔案 的路徑和檔案名稱`[default: template.[yaml|yml]]`。此選項與 不相容`--hook-name`。

`--terraform-project-root-path`  <a name="ref-sam-cli-build-options-terraform-project-root-path"></a>
最上層目錄的相對或絕對路徑，其中包含您的Terraform組態檔案或函數原始程式碼。如果這些檔案位於包含Terraform根模組的目錄之外，請使用此選項指定其絕對或相對路徑。此選項需要`--hook-name`將 設定為 `terraform`。

`--use-container`, `-u`  <a name="ref-sam-cli-build-options-use-container"></a>
如果您的函數依賴於具有原生編譯相依性的套件，請使用此選項在類似 Lambda 的 Docker 容器中建置函數。

## 範例
<a name="sam-cli-command-reference-sam-build-examples"></a>

如需使用 `sam build` 子命令的詳細範例和深入演練，請參閱 [使用 建置 簡介 AWS SAM](using-sam-cli-build.md)。