AWS サーバーレスアプリケーションモデル (AWS SAM) は、サーバーレスアプリケーション構築用のオープンソースフレームワークです。迅速に記述可能な構文で関数、API、データベース、イベントソースマッピングを表現できます。リソースごとにわずか数行で、任意のアプリケーションを定義して YAML を使用してモデリングできます。
AWS SAM では、迅速に記述可能な構文で関数、API、データベース、イベントソースマッピングを表現できます。デプロイ中、SAM によって SAM 構文が AWS CloudFormation 構文に変換および拡張されます。次に、CloudFormation によって信頼できるデプロイ機能を使用してリソースがプロビジョニングされます。
AWS SAM および SAM CLI は、Apache 2.0 ライセンスの下でオープンソース化されています。AWS SAM on GitHub または AWS SAM CLI on GitHub に新機能や拡張機能を提供することができます。
AWS SAM は追加料金なしで使用できます。手動で作成した場合と同様に、SAM を使用して作成した AWS リソースについてお支払いいただきます。使用した分のみの料金が発生します。最低料金や前払いの義務はありません。
AWS SAM では、AWS Lambda でサポートされている任意のランタイムを使用するサーバーレスアプリケーションを構築できます。また、SAM CLI を使用して、Node.js、Java、Python、Go で記述された Lambda 関数をローカルでデバッグできます。
AWS SAM は、AWS Lambda がご利用いただけるすべてのリージョンで利用可能です。詳細については、AWS Lambda のリージョン表をご覧ください。
SAM コマンドラインインターフェイス (CLI) を使用すると、AWS SAM テンプレートで定義されたサーバーレスアプリケーションをローカルでビルド、テスト、デバッグできます。Lambda に似た実行環境がローカルに提供され、問題を前もって検出することができます。
AWS SAM CLI は、pip を使用して Linux、Mac、Windows にインストールできます。使用を開始するには、インストールに関するドキュメントをご覧ください。
SAM テンプレートファイルは、サーバーレスアプリケーションのアーキテクチャを表す YAML 形式のファイルです。テンプレートを使用すると、サーバーレスアプリケーションを構成するすべての AWS リソースを 1 か所で宣言できます。AWS SAM テンプレートは AWS CloudFormation テンプレートを拡張したものであるため、AWS CloudFormation テンプレートで宣言できるリソースであれば、AWS SAM テンプレートでも宣言できます。 詳細を確認する
SAM の使用を開始するには、AWS SAM CLI をインストールし、sam init コマンドを使用して、サンプルアプリケーションコードが記載された事前設定済みの AWS SAM テンプレートを生成します。AWS SAM を使用してサーバーレスアプリケーションを構築するためのガイド付きの説明については、このクイックスタートをご利用ください。
AWS SAM CLI は、SAM ベースのアプリケーションの構築をサポートしているコマンドラインインターフェイスです。AWS SAM CLI では、Lambda 関数をローカルで呼び出し、サーバーレスアプリケーションのデプロイパッケージを作成し、サーバーレスアプリケーションを AWS クラウドにデプロイできます。
SAM CLI では多数のコマンドをサポートしており、その数は増え続けています。sam init コマンドを実行すると、お客様が選んだ言語で記述されたサンプルアプリケーションコードを含んだ事前設定済みの AWS SAM テンプレートが生成されます。sam local コマンドでは、Lambda 関数と SAM ベースサーバーレスアプリケーションのローカル呼び出しとテストをサポートしており、Lambda に似た実行環境で関数コードをローカルに実行します。sam local コマンドを使用して、サンプルペイロードをローカルで生成したり、API をテストするためにローカルエンドポイントを開始したりすることもできます。また、Lambda 関数のテストを自動化することもできます。sam package と sam deploy コマンドでは、アプリケーションコードと依存関係を「デプロイパッケージ」にまとめて、サーバーレスアプリケーションを AWS クラウドにデプロイできます。最後に、sam logs コマンドでは、Lambda 関数のログを取得、表示、フィルタリングできます。