AWS Serverless Application Model (AWS SAM) とは
AWS Serverless Application Model (AWS SAM) は、Infrastructure as Code (IaC) を使用した、サーバーレスアプリケーション構築のためのオープンソースのフレームワークです。開発者は、AWS SAM の省略構文を使用して、デプロイ中にインフラストラクチャに変換される CloudFormation
-
AWS SAM CLI - サーバーレスアプリケーションの開発、ローカルテスト、デプロイに役立つコマンドラインツール。
-
AWS SAM テンプレート - サーバーレスリソースを定義するための簡素化された構文を提供する CloudFormation の拡張機能。
sam init コマンドを使用すると、プロジェクトディレクトリが作成されます。これは AWS SAM プロジェクトと呼ばれるもので、通常は AWS SAM テンプレート、アプリケーションコード、その他の設定ファイルが含まれています。
AWS SAM を使用する場合
AWS SAM は、CloudFormation の全機能を活用して簡素化されたサーバーレス開発を行いたいというシナリオに最適な IaC ソリューションです。例えば、SAM は以下を実行するために使用できます。
-
サーバーレスアプリケーション: SAM を使用すると、最小限のコードで AWS Lambda 関数、Amazon API Gateway API、Amazon DynamoDB テーブル、その他のサーバーレスリソースをすばやく定義できます。
-
CloudFormation の機能強化: SAM を既存の CloudFormation テンプレートと組み合わせて、従来のインフラストラクチャにサーバーレスコンポーネントを追加できます。SAM リソースは、同じテンプレート内の標準の CloudFormation リソースと連動します。
-
ローカル開発とテスト: SAM CLI を使用して Lambda 関数をローカルでテストし、API Gateway エンドポイントをシミュレートして、サーバーレスアプリケーションを AWS にデプロイする前に開発マシンでデバッグできます。
-
サーバーレス向けの CI/CD: ステージング環境と本番環境に必要な CloudFormation インフラストラクチャを自動的に生成する SAM テンプレートを使用して、デプロイパイプラインを構築できます。
-
コンソールで作成したリソースからの移行: SAM テンプレートを使用して、AWS マネジメントコンソールで作成した Lambda 関数と API Gateway リソースを Infrastructure as Code に変換できます。
AWS SAM と他の IaC ツールの比較
-
CloudFormation の代わりに SAM を使用して、テンプレートの互換性を維持しながらサーバーレスリソース定義を簡素化します。
-
プログラム的なアプローチではなく、宣言的なアプローチでインフラストラクチャを記述したい場合は、AWS CDK の代わりに SAM を使用します。
-
SAM CLI のローカルテスト機能を使用して SAM と AWS CDK を組み合わせ、CDK アプリケーションを強化します。
主な特徴
AWS SAM により、以下を可能にすることでデベロッパーエクスペリエンスを向上させるさまざまな利点が提供されます。
- より少ないコードを使用して、アプリケーションインフラストラクチャコードを迅速に定義する
-
AWS SAM テンプレートを作成してサーバーレスアプリケーションインフラストラクチャコードを定義します。テンプレートを直接 CloudFormation にデプロイして、リソースをプロビジョニングします。
- 開発ライフサイクル全体を通じてサーバーレスアプリケーションを管理する
-
AWS SAM CLI を使用して、開発ライフサイクルの作成、構築、デプロイ、テスト、モニタリングの各フェーズを通じてサーバーレスアプリケーションを管理します。詳細については、「AWS SAM CLI」を参照してください。
- AWS SAM コネクタを使用してリソース間の許可を迅速にプロビジョニングする
-
AWS SAM テンプレートで AWS SAM コネクタを使用して、AWS リソース間の許可を定義します。AWS SAM は、コードを変換して、ユーザーの意図を円滑に実現するために必要な IAM 許可にします。詳細については、「AWS SAM コネクタによるリソースに対するアクセス許可の管理」を参照してください。
- 開発中にローカルの変更をクラウドに継続的に同期する
-
AWS SAM CLI sam sync コマンドを使用すると、ローカルの変更がクラウドに自動的に同期され、開発およびクラウドテストのワークフローが高速化されます。詳細については、「sam sync を使用する AWS クラウド への同期の概要」を参照してください。
- Terraform サーバーレスアプリケーションを管理する
-
AWS SAM CLI を使用して、ローカルで Lambda 関数とレイヤーのデバッグやテストを実行します。詳細については、「AWS SAMCLITerraform のサポート」を参照してください。
関連情報
AWS SAM の仕組みについては、「AWS SAM の仕組み」を参照してください。
AWS SAM の使用を開始するには、「AWS SAM の開始方法」を参照してください。
AWS SAM を使用してサーバーレスアプリケーションを作成する方法の概要については、「AWS SAM を使用する方法」を参照してください。