本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
配置 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"
-
-
配置值可以采用以下形式:
-
布尔值可以是
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"]。
-
使用配置的值时,优先顺序如下:
-
您在命令行提供的参数值优先于配置文件和模板文件
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 --guidedConfiguring SAM deploy ====================== Looking for config file [samconfig.toml] : Found Reading default arguments : Success Setting default arguments for 'sam deploy' ========================================= Stack Name [sam-app]:ENTERAWS 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]:ENTERHelloWorldFunction may not have authorization defined, Is this okay? [y/N]:ySave arguments to configuration file [Y/n]:ENTERSAM configuration file [samconfig.toml]:ENTERSAM 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 按如下方式处理全局值:
-
如果输入的参数值存在于全局命令表中,并且特定的命令表(例如
[)Amazon SAM不将该值写入特定的命令表。environment.deploy.parameters] -
如果输入的参数值同时存在于全局命令表和特定命令表中,则从特定命令表中Amazon SAM删除键值对。在这里,Amazon SAM假设你想用全局命令值覆盖你的特定命令值。