AWS Serverless Application Model (AWS SAM) とは - AWS Serverless Application Model

AWS Serverless Application Model (AWS SAM) とは

AWS Serverless Application Model (AWS SAM) は、Infrastructure as Code (IaC) を使用した、サーバーレスアプリケーション構築のためのオープンソースのフレームワークです。開発者は、AWS SAM の省略構文を使用して、デプロイ中にインフラストラクチャに変換される CloudFormation リソースおよび特殊なサーバーレスリソースを宣言します。AWS SAM を使用するときは、以下とやり取りします。

  1. AWS SAM CLI - サーバーレスアプリケーションの開発、ローカルテスト、デプロイに役立つコマンドラインツール。

  2. 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 を使用する方法」を参照してください。