本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 globalsDescription:StringMetadata:template metadataParameters:set of parametersMappings:set of mappingsConditions:set of conditionsResources:set of resourcesOutputs: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 (選用)
-
可用來指定條件式參數值之索引鍵與相關聯值的映射,與查詢表格類似。您可以使用
Fn::FindInMapResources和Outputs區段中的內部 函數,將索引鍵與對應的值進行比對。本節直接對應至 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-stacksAWS Command Line Interface (AWS CLI) 命令來檢視名稱。本節直接對應至 AWS CloudFormation 範本的
Outputs區段。
後續步驟
若要下載和部署包含 AWS SAM 範本檔案的範例無伺服器應用程式,請參閱 入門 AWS SAM 並遵循 中的指示教學課程:使用 部署 Hello World 應用程式 AWS SAM。