本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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尋找組態檔案:
-
自訂組態檔案 – 如果您使用
--config-file
選項來指定檔案名稱和位置,則 會先 AWS SAMCLI尋找此檔案。 -
預設
samconfig.toml
檔案 – 這是預設組態檔案名稱和格式,位於專案根目錄。如果您未指定自訂組態檔案,則 會接著 AWS SAMCLI尋找此檔案。 -
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
-
布林值可以是
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"]
。
YAML
-
布林值可以是
true
或false
。例如: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
。
建立和修改組態檔案
建立組態檔案
當您使用 建立應用程式時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刪除特定項目,以便全域值。