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

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

Amazon SAMCLI 配置文件

这些区域有:Amazon SAMCLI 支持存储其命令的默认参数的项目级别配置文件。此配置文件位于TOML 文件格式,默认文件名为samconfig.toml。文件的默认位置是项目的根目录,该目录包含项目的Amazon SAM模板文件。

您可以手动编辑此文件以设置任何Amazon SAMCLI 命令。此外,sam deploy --guided命令将参数的子集写入您的配置文件。有关此命令的更多信息,请参阅使用写入配置sam deploy --guided本主题后面的。

Example

下面是一个示例配置文件,其中包含三组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"

配置文件规则

这些区域有:Amazon SAMCLI 将以下规则应用于配置文件:

文件名和位置

  • 默认配置文件名为为samconfig.toml并位于项目的根目录中。

  • 您可以使用--config-file参数。

Tables

  • 这些区域有: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"]

Precedence

  • 您在命令行中提供的参数值优先于配置文件中的相应条目。例如,如果您的配置文件包含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

  • parameter_overrides

    注意

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

    通过在sam deploy --guided提示已经在global命令表,Amazon SAM假定您希望默认为global命令表。

指导式提示符默认值的规则

若要控制提示的默认值,Amazon SAM当您运行时,CLI 会显示sam deploy --guided,您可以在命令行上指定参数,也可以在现有配置文件中指定条目。

这些提示的规则如下所示:

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

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

命令行和配置文件之间的优先级规则与优先顺序一节前面介绍的内容。