はじめに
「サーバーレスのローカル開発環境を整備する」というテーマでの連載も今回で最終回となります。
ローカル環境に閉じた形での開発・デバッグを経て、開発フェーズの中盤以降では、実際にクラウドで他のサービスと連携した機能テストを行うことになります。本記事ではそのフェーズで役に立つ SAM の機能をご紹介します。
この連載記事のその他の記事はこちら
サーバーレスのローカル開発環境を整備する ~後編
builders.flash メールメンバー登録
builders.flash メールメンバー登録で、毎月の最新アップデート情報とともに、AWS を無料でお試しいただけるクレジットコードを受け取ることができます。
Step 4 - クラウドと連携した開発・テスト
コードや構成を一定レベルまで開発できたら、クラウドにデプロイして、ローカルの開発環境と連携しながら実行テスト、コード修正、修正の反映確認を行います。
この作業は繰り返し起こります。その都度、ビルドとデプロイを実施するのは時間がかかりますし、実行状況をログ等で確認するのも手間です。2022/06 に公開された SAM Accelerate がこれに対する機能を提供します。
クラウドの開発・テスト用アカウントへの最初のデプロイ
ターミナルから、対象プロジェクトの template.yaml があるディレクトリ (前述の例では sample-java または HelloWorldFunction) に移動します。このサーバーレスアプリケーションを示す名前 (スタック名) を指定して実行します。
sam sync --stack-name [Stack name]
クラウドへの繰り返しのデプロイとテスト実行
「コード修正 → (クラウドへの) 変更の適用 → テスト実行 → (クラウドでの) 結果やログの確認 → 再度、コードを修正 → ・・・」という作業の繰り返しにおいて手間と時間の要因になる、“クラウドへの変更の変更” と “クラウドでの結果/ログの確認” の部分を自動化するプロセスを利用できます。
次の図のようなイメージになります。

監視コマンド
ローカルの更新状況の監視とクラウドのログ状況の監視
ローカルマシン上のターミナルを個別に開き、次に示す 2 つのコマンドをそれぞれのターミナルから実行し、そのプロセスを起動状態のままにしておきます。これらが、ローカルの更新状況の監視とクラウドのログ状況の監視を行う機能として稼働します。
sam logs --stack-name [Stack name] --include-traces --tail
-----------------------------------------------------------
sam logs --stack-name [Stack name] --include-traces --tail
開発フローの図式化

クラウドの不要リソースの整理・削除
クラウド上の開発・テスト用アカウントでの一連の作業の後、テスト用に作成したリソースを最終的には削除したいと思うでしょう。一つ一つリソースを判断して削除するのは手間です。sam delete コマンドを使って、スタックとしてデプロイしたセットをひとまとめで削除できます。 本ステップにおける一連の機能 (sam sync、sam logs、sam delete) についてはリンクの記事も参考にしてください。
am delete --stack-name [Stack name]
Step5 - クラウドの AWS アカウントへのデプロイ
SAM CLI コマンドでのデプロイ
開発・テスト用アカウントと本番アカウントで別の運用をされている場合、アプリケーションをデプロイする前に、ローカル環境から本番用 AWS アカウントへの接続設定を追加し、その接続に切り替えてデプロイするる必要があります。接続プロファイルの追加方法については、前述の記載 をご参照ください。
間違ったアカウント先への作業とならないように、開発環境から直接操作するのは開発・テスト用アカウントのみとし、本番用アカウントはターミナルからのコマンドにする (コマンドをスクリプト化しておく) というように使い分けの習慣づけをしておくのも一つの手法です。
ビルドとデプロイのコマンド
ターミナルから、テスト対象としたいプロジェクトの template.yaml があるディレクトリ (前述の例では sample-java または HelloWorldFunction) に移動し、以下のコマンドを実行します。
sam build
... (中略)
sam deploy --guided --profile [prodAccountProfile]
デプロイ後の作業
あとは、対話的にスタック名、リージョンを指定すると、デプロイ処理が始まります。なお、継続的な開発やデプロイを行う際には、こうしたコマンドによるデプロイではなく、一連の作業を自動化する CI/CD パイプラインをご検討ください。特にチーム開発を行うケースでは強くお勧めします。こちらについては、この後の「さらなるステップ」のセクションで少し触れています。
まとめ
本シリーズを通して、サーバーレスアプリケーションの開発とデバッグをローカル開発環境で進める方法、およびクラウドと連携して完成度を高める手順についてご紹介しました。テストやチーム開発など、さらに充実したサーバーレスアプリ開発体制のためのトピックもあります。
次の「さらなるステップ」についても参照ください。
さらなるステップ
チーム開発の整備: CI/CD
CI/CD が初めての方向け
CI/CD についてご存じの方向け
SAM Pipeline によって CI/CD パイプラインを構成できます。
- 参考 1 : SAM Pipeline の紹介 (英語)
- 参考 2 : コンテナ Lambda の CI/CD パイプラインを SAM Pipeline で作ろう ! (本記事はコンテナデプロイ型の Lambda を中心に展開していますが、SAM Pipeline 自体は zip 形式のLambda にも有効です)
テストについて考える
筆者プロフィール
杉 達也
アマゾン ウェブ サービス ジャパン合同会社
シニア サーバーレススペシャリスト 事業開発マネージャ
Serverless Specialist / BD として AWS Japan に勤務。
サーバーやインフラのことをあまり考えたくない、気にしたくないので、サーバーレスは魅力的です。サイジングやキャパシティプランニング作業からも開放されます。
早く、サーバーレスの世界を体験してもらいたい、そう思いつつ、日々その伝え方を考えています。

Did you find what you were looking for today?
Let us know so we can improve the quality of the content on our pages