メインコンテンツに移動

AWS サーバーレスアプリケーションモデル

AWS SAM のよくある質問

ページトピック

AWS サーバーレスアプリケーションモデル (AWS SAM) は、サーバーレスアプリケーション構築用のオープンソースフレームワークです。迅速に記述可能な構文で関数、API、データベース、イベントソースマッピングを表現できます。リソースごとにわずか数行で、任意のアプリケーションを定義して YAML を使用してモデリングできます。

AWS SAM では、迅速に記述可能な構文で関数、API、データベース、イベントソースマッピングを表現できます。デプロイ中、SAM によって SAM 構文が AWS CloudFormation 構文に変換および拡張されます。次に、CloudFormation によって信頼できるデプロイ機能を使用してリソースがプロビジョニングされます。

AWS SAM および SAM CLI は、Apache 2.0 ライセンスの下でオープンソース化されています。GitHub 上の AWS SAM または GitHub 上の AWS SAM CLI に新しい機能や拡張機能を提供することができます。

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 にインストールできます。開始するには、インストールドキュメントをご覧ください。 

AWS SAM での開発

すべて開く

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 に似た実行環境で関数コードをローカルに実行することで、Lambda 関数と SAM ベースのサーバーレスアプリケーションのローカル呼び出しとテストをサポートします。sam local コマンドを使用して、サンプルペイロードをローカルで生成したり、API をテストするためにローカルエンドポイントを開始したりすることもできます。また、Lambda 関数のテストを自動化することもできます。sam package コマンドと sam deploy コマンドを使用すると、アプリケーションコードと依存関係を「デプロイパッケージ」にバンドルし、サーバーレスアプリケーションを AWS クラウドにデプロイできます。最後に、 sam logs コマンドを使用すると、Lambda 関数のログを取得、記録、フィルタリングできます。