AWS SAM 範本結構 - AWS Serverless Application Model

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

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::FunctionAWS::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 範本可以包含數個主要區段。只需要 TransformResources區段。

您可以依任何順序包含範本區段。不過,如果使用語言延伸模組,您應該在無伺服器轉換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::FunctionAWS::Serverless::Api和資源都會AWS::Serverless::SimpleTable繼承 Globals區段中定義的屬性。

本節對 是唯一的 AWS SAM。 AWS CloudFormation 範本中沒有對應的區段。

描述 (選用)

說明範本的文字字串。

本節直接對應至 AWS CloudFormation 範本的 Description區段。

Metadata (選用)

提供範本其他資訊的物件。

本節直接對應至 AWS CloudFormation 範本的 Metadata區段。

Parameters (選用)

要在執行時間傳遞至您範本的值 (當您建立或更新堆疊時)。您可以參照範本之 ResourcesOutputs 區段中的參數。Parameters 區段中宣告的物件會導致sam deploy --guided命令向使用者顯示其他提示。

使用 sam deploy命令的 --parameter-overrides 參數以及組態檔案中的項目傳入的值,會比範本檔案中的項目 AWS SAM 更前面。如需 sam deploy命令的詳細資訊,請參閱 AWS SAMCLI命令參考sam deploy中的 。如需組態檔案的詳細資訊,請參閱 AWS SAMCLI 組態檔案

Mappings (選用)

可用來指定條件式參數值之索引鍵與相關聯值的映射,與查詢表格類似。您可以使用 ResourcesOutputs區段中的Fn::FindInMap內部 函數,將索引鍵與對應的值配對。

本節直接對應 AWS CloudFormation 範本的 Mappings區段。

Conditions (選用)

條件,控制是否建立特定資源,或是否在建立或更新堆疊期間指派特定資源屬性的值。例如,您可以有條件地建立資源,取決於堆疊適用於生產還是測試環境。

本節直接對應 AWS CloudFormation 範本的 Conditions區段。

Resources (必要)

堆疊資源及其屬性,例如 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體或 Amazon Simple Storage Service (Amazon S3) 儲存貯體。您可以參照範本之 ResourcesOutputs 區段中的資源。

本節類似於 範本的 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