本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AWS SAM 範本結構
AWS SAM 範本檔案嚴格遵循 AWS CloudFormation 範本檔案的格式,如 AWS CloudFormation 使用者指南中的範本結構所述。 AWS SAM 範本檔案和 AWS CloudFormation 範本檔案的主要差異如下:
-
轉換宣告。範本檔案
Transform: AWS::Serverless-2016-10-31
需要 AWS SAM 宣告。此宣告會將 AWS CloudFormation 範本檔案識別為 AWS SAM 範本檔案。如需轉換的詳細資訊,請參閱AWS CloudFormation 《 使用者指南》中的轉換。 -
全域區段。
Globals
區段對 是唯一的 AWS SAM。它定義了所有無伺服器函數和 APIs屬性。所有AWS::Serverless::Function
、AWS::Serverless::Api
和資源都會AWS::Serverless::SimpleTable
繼承Globals
區段中定義的屬性。如需本節的詳細資訊,請參閱 範本的 AWS SAM 全域區段。 -
資源區段。在 AWS SAM 範本中,
Resources
區段可以包含 AWS CloudFormation 資源和資源的組合 AWS SAM 。如需 AWS CloudFormation 資源的詳細資訊,請參閱AWS CloudFormation 《 使用者指南》中的AWS 資源和屬性類型參考。如需 AWS SAM 資源的詳細資訊,請參閱 AWS SAM 資源和屬性。
AWS SAM 範本檔案的所有其他區段會對應至相同名稱的 AWS CloudFormation 範本檔案區段。
YAML
下列範例顯示 YAML 格式的範本片段。
Transform: AWS::Serverless-2016-10-31 Globals:
set of globals
Description:String
Metadata:template metadata
Parameters:set of parameters
Mappings:set of mappings
Conditions:set of conditions
Resources:set of resources
Outputs:set of outputs
範本區段
AWS SAM 範本可以包含數個主要區段。只需要 Transform
和 Resources
區段。
您可以依任何順序包含範本區段。不過,如果使用語言延伸模組,您應該在無伺服器轉換AWS::LanguageExtensions
之前新增 (也就是在 之前AWS::Serverless-2016-10-31
),如下列範例所示:
Transform: - AWS::LanguageExtensions - AWS::Serverless-2016-10-31
當您建置範本時,使用下列清單中顯示的邏輯順序可能會有所幫助。這是因為一個區段中的值可能參考上一個區段的值。
- 轉換 (必要)
-
對於 AWS SAM 範本,您必須包含此區段,值為
AWS::Serverless-2016-10-31
。其他轉換是選用的。如需轉換的詳細資訊,請參閱AWS CloudFormation 《 使用者指南》中的轉換。
- 全域 (選用)
-
所有無伺服器函數、APIs屬性。所有
AWS::Serverless::Function
、AWS::Serverless::Api
和資源都會AWS::Serverless::SimpleTable
繼承Globals
區段中定義的屬性。本節對 是唯一的 AWS SAM。 AWS CloudFormation 範本中沒有對應的區段。
- 描述 (選用)
-
說明範本的文字字串。
本節直接對應至 AWS CloudFormation 範本的
Description
區段。 - Metadata (選用)
-
提供範本其他資訊的物件。
本節直接對應至 AWS CloudFormation 範本的
Metadata
區段。 - Parameters (選用)
-
要在執行時間傳遞至您範本的值 (當您建立或更新堆疊時)。您可以參照範本之
Resources
和Outputs
區段中的參數。Parameters
區段中宣告的物件會導致sam deploy --guided命令向使用者顯示其他提示。使用
sam deploy
命令的--parameter-overrides
參數以及組態檔案中的項目傳入的值,會比範本檔案中的項目 AWS SAM 更前面。如需sam deploy
命令的詳細資訊,請參閱 AWS SAMCLI命令參考sam deploy中的 。如需組態檔案的詳細資訊,請參閱 AWS SAMCLI 組態檔案。 - Mappings (選用)
-
可用來指定條件式參數值之索引鍵與相關聯值的映射,與查詢表格類似。您可以使用
Resources
和Outputs
區段中的Fn::FindInMap
內部 函數,將索引鍵與對應的值配對。本節直接對應 AWS CloudFormation 範本的
Mappings
區段。 - Conditions (選用)
-
條件,控制是否建立特定資源,或是否在建立或更新堆疊期間指派特定資源屬性的值。例如,您可以有條件地建立資源,取決於堆疊適用於生產還是測試環境。
本節直接對應 AWS CloudFormation 範本的
Conditions
區段。 - Resources (必要)
-
堆疊資源及其屬性,例如 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體或 Amazon Simple Storage Service (Amazon S3) 儲存貯體。您可以參照範本之
Resources
和Outputs
區段中的資源。本節類似於 範本的 AWS CloudFormation
Resources
區段。在 AWS SAM 範本中,本節除了 AWS SAM 資源之外,還可以包含 AWS CloudFormation 資源。 - Outputs (選用)
-
每當您檢視堆疊的屬性時傳回的值。例如,您可以宣告 S3 儲存貯體名稱的輸出,然後呼叫
aws cloudformation describe-stacks
AWS Command Line Interface (AWS CLI) 命令來檢視名稱。本節直接對應至 AWS CloudFormation 範本的
Outputs
區段。
後續步驟
若要下載和部署包含 AWS SAM 範本檔案的範例無伺服器應用程式,請參閱 入門 AWS SAM 並遵循 中的指示教學課程:使用 部署 Hello World 應用程式 AWS SAM。