

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

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

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

`sam build` 命令用于让应用程序为开发工作流程的后续步骤（例如，本地测试或部署到 AWS 云）做好准备。

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

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

## 参数
<a name="ref-sam-cli-build-args"></a>

**Resource 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>
根据此目录解析函数或层的源代码的相对路径。如果要更改源代码文件夹相对路径的解析方式，请使用此选项。默认情况下，相对路径是根据 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>
允许或拒绝测试版功能。

`--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。默认情况下， AWS SAM 从 Amazon ECR Public 提取容器映像。使用此选项可从其他位置提取映像。  
您可以多次指定该选项。此选项的每个实例都可以采用字符串或键值对。如果指定字符串，则字符串就是要用于应用程序中所有资源的容器映像 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>
启用或禁用缓存的构建。使用此选项可以重复使用与之前版本相比未更改的构建工件。 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>
在配置文件中指定要使用的默认参数值的环境名称。默认值为“default”。有关配置文件的详细信息，请参阅 [AWS SAMCLI 配置文件](serverless-sam-cli-config.md)。

`--config-file PATH`  <a name="ref-sam-cli-build-options-config-file"></a>
包含要使用的默认参数值的配置文件的路径和文件名。在项目目录的根目录中，默认值为“`samconfig.toml`”。有关配置文件的详细信息，请参阅 [AWS SAMCLI 配置文件](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`，则只会构建 `Function1` 和 `Function3`。

`--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 始终挂载文件中存在的 symlinks，以进行构建或调用。这仅适用于顶级目录中的 symlinks（即直接位于函数根目录下的 symlinks）。默认情况下，symlinks 不会被挂载，但用于在 NodeJS 中实现 `node_modules` 的 `build-in-source` 所需的 symlinks 除外。

`--no-use-container`  <a name="ref-sam-cli-build-options-no-use-container"></a>
让您可以使用 IDE toolkit 来设置默认行为的选项。您也可以使用 `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>
指定命令是否应跳过下拉最新 Docker 映像获取 Lambda 运行时的操作。

`--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)。