sam build - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

sam build

本页提供 Amazon Serverless Application Model 命令行界面 (Amazon SAMCLI) sam build 命令的参考信息。

sam build 命令用于让应用程序为开发工作流程的后续步骤(例如,本地测试或部署到 Amazon Web Services 云)做好准备。

使用量

$ sam build <arguments> <options>

参数

资源 ID

可选。指示生成 Amazon SAM 在Amazon SAM 模板中声明的单个资源。指定资源的构建构件将是唯一可用于工作流程中后续命令的构建构件,即 sam packagesam deploy

Options

--base-dir, -s DIRECTORY

根据此目录解析函数或层的源代码的相对路径。如果要更改源代码文件夹相对路径的解析方式,请使用此选项。默认情况下,相对路径是根据 Amazon 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

允许或拒绝测试版功能。

--build-dir, -b DIRECTORY

已构建的构件的存储目录路径。使用此选项可移除此目录及其所有内容。

--build-image TEXT

您要为构建提取容器映像的 URI。默认情况下, Amazon 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

提供 --build-in-source 以便直接在源文件夹中生成项目。

--build-in-source 选项支持以下运行时和构建方法:

  • 运行时sam init --runtime 选项支持的任何 Node.js 运行时。

  • 构建方法Makefileesbuild

--build-in-source 选项与以下选项不兼容:

  • --hook-name

  • --use-container

默认值--no-build-in-source

--cached | --no-cached

启用或禁用缓存的构建。使用此选项可以重复使用与之前版本相比未更改的构建工件。 Amazon SAM 评估您是否更改了项目目录中的任何文件。默认情况下,不会缓存构建。如果调用了 --no-cached 选项,将会覆盖 samcofig.toml 中的 cached = true 设置。

注意

Amazon SAM 不会评估在您未提供特定版本的情况下,您是否更改了项目所依赖的第三方模块。例如,如果您的 Python 函数包含带有该条目的requirements.txt文件requests=1.x,并且最新的请求模块版本从更改1.11.2,则在运行非缓存版本之前, Amazon SAM 不会提取最新版本。

--cache-dir

在指定了 --cached 的情况下用于存储缓存构件的目录。默认缓存目录为 .aws-sam/cache

--config-env TEXT

在配置文件中指定要使用的默认参数值的环境名称。默认值为“default”。有关配置文件的详细信息,请参阅 Amazon SAMCLI 配置文件

--config-file PATH

包含要使用的默认参数值的配置文件的路径和文件名。在项目目录的根目录中,默认值为“samconfig.toml”。有关配置文件的详细信息,请参阅 Amazon SAMCLI 配置文件

--container-env-var, -e TEXT

要传递到构建容器的环境变量。您可以多次指定该选项。此选项的每个实例都采用键值对,其中键是资源和环境变量,值是环境变量的值。例如:--container-env-var Function1.GITHUB_TOKEN=TOKEN1 --container-env-var Function2.GITHUB_TOKEN=TOKEN2

在指定了 --use-container 选项的情况下此选项才适用,否则会导致错误。

--container-env-var-file, -ef PATH

包含容器环境变量值的 JSON 文件的路径和文件名。有关容器环境变量文件的更多信息,请参阅容器环境变量文件

在指定了 --use-container 选项的情况下此选项才适用,否则会导致错误。

--debug

启用调试日志记录,以打印 Amazon SAM CLI 生成的调试消息并显示时间戳。

--docker-network TEXT

指定 Lambda Docker 容器应连接到的现有 Docker 网络的名称或 ID,以及默认桥接网络。如果未指定此项,Lambda 容器将仅连接到默认的桥接 Docker 网络。

--exclude, -x

要从 sam build 中排除的资源的名称。例如,如果模板包含 Function1Function2Function3,并且您运行 sam build --exclude Function2,则只会构建 Function1Function3

--help

显示此消息并退出。

--hook-name TEXT

用于扩展 Amazon SAM CLI 功能的钩子的名称。

可接受的值:terraform

--manifest , -m PATH

要使用的自定义依赖项清单文件(例如 package.json)的路径,而不是默认路径。

--parallel

启用并行构建。使用此选项并行构建 Amazon SAM 模板的函数和层。默认情况下,函数和层是按顺序构建的。

--parameter-overrides

(可选)包含编码为键值对的 Amazon CloudFormation 参数覆盖的字符串。使用与 Amazon Command Line Interface (Amazon CLI) 相同的格式。例如:'ParameterKey=KeyPairName, ParameterValue=MyKey ParameterKey=InstanceType, ParameterValue=t1.micro'。此选项与 --hook-name 不兼容。

--profile TEXT

您的凭证文件中用于获取 Amazon 凭证的特定个人资料。

--region TEXT

Amazon Web Services 区域 要部署到的。例如,us-east-1。

--save-params

将您在命令行中提供的参数保存到 Amazon SAM 配置文件中。

--skip-prepare-infra

如果没有进行任何基础架构更改,则跳过准备阶段。使用 --hook-name 选项。

--skip-pull-image

指定命令是否应跳过下拉最新 Docker 映像获取 Lambda 运行时的操作。

--template-file, --template, -t PATH

Amazon SAM 模板文件的路径和文件名[default: template.[yaml|yml]]。此选项与 --hook-name 不兼容。

--terraform-project-root-path

包含 Terraform 配置文件或函数源代码的顶级目录的相对路径或绝对路径。如果这些文件位于包含 Terraform 根模块的目录之外,请使用此选项指定其绝对路径或相对路径。此选项要求将 --hook-name 设置为 terraform

--use-container, -u

如果函数依赖于具有本地编译的依赖项的程序包,请使用此选项在类似于 Lambda 的 Docker 容器中构建函数。