本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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尋找組態檔案:
-
自訂組態檔案 — 如果您使用
--config-file
選項來指定檔案名稱和位置,會先 AWS SAMCLI尋找此檔案。 -
「默認
samconfig.toml
文件」— 這是默認配置文件名和格式,位於項目的根目錄中。如果您未指定自訂組態檔案,接下 AWS SAMCLI來會尋找此檔案。 -
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
-
布林值可以是
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會刪除特定項目,以支援整體值。