📝

CDK での Lambda 関数作成時に LogRetention の関数が自動的に作成される挙動を確認してみた

に公開

Log Retention Lambda | AWS re:Post

When you specify logRetention in the Lambda function construct, CDK creates a custom resource, which is implemented using a Lambda function.

上記挙動を確認してみました

CDK コード

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as iam from 'aws-cdk-lib/aws-iam';
import * as logs from 'aws-cdk-lib/aws-logs';

export class DevioStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const existingRole = iam.Role.fromRoleArn(
      this, 
      'ExistingRole', 
      'arn:aws:iam::012345678901:role/LambdaBasicExecutionRole',
      { mutable: false }
    );
    
    new lambda.Function(this, 'MyLambdaFunction', {
      runtime: lambda.Runtime.NODEJS_22_X,
      handler: 'index.handler',
      role: existingRole,
      logRetention: logs.RetentionDays.ONE_WEEK,
      code: lambda.Code.fromInline(`
        exports.handler = async function (event) {
          // TODO implement
          const response = {
            statusCode: 200,
            body: JSON.stringify('Hello from Lambda!'),
          };
          return response;
        };
      `),
    });
  }
}

logRetention パラメータを指定することで LogRetention の関数が作成されます。
ただし、logRetention パラメータはレガシー API であるため、logGroup への移行が推奨されています。
class Function (construct) · AWS CDK

This is a legacy API and we strongly recommend you move away from it if you can.

デプロイ後

CDK コードで定義した関数に加えて、LogRetention という名称が含まれる関数も自動的に作成されていました。

なお、LogRetention の関数のランタイムについては CDK 側で自動的に定義されるようでした。
例えば、CDK コードで定義した関数のランタイムを Node.js 20.x に指定しても、LogRetention の関数のランタイムは Node.js 22.x で作成されました。

GitHub を確認したところ、カスタムリソースのランタイムを更新した旨の報告があったので、今後もランタイムの更新情報については GitHub を確認する必要がありそうです。
📊Tracking: [Lambda/Custom Resources] upgrade to Node 22 · Issue #33626 · aws/aws-cdk

Custom resource default node runtime is now upgraded to node22 for all regions except isolated regions. This is available from CDK v2.197.0.

まとめ

今回は CDK での Lambda 関数作成時に LogRetention の関数が自動的に作成される挙動を確認してみました。
どなたかの参考になれば幸いです。

参考資料

Discussion