概要
AWS CDK v2.200.1は、Lambda関数のログ管理に関する重要なバグ修正を含むパッチリリースです。aws-lambda:useCdkManagedLogGroupフィーチャーフラグのデフォルト値が変更され、既存のアプリケーションとの後方互換性が維持されるようになりました。
バグ修正
Lambda: CDK管理ログループ機能フラグのデフォルト値変更
PR: #34613
問題
以前のバージョンでは、aws-lambda:useCdkManagedLogGroupフィーチャーフラグが設定されていない場合、デフォルトでtrueとして扱われていました。これにより、CDKがLambda関数の新しいCloudWatch Logsロググループを作成しようとし、以下の問題が発生していました:
- 既存のアプリケーションで、すでにロググループが存在する場合にデプロイが失敗する
- 古いCDKバージョンで作成されたスタックをアップグレードする際に互換性の問題が発生する
修正内容
このリリースでは、aws-lambda:useCdkManagedLogGroupフィーチャーフラグが明示的に設定されていない場合、デフォルト値がfalseに変更されました。これにより、以下のような動作になります:
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as cdk from 'aws-cdk-lib';
const app = new cdk.App();
const stack = new cdk.Stack(app, 'MyStack');
// フィーチャーフラグが未設定の場合、
// CDKはログループを自動作成せず、Lambda側で管理される(デフォルトの動作)
const fn = new lambda.Function(stack, 'MyFunction', {
runtime: lambda.Runtime.NODEJS_20_X,
handler: 'index.handler',
code: lambda.Code.fromInline('exports.handler = async () => { return "Hello"; }'),
});
CDK管理ログループを有効にする方法
新しいアプリケーションでCDK管理のロググループを使用したい場合は、cdk.jsonで明示的にフィーチャーフラグを有効にしてください:
{
"context": {
"aws-lambda:useCdkManagedLogGroup": true
}
}
このフラグを有効にすると、CDKがロググループを作成・管理するようになり、以下のようなメリットがあります:
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as logs from 'aws-cdk-lib/aws-logs';
import * as cdk from 'aws-cdk-lib';
const app = new cdk.App({
context: {
'aws-lambda:useCdkManagedLogGroup': true,
},
});
const stack = new cdk.Stack(app, 'MyStack');
const fn = new lambda.Function(stack, 'MyFunction', {
runtime: lambda.Runtime.NODEJS_20_X,
handler: 'index.handler',
code: lambda.Code.fromInline('exports.handler = async () => { return "Hello"; }'),
// CDK管理ロググループが有効な場合、保持期間などを設定可能
logRetention: logs.RetentionDays.ONE_WEEK,
});
影響範囲
- 既存のアプリケーション: このフィーチャーフラグを明示的に設定していない場合、デフォルトの動作に戻るため、デプロイエラーが解消されます
- 新規アプリケーション: CDK管理のロググループを使用したい場合は、
cdk.jsonでフラグを明示的に有効にする必要があります - 推奨設定: 新しいプロジェクトでは
recommended-feature-flags.jsonが更新され、このフラグはデフォルトで含まれなくなりました
関連ファイル
変更されたファイル(packages/aws-cdk-lib/cx-api/lib/features.ts:1):
cx-api/lib/features.ts: フィーチャーフラグのデフォルト値を変更cx-api/FEATURE_FLAGS.md: ドキュメントを更新recommended-feature-flags.json: 推奨設定から削除aws-lambda/test/function.test.ts: テストケースを追加
Alpha モジュール (2.200.1-alpha.0)
このリリースには、alphaモジュールに関する変更は含まれていません。
まとめ
AWS CDK v2.200.1は、Lambda関数のログ管理に関する重要な後方互換性の問題を修正するパッチリリースです。aws-lambda:useCdkManagedLogGroupフィーチャーフラグのデフォルト値がfalseに変更されたことで、既存のアプリケーションでロググループが既に存在する場合のデプロイエラーが解消されます。
新しいプロジェクトでCDK管理のロググループを使用したい場合は、cdk.jsonで明示的にフラグを有効化してください。既存のプロジェクトをアップグレードする際は、この変更により影響を受けないか確認することをお勧めします。