AWS CDKでLambdaのログフォーマットをJSONにする

AWS LambdaがCloudWatch Logsに出力するログのフォーマットをJSONに変更可能になりました。CDKを使用してlambda.Functionを作成する際にloggingFormatパラメータを追加することで設定できます。Node.jsアプリの場合もaws_lambda_nodejsを使用し、loggingFormatを設定可能です。ログフォーマットをJSONに変更することで、CloudWatch Logsの設定やJSONデータの取り扱いが容易になります。

広告ここから
広告ここまで

目次

    AWS LambdaがCloudWatch Logsに出力するログのフォーマットをJSONに変えれるようになりました。CDKでもパラメータ1つ追加するだけで対応できますので、早速試してみました。

    loggingFormatでログフォーマットを変更する

    CDKでLambdaを作成する際に使うlambda.Functionには、loggingFormatパラメータがあります。ここにlambda.LoggingFormat.JSONを設定すると、ログ出力がJSONに変わります。

    import * as cdk from 'aws-cdk-lib';
    import { Construct } from 'constructs';
    import * as lambda from 'aws-cdk-lib/aws-lambda';
    
    export class CdkStack extends cdk.Stack {
      constructor(scope: Construct, id: string, props?: cdk.StackProps) {
        super(scope, id, props);
    
        new lambda.Function(this, 'PythonFunction', {
          runtime: lambda.Runtime.PYTHON_3_12,
          handler: 'lambda_forecast.handler',
          code: lambda.Code.fromAsset('lambda'),
          loggingFormat: lambda.LoggingFormat.JSON,
    
        })
      }
    }
    

    NodeのConstructもloggingFormatをサポートしている

    Node.jsアプリをデプロイする場合は、aws_lambda_nodejsを使います。こちらもloggingFormatをサポートしていますので、これで設定しましょう。

    import * as cdk from 'aws-cdk-lib';
    import { Construct } from 'constructs';
    import { aws_lambda_nodejs, aws_iam } from 'aws-cdk-lib';
    import { LoggingFormat } from 'aws-cdk-lib/aws-lambda';
    import { join } from 'path'
    
    export class SchoolAppBackendStack extends cdk.Stack {
      constructor(scope: Construct, id: string, props?: cdk.StackProps & {
        environment: string
      }) {
        super(scope, id, props);
        const lambdaFunction = new aws_lambda_nodejs.NodejsFunction(this, `StripeWebhookForCheckout-${props?.environment}`, {
          entry: join(__dirname, '../lambda/stripe-webhook-checkout.ts'),
          handler: 'handler',
          loggingFormat: LoggingFormat.JSON,
        });
    
      }
    }

    まとめ

    ログフォーマットをJSONに変えることで、CloudWatch Logsのメトリクスフィルターやそれを元にしたアラームなどが設定しやすくなります。それ以外にもJSONデータの方が取り扱いしやすいケースが多いかと思いますので、CDKで設定しておきましょう。

    広告ここから
    広告ここまで
    Home
    Search
    Bookmark