翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS SAM テンプレートの構造分析
AWS SAM テンプレートファイルは、AWS CloudFormation ユーザーガイドの「Template anatomy」で説明されている CloudFormation テンプレートファイルの形式に追随しています。以下は、AWS SAM テンプレートファイルと CloudFormation テンプレートファイルの主な違いです。
-
Transform 宣言。
Transform: AWS::Serverless-2016-10-31宣言は AWS SAM テンプレートファイルに必須です。この宣言は、CloudFormation テンプレートファイルを AWS SAM テンプレートファイルとして識別します。Transform の詳細については、AWS CloudFormation ユーザーガイドの「Transform」を参照してください。 -
Globals セクション。
Globalsセクションは、AWS SAM に固有のセクションです。これは、すべてのサーバーレス関数と API に共通するプロパティを定義します。Globalsセクションで定義されているプロパティは、すべてのAWS::Serverless::Function、AWS::Serverless::Api、およびAWS::Serverless::SimpleTableリソースによって継承されます。このセクションの詳細については、「AWS SAM テンプレートの Globals セクション」を参照してください。 -
Resources セクション。AWS SAM テンプレートの
Resourcesセクションには、CloudFormation リソースと AWS SAM リソースの組み合わせを含めることができます。CloudFormation リソースの詳細については、AWS CloudFormation ユーザーガイドの「AWS resource and property types reference」を参照してください。AWS SAM リソースの詳細については、「AWS SAM リソースとプロパティ」を参照してください。
AWS SAM テンプレートファイルにあるその他すべてのセクションは、同じ名前の 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::Serverless-2016-10-31 の前) に AWS::LanguageExtensions を追加する必要があります。
Transform: - AWS::LanguageExtensions - AWS::Serverless-2016-10-31
テンプレートを作成する際には、以下の一覧が示す論理的な順序の使用が役に立つ場合があります。これは、1 つのセクションの値が前のセクションの値を参照している可能性があるためです。
- Transform (必須)
-
AWS SAM テンプレートの場合は、
AWS::Serverless-2016-10-31の値を使用してこのセクションを含める必要があります。追加の transform はオプションです。Transform の詳細については、AWS CloudFormation ユーザーガイドの「Transform」を参照してください。
- Globals (オプション)
-
すべてのサーバーレス関数、API、および単純テーブルに共通のプロパティです。
Globalsセクションで定義されているプロパティは、すべてのAWS::Serverless::Function、AWS::Serverless::Api、およびAWS::Serverless::SimpleTableリソースによって継承されます。このセクションは AWS SAM に固有です。CloudFormation テンプレートに対応するセクションはありません。
- Description (オプション)
-
テンプレートを説明するテキスト文字列です。
このセクションは、CloudFormation テンプレートの
Descriptionセクションに直接対応します。 - Metadata (オプション)
-
テンプレートに関する追加情報を提供するオブジェクトです。
このセクションは、CloudFormation テンプレートの
Metadataセクションに直接対応します。 - Parameters (オプション)
-
実行時 (スタックを作成または更新するとき) にテンプレートに渡す値です。テンプレートの
ResourcesおよびOutputsセクションからのパラメータを参照できます。Parametersセクションで宣言されるオブジェクトによって、sam deploy --guided コマンドがユーザーに追加のプロンプトを表示するようになります。sam deployコマンドの--parameter-overridesパラメータ (および設定ファイルのエントリ) を使用することで渡される値で、AWS SAM テンプレートファイルよりも優先されます。sam deployコマンドの詳細については、AWS SAM CLI コマンドリファレンスの「sam deploy」を参照してください。設定ファイルの詳細については、「AWS SAM CLI 設定ファイル」を参照してください。 - Mappings (オプション)
-
キーと関連する値のマッピングで、条件パラメータ値の指定に使用でき、ルックアップテーブルに似ています。
ResourcesセクションとOutputsセクションでFn::FindInMap組み込み関数を使用することによって、キーを対応する値と一致させることができます。このセクションは、CloudFormation テンプレートの
Mappingsセクションに直接対応します。 - Conditions (オプション)
-
スタックの作成中または更新中に、特定のリソースが作成されるかどうか、または特定のリソースプロパティに値が割り当てられるかどうかを制御する条件です。例えば、スタックが実稼働用であるかテスト環境用であるかに依存するリソースを、条件付きで作成できます。
このセクションは、CloudFormation テンプレートの
Conditionsセクションに直接対応します。 - Resources (必須)
-
Amazon Elastic Compute Cloud (Amazon EC2) インスタンスや Amazon Simple Storage Service (Amazon S3) バケットなどのスタックリソースとそれらのプロパティです。テンプレートの
ResourcesとOutputsセクションのリソースを参照できます。このセクションは、CloudFormation テンプレートの
Resourcesセクションに似ています。AWS SAM テンプレートのこのセクションには、AWS SAM リソースに加えて CloudFormation リソースを含めることができます。 - Outputs (オプション)
-
スタックのプロパティを表示するたびに返される値です。例えば、S3 バケット名の出力を宣言してから、
aws cloudformation describe-stacksAWS Command Line Interface (AWS CLI) コマンドを呼び出して名前を表示することができます。このセクションは、CloudFormation テンプレートの
Outputsセクションに直接対応します。
次のステップ
AWS SAM テンプレートファイルが含まれるサンプルサーバーレスアプリケーションをダウンロードしてデプロイするには、「AWS SAM の開始方法」を参照して、「チュートリアル: AWS SAM での Hello World アプリケーションのデプロイ」の手順に従ってください。