AWS SAMCLI配置文件 - AWS Serverless Application Model

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS SAMCLI配置文件

指 AWS Serverless Application Model 令行介面 (AWS SAMCLI) 支援可用於規劃 AWS SAMCLI指令參數值的專案層級規劃檔。

如需建立和使用組態檔的文件,請參閱配置 AWS SAMCLI

預設組態檔案設定

AWS SAM 使用下列預設組態檔案設定:

  • Name (名稱) – samconfig

  • 位置 — 在項目的根目錄。這與您的template.yaml檔案位置相同。

  • 格式TOML. 若要進一步了解,請參閱TOML文件中的 TOML

以下是包含預設組態檔案名稱和位置的範例專案結構:

sam-app
├── README.md
├── __init__.py
├── events
├── hello_world
├── samconfig.toml
├── template.yaml
└── tests

以下是範例 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

支援的組態檔案格式

TOML[YAML|YML]格式支持。請參閱以下基本語法:

TOML

version = 0.1 [environment] [environment.command] [environment.command.parameters] option = parameter value

YAML

version: 0.1 environment: command: parameters: option: parameter value

指定組態檔

依預設,會依下列順序 AWS SAMCLI尋找組態檔案:

  1. 自訂組態檔案 — 如果您使用--config-file選項來指定檔案名稱和位置,會先 AWS SAMCLI尋找此檔案。

  2. 默認samconfig.toml文件」— 這是默認配置文件名和格式,位於項目的根目錄中。如果您未指定自訂組態檔案,接下 AWS SAMCLI來會尋找此檔案。

  3. samconfig.[yaml|yml]file — 如果專案的根目錄中samconfig.toml不存在,會 AWS SAMCLI尋找此檔案。

以下是使用--config-file選項指定自訂組態檔案的範例:

$ sam deploy --config-file myconfig.yaml

組態檔案基本概

環境

環境是具名識別碼,其中包含一組唯一的組態設定。您可以在單個 AWS SAM 應用程序中擁有多個環境。

預設環境名稱為default

使用 AWS SAMCLI--config-env此選項指定要使用的環境。

Command

是指定參數值的指 AWS SAMCLI令。

若要指定所有指令的參數值,請使用global識別碼。

參考 AWS SAMCLI指令時,請以底線 ( ) 取代空格 () 和連字號 (_)。請參閱以下範例:

  • build

  • local_invoke

  • local_start_api

參數

參數被指定為鍵值對。

  • 是 AWS SAMCLI命令選項名稱。

  • 是要指定的值。

指定金鑰時,請使用長格式命令選項名稱,並以底線 () 取代連字號 ()。_範例如下:

  • region

  • stack_name

  • template_file

參數值規則

TOML

  • 布林值可以是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"]

YAML

  • 布林值可以是truefalse。例如 confirm_changeset: true

  • 對於包含單一字串值的項目,引號 ("") 是選擇性的。例如 region: us-west-2。這包括包含以單一字串形式提供的多個索引鍵值配對的項目。以下是範例:

    $ sam deploy --tags "foo=bar hello=world"
    default: deploy: parameters: tags: foo=bar hello=world
  • 對於包含值清單的項目,或可在單一指令中多次使用的項目,請將它們指定為字串清單。

    以下是範例:

    $ sam remote invoke --parameter "InvocationType=Event" --parameter "LogType=None"
    default: remote_invoke: parameter: - InvocationType=Event - LogType=None

配置優先級

設定值時,會發生下列優先順序:

  • 您在指令行中提供的參數值優先於範本檔案和組態檔案Parameters區段中的對應值。

  • 如果在指令行或組態檔案中使用該--parameter-overrides選項與parameter_overrides索引鍵一起使用,則其值優先於範本檔案Parameters區段中的值。

  • 在組態檔案中,針對特定指令提供的項目優先於全域項目。在下面的例子中,sam deploy命令將使用堆棧名稱my-app-stack

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

建立和修改組態檔

建立組態檔

當您使用建立應用程式時sam init,會建立預設samconfig.toml檔案。您也可以手動建立組態檔案。

修改組態檔

您可以手動修改組態檔案。此外,在任何 AWS SAMCLI互動式流程期間,已配置的值將顯示在括號 ([ ]) 中。如果您修改這些值, AWS SAMCLI將會更新您的組態檔案。

以下是使用sam deploy --guided指令的互動式流程範例:

$ 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

修改組態檔案時,會按如下方式 AWS SAMCLI處理全域值:

  • 如果參數值存在於組態檔案的global區段中,則 AWS SAMCLI不會將該值寫入特定命令區段。

  • 如果參數值同時存在於global和特定指令區段中,則 AWS SAMCLI會刪除特定項目,以支援整體值。