本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 使用该文件中匹配表中的条目作为相应提示的默认值。
命令行和配置文件之间的优先级规则与优先顺序本主题前面的一节。