AWS SAM 範本解剖學 - AWS Serverless Application Model

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

AWS SAM 範本解剖學

AWS SAM 範本檔案緊跟 AWS CloudFormation 範本檔案的格式,如《使用指南》中的〈範本剖析AWS CloudFormation中所述。範本檔案和 AWS SAM 範本檔案之 AWS CloudFormation 間的主要差異如下:

  • 轉換聲明。 AWS SAM 範本檔案需要宣告Transform: AWS::Serverless-2016-10-31。此宣告會將 AWS CloudFormation 範本檔案識別為 AWS SAM 範本檔案。如需有關轉換的詳細資訊,請參閱AWS CloudFormation 使用指南中的「換」。

  • 「全局變量」部分。Globals區段是唯一的 AWS SAM。它定義了所有無伺服器函數和 API 通用的屬性。所有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 使用指南中的「換」。

全局變量(可選)

所有無伺服器函數、API 和簡單表格通用的屬性。所有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 (選用)

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

本節與 AWS CloudFormation 模板Mappings部分直接對應。

Conditions (選用)

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

本節與 AWS CloudFormation 模板Conditions部分直接對應。

Resources (必要)

堆疊資源及其屬性,例如亞馬遜彈性運算雲端 (Amazon EC2) 執行個體或亞馬遜簡單儲存服務 (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 應用程式的指示。