[アップデート]AWS Lambdaでロギング設定を制御できるようになりました

2023.11.17

こんにちは、つくぼし(tsukuboshi0755)です!

AWS Lambdaのロギング設定を制御できるようになったというアップデートがあったので、今回試してみます!

何が嬉しいか

今までCloudWatch Logsに対するLambdaのロギング設定は、以下がデフォルトで固定され、変更できないようになっていました。

  • ログ形式:Text
  • ログレベル:なし
  • ロググループ名:/aws/lambda/<関数名>

※なおログ形式については、今までもPowertoolsを使用すればJSONに変更可能でした。

上記3点について、今回のアップデートによりLambdaのコンソールまたはAPIを通じて柔軟に設定できるようになりました!

試してみる

それではどのようにログ設定を変更できるようになったか試してみましょう。

公式では以下のブログで使い方が紹介されています。

上記のブログはLambdaのランタイムにNode.jsを採用しているので、このブログでは代わりにPythonを使用して試してみます。

それでは以下の通り、設計図Hello world function(python3.10)を使って、サンプルのLambda関数を作成してみます。

作成したLambda関数の設定タブからモニタリングおよび運用ツールペインに移動すると、新たにロギング設定という項目が追加されている事が分かります。

編集ボタンを押すと、ロギング設定の詳細を確認できます。

デフォルトのロギング設定は、以下の通りになっています。

今回はロギング設定を以下の通り変更してみます。

  • ログ形式:JSON
  • ログレベル:DEBUG(アプリケーション)
  • ロググループ名:/aws/lambda/cm-dev-hello-world-2

なおログ形式にTextを選ぶと、ログレベルを変更できない事にご注意下さい。

ロギング設定が正しく反映されているか、Lambdaを実行して確認してみます。

まずはコードタブにて、コードソースを以下の通り変更します。

import logging

logger = logging.getLogger()

def lambda_handler(event, context):
  logger.debug("Hello World!")

上記のコードは、ログレベルがDEBUG以下で設定されている時のみHello World!を出力します。

Deployボタンを押して、コードの変更を反映してください。

そしてテストタブにて、テストボタンを押してLambdaを実行し、想定通りログが出力されているか確認しましょう。

このLambda関数を実行すると、以下の通り/aws/lambda/cm-dev-hello-world-2ロググループに対して、JSON形式でDEBUGレベルのログが出力されている事が分かりました!

ちなみにLambda関数作成後、ログ形式/ログレベル/ロググループ名はいつでも変更可能なようです。

最後に

今回はAWS Lambdaのロギング設定を試してみました。

Lambdaのデフォルトの機能で柔軟にロギング設定をいじれるようになったので、普段Lambdaを使用されている方にとっては結構嬉しいアップデートなのではないでしょうか。

以上、つくぼし(tsukuboshi0755)でした!