概要
Lambda関数の開発において、SAM(Serverless Application Model)
を利用することで、ローカルでの開発がスムーズに行えます。
しかし、Lambda関数をローカルで呼び出す際、通常の方法では結果がファイルに保存されず、ターミナル上(Macの場合)に表示
されてしまいます。
そこでLambda関数の出力結果やログをファイルに保存する方法
があったので備忘録として残したいと思います。
SAM(Serverless Application Model)とは?
SAM(Serverless Application Model)は、Lambda関数の開発において非常に便利なオープンソースフレームワーク
です。
SAMを使用することで、ローカルでの開発プロセスが劇的に簡略化されます。これにより、Lambda関数の開発を迅速かつ効果的に行えるようになります。
公式がかなり分かりやすいです。
出力結果やログはファイルに保存したい
下記のように、SAM CLIでなにもオプションを指定せずにLambda関数をローカルで実行するとファイルには出力されません。
$ sam local invoke MyFunctionName
省略...
{"statusCode": 200, "body": "{\"message\": \"hello world\"}"}%
そこで、オプションを使用することで出力結果とログをファイルに出力することができます。
以下はその手順です。
まずは簡単なLambda関数を用意します。
def handler(event, context):
print("log")
return "hello world"
次に、Lambda関数の出力結果である "hello world" をファイルに保存します。
sam local invoke 1> stdout.log
同様に、ログもファイルに保存します。
sam local invoke 2> stderr.log
このように、SAM CLIにオプションを指定することで、Lambda関数の出力結果とログをファイルに保存できます。これにより、後で結果やログを簡単に確認できるようになります。
参考