Amazon SAM CLI 配置文件 - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

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

    注意

    配置文件有一种特殊情况,该文件在两者中都包含相同参数的条目deployglobal命令表。在这种情况下,如果你运行sam deploy --guided并为该参数提供与global命令表条目,然后deploy命令表条目被删除。

    通过在sam deploy --guided提示已在中指定的相同值global命令表,Amazon SAM假设你想默认使用中的值global命令表。

引导式提示默认值的规则

要控制提示的默认值,请执行以下操作:Amazon SAM运行时会显示 CLIsam deploy --guided,您可以在命令行中指定参数,也可以在现有配置文件中指定条目。

这些提示的规则如下:

  • 如果在命令行中指定值,则Amazon SAMCLI 使用这些命令行值作为相应提示的默认值。

  • 如果有现有配置文件,则Amazon SAMCLI 使用该文件中匹配表中的条目作为相应提示的默认值。

命令行和配置文件之间的优先级规则与优先顺序本主题前面的一节。