概要
AWS CDK v2.208.0では、新リージョンap-southeast-6のサポート追加、エラーメッセージの改善、非推奨APIからの移行など、開発体験とメンテナンス性を向上させる改善が含まれています。特に、タグのバリデーションエラーがより具体的になり、Custom ResourcesがLambdaの最新API仕様に準拠するようになりました。
新機能
ap-southeast-6リージョンのサポート追加
AWS新リージョンであるap-southeast-6(マレーシア)のサポートが追加されました。このリージョンは2025年に開設された最新リージョンで、東南アジアでのAWSサービス展開をサポートします。
import * as cdk from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const app = new cdk.App();
const stack = new cdk.Stack(app, 'MyStack', {
env: {
account: '123456789012',
region: 'ap-southeast-6', // マレーシアリージョンを指定
},
});
// ap-southeast-6リージョンでVPCを作成
const vpc = new ec2.Vpc(stack, 'MyVpc', {
maxAzs: 2, // ap-southeast-6で利用可能なアベイラビリティゾーン
});
このリージョンは、既存のCDKコードでregionプロパティを変更するだけで利用できます。リージョン固有のサービス制限やAvailability Zoneの数については、AWSの公式ドキュメントを参照してください。
バグ修正
タグバリデーションエラーメッセージの改善
タグに値が設定されていない場合のエラーメッセージが改善され、どのタグキーに問題があるのかが明確になりました。
変更前:
Tag must have a value
変更後:
Tag 'Environment' must have a value
この改善により、複数のタグを設定している場合でも、問題のあるタグを即座に特定できるようになりました。
import * as cdk from 'aws-cdk-lib';
const stack = new cdk.Stack(app, 'MyStack');
// 以下のコードは、改善されたエラーメッセージを出力します
cdk.Tags.of(stack).add('Environment', ''); // エラー: Tag 'Environment' must have a value
cdk.Tags.of(stack).add('Project', 'MyProject'); // 正常
Custom ResourcesでloggingFormatに移行
Custom Resourcesの内部実装が、非推奨のlogFormatプロパティから新しいloggingFormatプロパティに移行しました。これにより、deprecation warningが解消されます。
この変更はCustom Resourcesの内部実装の変更であり、ユーザーコードに変更は必要ありません。CDKが生成するLambda関数が最新のAPI仕様に準拠するようになります。
import * as cdk from 'aws-cdk-lib';
import * as cr from 'aws-cdk-lib/custom-resources';
import * as lambda from 'aws-cdk-lib/aws-lambda';
// この例では、Custom Resourcesが内部で使用するLambda関数が
// 自動的にloggingFormatを使用します(ユーザーコードの変更不要)
const provider = new cr.Provider(stack, 'MyProvider', {
onEventHandler: new lambda.Function(stack, 'OnEvent', {
runtime: lambda.Runtime.NODEJS_20_X,
handler: 'index.onEvent',
code: lambda.Code.fromAsset('lambda'),
}),
});
const customResource = new cdk.CustomResource(stack, 'MyCustomResource', {
serviceToken: provider.serviceToken,
});
CloudWatch Logsクエリで複数statsコマンドをサポート
CloudWatch Logs Insightsのクエリ定義で、複数のstatsコマンドを含むクエリ文字列が正しく処理されるようになりました。
import * as logs from 'aws-cdk-lib/aws-logs';
const logGroup = new logs.LogGroup(stack, 'MyLogGroup');
// 複数のstatsコマンドを含むクエリが正しく動作します
const queryDefinition = new logs.QueryDefinition(stack, 'MyQuery', {
queryDefinitionName: 'MultiStatsQuery',
queryString: new logs.QueryString({
fields: ['@timestamp', '@message'],
filterStatements: [
'status = 200',
],
// 複数のstatsコマンドを使用可能
stats: 'stats count() by status | stats avg(duration) by endpoint',
}),
logGroups: [logGroup],
});
この修正により、より複雑なログ分析クエリをCDKで定義できるようになりました。
Metric Filterのディメンションマップ変更の取り消し
v2.207.0で導入されたMetric Filterのディメンションマップ機能が、予期しない動作を引き起こしたため取り消されました(#35097)。
この変更により、Metric Filterから作成されるメトリクスの動作が以前のバージョンと同じになり、既存のアラームやダッシュボードへの影響を回避できます。
Alphaモジュール
Glue Alpha: ValidationErrorの導入
@aws-cdk/aws-glue-alphaモジュールで、型指定されていないエラーからValidationErrorへの移行が行われました。これにより、Glueリソースのバリデーションエラーがより明確になり、エラーハンドリングが改善されます。
import * as glue from '@aws-cdk/aws-glue-alpha';
import * as cdk from 'aws-cdk-lib';
const stack = new cdk.Stack(app, 'GlueStack');
// 以前は一般的なエラーがスローされていましたが、
// 現在はValidationErrorとして明確なエラーメッセージが提供されます
try {
const database = new glue.Database(stack, 'MyDatabase', {
databaseName: '', // 空の文字列は無効
});
} catch (error) {
// ValidationErrorとしてキャッチ可能
console.error('Validation failed:', error.message);
}
この変更により、コンパイル時およびデプロイ前により多くのエラーを検出できるようになります。
まとめ
AWS CDK v2.208.0は、新リージョンのサポート追加、エラーメッセージの改善、非推奨APIからの移行など、開発体験を向上させる改善が中心のリリースです。特に、タグエラーメッセージの改善とCustom Resourcesの最新API対応により、より安定したCDKアプリケーション開発が可能になります。
主な変更点:
- ap-southeast-6リージョンのサポート追加
- タグバリデーションエラーでキー名を表示
- Custom ResourcesがloggingFormatに移行
- CloudWatch Logsクエリで複数stats対応
- Glue AlphaモジュールでValidationError導入
既存のCDKアプリケーションへの影響は最小限ですが、新リージョンへのデプロイやより詳細なエラーメッセージを活用したい場合は、このバージョンへのアップグレードを検討してください。