[アップデート] AWS Lambda のコンソール上で SAM テンプレートを生成出来るようになりました。そのまま AWS Application Composer への連携も出来るように

2023.11.15

いわさです。

今朝、AWS Lambda から AWS Application Composer へ関数テンプレートをエクスポート出来る新機能がアナウンスされました。

こちらですが、まず Lambda コンソール上で対象関数を含む SAM テンプレートを生成出来るようになりました。
そして、生成したテンプレートをダウンロードするか、あるいはそのまま AWS Application Composer へエクスポート出来るようになりました。
AWS Application Composer とは SAM ベースのアプリケーションを視覚的に作成出来るビジュアルエディターです。

アップデートアナウンスでもなんとなくわかるのですが、実際にコンソールを触ってみると使い勝手などがよくわかったので、本記事でも紹介したいと思います。

アップデート前の Lambda コンソール

まず、アップデート前の Lambda コンソールをおさらいしましょう。
アップデート前の「関数の概要」パネルは次のような形でした。馴染みのある表示ですね。

アップデート後の Lambda コンソールではダイアグラムとテンプレートを切り替えれるように

今回のアップデート後、関数の概要エリアに次のコントロールが追加されました。

ダイアグラムは従来の Lambda 関数を中心とするコンポーネントの関連付けを視覚的に表示したものとなります。
上記であれば、レイヤーを使っていない Lambda 関数が API Gateway 経由で実行されるように構成されていることがわかりますね。
こちらは特に仕様変更なしで従来どおりです。

テンプレート機能

「テンプレート」を選択すると、対象関数を SAM テンプレートで表示することが出来るようになりました。

ポイントとして、各プロパティは Lambda コンソールでの設定値を引き継いでおり、テンプレートには統合されたサービスについてもエクスポートされます。先程の関数であれば API Gateway についても設定が含まれた状態となっています。
コードについてはインラインではなくて Zip のようです。Java 以外の Node.js や Python で試しても Zip でした。

なお、関数エイリアスではテンプレートエクスポート機能が使えませんでしたが、関数バージョンでは使うことが出来ました。対象バージョンのソースコードと設定値を含めてテンプレートの生成が可能です。

テンプレート機能でテンプレートを表示した後は「Application Composer にエクスポート」か「ダウンロード機能」を使うことが出来ます。

ダウンロード機能

ダウンロード機能では対象関数のソースコードを含めたテンプレート一式をローカルへダウンロードすることが出来ます。

次のように SAM テンプレート(YAML 形式)と、ソースコードが Zip ファイルとしてダウンロードされました。

中身を確認してみるとソースコードと、コンソール上で表示していた SAM テンプレートであることが確認出来ます。
なお、Python の場合はソースコードがダウンロードされますが、.NET などのバイナリアップロード系のランタイムで試したところ DLL 一式が Zip ファイルでダウンロードされました。当然ですが。

Lambda コンソールではなくてローカルのエディタで開発を行いたい場合に使えそうです。

Application Composer にエクスポート機能

「Application Composer にエクスポート」機能の使い勝手も気になるところです。試してみましょう。

エクスポートボタンを押すと次のダイアログが表示されます。
どうやら Application Composer に直接テンプレートを引き渡すわけではなく、一度 S3 バケットにテンプレートをエクスポートして、Application Composer から開く仕組みのようです。

上記で「プロジェクトの確認と作成」を押すと、S3 バケットが自動で作成され、SAM テンプレートが格納され、次のように Application Composer のプロジェクトが自動で開きました。

なお、ソースコードについては S3 バケットに転送されていません。
そもそも Application Composer は SAM テンプレートを作成するための機能なので Lambda のソースコード自体は管理外です。
イメージとしては先程のダウンロード機能ではソースコードが含まれ、Application Composer へのエクスポートでは SAM テンプレートのみだと覚えておきましょう。

さいごに

本日は AWS Lambda のコンソール上で SAM テンプレートを生成出来るようになったので使い勝手などを確認してみました。

おもしろいアップデートですね。
ただ、私は SAM や Application Composer をよく使うのですが、SAM を使う場合はほとんど Lambda コンソールで設定など行わないんですよね。
Lambda 中心にサーバーレスアプリケーションを構築したり、Lambda コンソールでプロパティの設定を行いたい場合は使えそうですかね。

こういう使い方が良さそうじゃないかという方がいればコメントください。