本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon SAM CLI 配置文件
这些区域有:Amazon SAMCLI 支持存储其命令的默认参数的项目级配置文件。此配置文件位于TOML 文件格式samconfig.toml. 文件的默认位置是项目的根目录,其中包含项目的Amazon SAM模板文件。
您可以手动编辑此文件以为任何文件设置默认参数Amazon SAMCLI 命令。此外,sam deploy --guided命令将参数子集写入配置文件。有关此命令的更多信息,请参阅使用编写配置sam deploy
--guided本主题后面的。
示例
下面是一个示例配置文件,其中包含三组用于default环境。一套用于所有命令,一套用于deploy命令,一个是用于build命令。
version=0.1 [default.global.parameters] stack_name = "common-stack" [default.deploy.parameters] stack_name = "my-app-stack" s3_bucket = "my-source-bucket" s3_prefix = "my-s3-prefix" image_repositories = ["my-function-1=image-repo-1", "my-function-2=image-repo-2"] region = "us-west-2" confirm_changeset = true capabilities = "CAPABILITY_IAM" tags = "project=\"my-application\" stage=\"production\"" [default.build.parameters] container_env_var = ["Function1.GITHUB_TOKEN=TOKEN1", "Function2.GITHUB_TOKEN=TOKEN2"] container_env_var_file = "env.json" no_beta_features = true
配置文件规则
这些区域有:Amazon SAMCLI 将以下规则应用于配置文件:
文件名和位置
-
默认配置文件名为
samconfig.toml并位于项目的根目录中。 -
您可以使用
--config-file参数。
表
-
这些区域有:Amazon SAMCLI 使用 TOML 表按环境和命令对配置条目进行分组。单个配置文件可以包含多个环境的表、命令和子命令。
-
默认环境名称命名为
default. 您可以使用--config-env参数。 -
对于命令,表头的格式为
[. 例如,对于environment.command.parameters]sam deploy的命令default环境中,配置表标题为[default.deploy.parameters]. -
对于子命令,表头的格式为
[. 也就是说,用分隔命令和子命令environment.command_subcommand.parameters]_(下划线)。例如,对于sam local invoke的命令default环境中,配置表标题为[default.local_invoke.parameters]. -
如果任何命令或子命令包含
-(连字符)字符,将其替换为_(下划线)。例如,对于sam local start-api命令,配置表标题是[default.local_start_api.parameters]. -
要为所有命令指定参数,请使用
global关键字作为表标题中的命令 ([)。例如,用于的全局表标题environment.global.parameters]default环境[default.global.parameters].
配置条目
-
每个配置条目都是一个 TOML 键值对。
-
配置密钥是带有
-(连字符)字符替换为_(下划线)。有关每个命令的可用参数列表,请参阅Amazon SAMCLI 命令参考或者运行sam.command--help -
配置值可采用以下形式:
-
对于切换参数,值可以是
true要么false(没有引号)。例如:confirm_changeset = true。 -
对于采用单个参数的参数,值是被包围的参数
" "(引号)。例如:region = "us-west-2"。 -
对于采用参数列表的参数,参数在其中以空格分隔
" "(引号)。例如:capabilities = "CAPABILITY_IAM CAPABILITY_NAMED_IAM"。-
要指定键值对的列表,这些对用空格分隔,每对的值都被编码包围
" "(引号)。例如:tags = "project=\"my-application\" stage=\"production\""。
-
-
对于可以多次指定的参数,该值是参数数组。例如:
image_repositories = ["my-function-1=image-repo-1", "my-function-2=image-repo-2"]。
-
优先顺序
-
您在命令行中提供的参数值优先于配置文件中的相应条目。例如,如果您的配置文件包含条目
stack_name = "DefaultStack"然后你运行命令sam deploy --stack-name MyCustomStack,那么部署的堆栈名称为MyCustomStack. -
对于
parameter_overrides条目,您在命令行上提供的参数值和配置文件中的条目都优先于在Parameters模板文件的一节。 -
在特定命令表中提供的条目优先于
global命令部分。例如,假定配置文件包含以下表和条目:[default.global.parameters] stack_name = "common-stack" [default.deploy.parameters] stack_name = "my-app-stack"在这种情况下,
sam deploy命令使用堆栈名称my-app-stack,以及任何其他命令(例如,sam logs) 使用堆栈名称common-stack.
使用编写配置sam deploy
--guided
当你运行sam deploy --guided命令,Amazon SAMCLI 通过一系列提示指导您完成部署。
这些提示包括问题"Save arguments to samconfig.toml
[Y/n]:". 如果你回应Y在这个提示下,Amazon SAMCLI 使用的值更新配置文件deploy命令。例如,对于default环境Amazon SAM更新[default.deploy.parameters]表。
中的条目列表deploy命令表那Amazon SAM可以更新包含以下内容:
-
stack_name -
s3_bucket -
s3_prefix -
image_repository -
region -
confirm_changeset -
capabilities -
signing_profiles -
disable_rollback -
parameter_overrides注意
配置文件有一种特殊情况,该文件在两者中都包含相同参数的条目
deploy和global命令表。在这种情况下,如果你运行sam deploy --guided并为该参数提供与global命令表条目,然后deploy命令表条目被删除。通过在
sam deploy --guided提示已在中指定的相同值global命令表,Amazon SAM假设你想默认使用中的值global命令表。
引导式提示默认值的规则
要控制提示的默认值,请执行以下操作:Amazon SAM运行时会显示 CLIsam deploy --guided,您可以在命令行中指定参数,也可以在现有配置文件中指定条目。
这些提示的规则如下:
-
如果在命令行中指定值,则Amazon SAMCLI 使用这些命令行值作为相应提示的默认值。
-
如果有现有配置文件,则Amazon SAMCLI 使用该文件中匹配表中的条目作为相应提示的默认值。
命令行和配置文件之间的优先级规则与优先顺序本主题前面的一节。