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

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

配置 Amazon SAM CLI

为Amazon Serverless Application Model命令行界面 (Amazon SAMCLI) 配置凭证、基本设置和项目设置。

配置凭证和基本设置

使用Amazon Command Line Interface (Amazon CLI) 配置基本设置,例如Amazon凭据、默认区域名称和默认输出格式。配置完成后,您可以在Amazon SAM CLI 中使用这些设置。要了解有关更多信息,请参阅Amazon Command Line Interface用户指南

有关快速设置说明,请参阅步骤 5:Amazon CLI使用配置Amazon凭证

配置项目设置

您可以在配置文件中指定特定于项目的设置,例如参数值,以与Amazon SAM CLI 一起使用。

  • 此配置文件采用TOML文件格式。要了解更多信息,请参阅TOML文档TOML中的。

  • 默认配置文件名是samconfig.toml

  • 默认配置文件位置是项目的根目录。这与您的Amazon SAM模板文件位于同一位置。

以下是 samconfig.toml 文件的示例:

...
version = 0.1

[default]
[default.global]
[default.global.parameters]
stack_name = "sam-app"

[default.build.parameters]
cached = true
parallel = true

[default.deploy.parameters]
capabilities = "CAPABILITY_IAM"
confirm_changeset = true
resolve_s3 = true

[default.sync.parameters]
watch = true

[default.local_start_api.parameters]
warm_containers = "EAGER"

[prod]
[prod.sync]
[prod.sync.parameters]
watch = false

配置和使用不同的环境

环境是一种命名标识符,可用于指定项目设置的集合。

  • 默认环境是[default]

  • 要创建新环境,请指定新的表头。例如,[prod]

  • 环境名称应始终是表头中的第一个条目。

  • samconfig.toml文件中创建环境后,您可以使用--config-env选项进行指定。以下是示例:

    $ sam build --config-env "prod"

配置和使用参数值

您可以为每个Amazon SAM CLI 命令指定参数值。

  • 表头中的第二个条目标识了Amazon SAM CLI 命令。例如,为sam build命令[default.build]指定默认环境值。

  • 当Amazon SAM CLI 命令包含子命令(例如)时sam local,使用_(下划线)。例如,[environment.local_invoke]

  • 当Amazon SAM CLI 命令或子命令包含-(连字符)时,将其替换为_(下划线)。例如,sam local start-api 改为 [environment.local_start_api]

  • 要为Amazon SAM CLI 指定参数值,请将参数条目添加到 TOML 表标题中。例如,[environment.command.parameters]

  • 要为所有命令指定参数值global,请使用代替命令。例如,[environment.global.parameters]

指定参数值时:

  • 每个配置条目都是一个TOML键值对。例如,在watch = false配置条目中,watch是密钥和false值。

  • 配置密钥是Amazon SAM CLI 命令的长格式选项名称。

    • 有关命令和选项的列表,请参阅Amazon SAMCLI 命令参考

    • 例如,sam sync --template-file project.yaml可以按如下方式指定:

      [default.sync.parameters]
      template_file = "project.yaml"
  • 配置值可以采用以下形式:

    • 布尔值可以是truefalse。例如,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"]

使用配置的值时,优先顺序如下:

  • 您在命令行提供的参数值优先于配置文件和模板文件Parameters部分中的相应值。

  • 如果在命令行中使用该--parameter-overrides选项,或者在配置文件中使用parameter_overrides密钥,则其值优先于模板文件Parameters部分中的值。

  • 在您的配置文件中,为特定命令表提供的条目优先于[environment.global]部分中的条目。以下是 samconfig.toml 文件示例:

    [default.global.parameters]
    stack_name = "common-stack"
    
    [default.deploy.parameters]
    stack_name = "my-app-stack"

    sam deploy命令将使用堆栈名称my-app-stack。任何其他命令都将使用堆栈名称common-stack

将Amazon SAM CLI 与配置文件一起使用

某些命令(例如sam deploy --guided)提供交互式流程,您可以使用该流程来设置配置值。以下是sam deploy --guided交互流tity Clity Centity Centy

sam-app $ sam deploy --guided Configuring SAM deploy ====================== Looking for config file [samconfig.toml] : Found Reading default arguments : Success Setting default arguments for 'sam deploy' ========================================= Stack Name [sam-app]: ENTER AWS Region [us-west-2]: ENTER #Shows you resources changes to be deployed and require a 'Y' to initiate deploy Confirm changes before deploy [Y/n]: n #SAM needs permission to be able to create roles to connect to the resources in your template Allow SAM CLI IAM role creation [Y/n]: ENTER #Preserves the state of previously provisioned resources when an operation fails Disable rollback [y/N]: ENTER HelloWorldFunction may not have authorization defined, Is this okay? [y/N]: y Save arguments to configuration file [Y/n]: ENTER SAM configuration file [samconfig.toml]: ENTER SAM configuration environment [default]: ENTER

在交互流程中,任何配置文件中已经存在的值将显示在[ ](方括号)中。对于您在交互流程中提供的新值,Amazon SAMCLI 会将这些值写入您的配置文件。

在此示例中,Amazon SAMCLI 将以下内容写入您的配置文件:

[default.deploy]
[default.deploy.parameters]
capabilities = "CAPABILITY_IAM"
confirm_changeset = true
resolve_s3 = true
s3_bucket = "aws-sam-cli-managed-default-samclisourcebucket-1a4x26zabcde"
s3_prefix = "sam-app"
region = "us-west-2"

将值写入配置文件时,Amazon SAMCLI 按如下方式处理全局值:

  • 如果输入的参数值存在于全局命令表中,并且特定的命令表(例如[environment.deploy.parameters])Amazon SAM不将该值写入特定的命令表。

  • 如果输入的参数值同时存在于全局命令表和特定命令表中,则从特定命令表中Amazon SAM删除键值对。在这里,Amazon SAM假设你想用全局命令值覆盖你的特定命令值。