AWS SAMCLI 組態檔案 - AWS Serverless Application Model

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

AWS SAMCLI 組態檔案

Command AWS Serverless Application Model Line Interface (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] 檔案 – 如果 samconfig.toml不存在於專案的根目錄,則 AWS SAMCLI會尋找此檔案。

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

$ sam deploy --config-file myconfig.yaml
注意

--config-file 參數必須相對於 AWS SAM 範本檔案的位置,因為 AWS SAMCLI需要判斷套用組態的內容。samconfig.toml 檔案會管理您 版本的組態設定 AWS SAMCLI,而 CLI 會尋找 samconfig.toml 檔案資料夾相對的檔案 (或覆寫組態檔案參數)template.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刪除特定項目,以便全域值。