[レポート] AWS SAM toolkit:サーバーレスアプリケーションの構築、テスト、デバッグ DEM158 #reinvent

2019.12.10

どうも!大阪オフィスの西村です!

AWS re:Invent 2019 DEM158 - 「AWS SAM toolkit: Build, test & debug your serverless applications」のデモセッションレポートです。

セッション情報

登壇者

Trishika Pattabiraman - Sr. Product Manager Technical External Services, Amazon Web Services

概要

In this demo, we take a tour of AWS Serverless Application Model (AWS SAM) and the AWS SAM CLI. Learn how to use AWS SAM and the AWS SAM CLI to declaratively express, build, and deploy your serverless applications. We also share best practices for using the AWS SAM CLI for local testing and debugging AWS Lambda functions and Amazon API Gateway, right from your favorite IDE and preferred development workflow.

AWS Serverless Application Model(AWS SAM)とAWS SAM CLIのツアーを行います。 AWS SAMおよびAWS SAM CLIを使用して、サーバーレスアプリケーションを宣言的に表現、構築、デプロイする方法を学びます。また、お気に入りのIDEおよび優先開発ワークフローから、AWS SAM CLIを使用してAWS Lambda関数とAmazon API Gatewayをローカルでテストおよびデバッグするためのベストプラクティスも共有します。

動画

レポート

内容

▼AWS SAMはオープンソースのフレームワークでアプリケーションのビルドやデプロイを簡単にします。

私たちの目的は、AWS SAMがCloudFormationの拡張であるテンプレート仕様の2つのコンポーネントで構成され、簡単な構文でAPIのLambda関数を記述できるようにすることです。

2番目のコンポーネントは、SAM CLIであり、1つのコマンドでアプリケーションを簡単にビルドおよびデプロイできます。実行環境のようなLambdaでアプリケーションをテストし、いくつかのIDEで動作します。

▼sam initとすることで対話形式でアプリケーションを構築することができます。

▼Pythonを選択してアプリケーションの雛形ファイルを作成しました。ディレクトリ構成はこのようになっています。

ローカルテスト用の構成は含まれた状態で生成されます。ペイロードにJSONファイルを与え、APIをシミュレーションしながら実際に検証できます。

▼sam buildコマンドで作ったLambda関数のチェックをしコンパイルしてデプロイ用のパッケージを行います。

▼次はsam deploy --guidedというオプションを紹介します。

これは、デプロイに必要なパラメーターを説明し、デフォルトの設定を提供して、対話的にデプロイ設定をしていきます。また、ユーザが設定した項目はsamconfig.tomlに保存することができます。したがって、パラメーターを指定する必要はありません。あなたがオプション設定しない限り、ガイドされたフローが再び展開してデプロイすることができます。

また、以前までS3バケットを事前に作成しなければ行けなかったが、自動的に管理するようになっています。

▼次はSAMのテンプレートをみてみましょう。

非常にシンプルで、ほぼ3行でAPIを提供することができます。

▼sam local invokeを実行するとローカルでテストができます。

内部ではLambdaを模擬したDockerコンテナーを起動します。

sam local start-apiでテンプレートをもとにローカルのAPIサーバを起動して動作確認をすることができます。

▼SAM CLIはVSCodeなどいくつかのIDEと連携して使用できます。

ローカルでデバックしたり、チェックしたり、ブレークポイントを設定できたりととても簡単で便利です。

感想

AWS SAMとSAM CLIを使った基本的な流れやデプロイ、ビルド、デバッグの仕方などデモで説明してくれて、とてもわかりやすい内容でした。

また、以前触ったときは、sam deploy --guidedのように対話形式でデプロイできたり、設定を外部ファイルに出力することはできなかったので、ツールの進化している部分を多く発見できたセッション内容でした。

AWS SAMは痒い所に手が届かなくて敬遠していた人も是非試してみてはいかがでしょうか。

誰かの参考になれば幸いです。