概要
AWS CDK v2.249.0 では、AWS Batch で Amazon Linux 2023(AL2023)イメージタイプが追加され、フィーチャーフラグによりデフォルト化されました。また、L1 コンストラクトのプロパティ変更箇所を追跡できる ソーストレーシング機能 が CDK_DEBUG=1 モードで利用可能になり、大規模プロジェクトでのデバッグが容易になります。L1 CloudFormation リソース定義の更新では、複数サービスで破壊的変更を伴う型の厳密化が行われました。
新機能
AWS Batch: AL2023 イメージタイプのサポートとデフォルト化 (#37539)
Amazon Linux 2 は EKS 向けには 2025 年 11 月に EOL に達しており、ECS 向けも 2026 年 6 月に EOL となります。このリリースでは、AWS Batch の Compute Environment で AL2023 ベースのイメージタイプが追加され、フィーチャーフラグ @aws-cdk/aws-batch:defaultToAL2023 により新規作成時のデフォルトを AL2023 に切り替えられるようになりました。
追加された列挙値
EcsMachineImageType および EksMachineImageType に以下の値が追加されました。
| Enum | 追加された値 | 説明 |
|---|---|---|
EcsMachineImageType | ECS_AL2023_NVIDIA | ECS 用の AL2023 NVIDIA GPU 対応 AMI |
EksMachineImageType | EKS_AL2023 | EKS 用の AL2023 AMI |
EksMachineImageType | EKS_AL2023_NVIDIA | EKS 用の AL2023 NVIDIA GPU 対応 AMI |
既存の ECS_AL2023 と合わせて、Batch API が受け付ける全ての AL2023 系 AMI タイプが CDK 側で指定できるようになりました。
フィーチャーフラグの挙動
@aws-cdk/aws-batch:defaultToAL2023 を有効化すると、imageType を省略した場合のデフォルトが以下のように変更されます。
| 種別 | フラグ OFF(従来) | フラグ ON(新規プロジェクトのデフォルト) |
|---|---|---|
| ECS Compute Environment | ECS_AL2 | ECS_AL2023 |
| EKS Compute Environment | EKS_AL2 | EKS_AL2023 |
新規 CDK プロジェクトでは cdk.json に自動的にこのフラグが true として追加されます。既存プロジェクトでは手動でフラグを有効化するまで従来の AL2 がデフォルトのままです。
EKS + Launch Template 使用時の自動設定
EKS Compute Environment で Launch Template を使用し、かつ AL2023 系の imageType が解決された場合、Batch API の要件に従って userdataType が自動的に EKS_NODEADM に設定されます。これは AL2023 ノードがクラスタに参加するために必須の設定です。
コード例: ECS の場合
import * as batch from 'aws-cdk-lib/aws-batch';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
// フィーチャーフラグ ON のプロジェクト: imageType を省略すると ECS_AL2023 がデフォルト
const ecsCompute = new batch.ManagedEc2EcsComputeEnvironment(this, 'EcsAL2023', {
vpc,
// imageType を省略 → フラグ ON なら ECS_AL2023、OFF なら ECS_AL2
});
// 明示的に NVIDIA 対応 AL2023 AMI を指定する場合
const gpuCompute = new batch.ManagedEc2EcsComputeEnvironment(this, 'EcsGPU', {
vpc,
images: [{
imageType: batch.EcsMachineImageType.ECS_AL2023_NVIDIA, // 新規追加: AL2023 + NVIDIA GPU
}],
instanceTypes: [ec2.InstanceType.of(ec2.InstanceClass.G5, ec2.InstanceSize.XLARGE)],
});
コード例: EKS + Launch Template の場合
import * as batch from 'aws-cdk-lib/aws-batch';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const launchTemplate = new ec2.LaunchTemplate(this, 'LT', {
// Launch Template の設定
});
const eksCompute = new batch.ManagedEc2EksComputeEnvironment(this, 'EksAL2023', {
vpc,
eksCluster,
kubernetesNamespace: 'default',
images: [{
imageType: batch.EksMachineImageType.EKS_AL2023, // 新規追加: EKS 用 AL2023 AMI
}],
launchTemplate,
// userdataType は自動的に EKS_NODEADM に設定される(AL2023 + Launch Template の組み合わせ時)
});
移行時の注意点
- A1 インスタンス:
ECS_AL2023_NVIDIAも A1 インスタンスでは使用できません。既存の A1 バリデーションが拡張され、フィーチャーフラグにより解決されたデフォルト値も正しく検証されます。 - 既存の Compute Environment: フィーチャーフラグは新規 CE の作成にのみ影響します。既存の CE を更新する際は、明示的に
imageTypeを指定してください。
Core: L1 コンストラクトのプロパティ変更のソーストレーシング (#37543)
L1(Cfn*)コンストラクトのプロパティが「どこで上書きされたのか」をスタックトレース付きで追跡できる新機能です。CDK_DEBUG=1 環境変数を設定した場合のみメタデータが記録されるため、本番ビルドには影響しません。
仕組み
spec2cdk によるコード生成が更新され、変更可能な L1 プロパティは単純なフィールドではなく getter/setter ペア として生成されるようになりました。setter 内部で新しい traceProperty ユーティリティが呼ばれ、CDK_DEBUG=1 のときにのみ呼び出し元のスタックトレースを記録します。
使用例
# デバッグモードで synth してプロパティ変更箇所を記録
CDK_DEBUG=1 cdk synth
import * as s3 from 'aws-cdk-lib/aws-s3';
const bucket = new s3.CfnBucket(this, 'Bucket');
// これらの setter 呼び出しが CDK_DEBUG=1 時にスタックトレースと共に記録される
bucket.versioningConfiguration = { status: 'Enabled' }; // 呼び出し箇所が追跡される
bucket.publicAccessBlockConfiguration = {
blockPublicAcls: true,
blockPublicPolicy: true,
};
記録されたメタデータは合成出力内に含まれ、「このプロパティは誰が設定したのか?」を特定する際に役立ちます。Aspect やミックスインを多用する大規模プロジェクトで、意図しない上書きを調査する際に特に有効です。
過去のリグレッション対策
この機能は以前 #37285 として一度マージされたものの、生成された cfnProperties() が getter 経由で値を読んでしまい deprecated な値が予期せず取り込まれる問題がありリバートされました。今回の実装ではバッキングプロパティ(this._propertyName)を直接参照する形に修正され、さらに「非推奨プロパティなしで L1 を生成できること」を検証するテストが追加されています。
L1 CloudFormation リソース定義の更新 (#37530, 追加コミット)
最新の @aws-cdk/aws-service-spec に合わせて L1 リソース定義が更新されました。以下は主なトピックの抜粋です。
新規追加されたリソース
| リソース | 概要 |
|---|---|
AWS::ECS::Daemon | ECS の新しい Daemon リソース |
AWS::ECS::DaemonTaskDefinition | ECS Daemon 用のタスク定義 |
AWS::Omics::Configuration | Omics のランコンフィグ設定 |
AWS::NovaAct::WorkflowDefinition | Nova Act ワークフロー定義(新サービス) |
AWS::SecurityAgent::* | Security Agent サービス一式(AgentSpace / Application / Pentest / TargetDomain) |
既存リソースの主な拡張
AWS::EKS::Nodegroup:WarmPoolConfig(Enabled,MaxGroupPreparedCapacity,MinSize,PoolState,ReuseOnScaleIn)が追加され、ウォームプール(起動済みノードの予熱)を CDK から設定可能に。AWS::EC2::Instance: vended logs としてCONSOLE_LOGSがサポート対象に追加(S3 / CloudWatch Logs / Firehose)。AWS::ECS::CapacityProvider: Managed Instance 向けにManagedInstancesLocalStorageConfiguration.UseLocalStorageが追加。AWS::DataZone::Project/ProjectProfile: リソースタグ機能(ResourceTags,ProjectResourceTags,AllowCustomProjectResourceTags)が追加。AWS::RDS::DBCluster: 属性としてStorageEncryptionTypeが公開。AWS::StepFunctions::StateMachineAlias:StateMachineArnプロパティが追加。AWS::QuickSight::DataSource: 新しいデータソースタイプBOXとS3TablesParameters(TableBucketArn)が追加。AWS::SageMaker::Model:primaryIdentifierがIdからModelArnに変更され、属性としてModelArnが取得可能に。多くの文字列プロパティに enum 制約が付与されました(例:ContainerDefinition.ModeがSingleModel|MultiModel)。
Bedrock AgentCore の拡張
AWS::BedrockAgentCore::Evaluator に、Lambda 関数を用いたコードベース評価 CodeBasedEvaluatorConfig / LambdaEvaluatorConfig が追加され、LLM-as-a-Judge 以外の評価方式が選択可能になりました。AWS::BedrockAgentCore::Memory の各種ストラテジには NamespaceTemplates: Array<string> が追加されています。
Alpha モジュール (2.249.0-alpha.0)
今回のリリースでは Alpha モジュールに記載すべき特筆すべき変更はありません(リリースノートの ## Alpha modules (2.249.0-alpha.0) セクションは見出しのみで、機能追加・バグ修正のエントリはありませんでした)。依存パッケージのバージョン整合のための更新のみとなります。
バグ修正
Issue トリアージ: テンプレート外で作成された Issue に needs-triage ラベルを付与 (#37505)
これは CDK ライブラリ本体ではなくリポジトリ運用ワークフローの修正です。GitHub API や AI ツール(Claude Code など)、ブランクフォームから作成された Issue には、テンプレート経由と違って初期ラベルが付かず、結果として既存の issue-triage-manager が要求する needs-triage ラベルが無いためトリアージパイプラインに乗らず放置される問題がありました。
新しい軽量ワークフロー .github/workflows/ensure-triage-label.yml が追加され、Issue オープン時にラベルがゼロ件であれば自動的に needs-triage を付与するようになりました。CDK 利用者のコードには影響しませんが、Issue を立てる際の挙動改善として把握しておくとよいでしょう。
spec-update ワークフローに cfn-property-mixins を含める
spec 更新時の自動生成対象に cfn-property-mixins パッケージが追加されました。v2.243.0 で安定版に昇格した同パッケージの生成物が、今後の L1 定義更新時に同期されなくなる問題を予防する内部修正です。利用者側のコード変更は不要です。
破壊的変更
L1 リソースは公開されている CloudFormation Resource Schema から自動生成されているため、実態への追従に伴って型が変わることがあります。このリリースでは以下の変更がありました。
| サービス / リソース | 変更内容 |
|---|---|
AWS::AppStream::Stack | Id 属性が削除されました。primaryIdentifier は Name に変更されています。 |
AWS::AppSync::GraphQLApi | LogConfig.CloudWatchLogsRoleArn が required になりました。 |
AWS::AppSync::GraphQLApi | LogConfig.FieldLogLevel が required になりました。 |
AWS::KafkaConnect::Connector | ProvisionedCapacity.McuCount が required になりました。 |
移行方法
AppStream: Id 属性の削除
import * as appstream from 'aws-cdk-lib/aws-appstream';
const stack = new appstream.CfnStack(this, 'Stack', {
name: 'my-stack',
});
// 変更前: stack.attrId が利用可能だった
// 変更後: Id 属性は存在しない。主キーとして Name を使用する
const stackName = stack.name; // primaryIdentifier として使用
AppSync: LogConfig の必須プロパティ
LogConfig を指定する場合、CloudWatchLogsRoleArn と FieldLogLevel を必ず設定する必要があります。
import * as appsync from 'aws-cdk-lib/aws-appsync';
import * as iam from 'aws-cdk-lib/aws-iam';
const logRole = new iam.Role(this, 'LogRole', {
assumedBy: new iam.ServicePrincipal('appsync.amazonaws.com'),
});
const api = new appsync.CfnGraphQLApi(this, 'Api', {
name: 'my-api',
authenticationType: 'API_KEY',
logConfig: {
cloudWatchLogsRoleArn: logRole.roleArn, // 必須化された
fieldLogLevel: 'ERROR', // 必須化された ('NONE' | 'ERROR' | 'ALL' 等)
},
});
従来 logConfig を部分的に指定していた場合はコンパイルエラーになるため、両プロパティを明示的に設定してください。
KafkaConnect: McuCount の必須化
import * as kafkaconnect from 'aws-cdk-lib/aws-kafkaconnect';
const connector = new kafkaconnect.CfnConnector(this, 'Connector', {
// ...
capacity: {
provisionedCapacity: {
workerCount: 2,
mcuCount: 1, // 必須化された: 1 | 2 | 4 | 8 のいずれか
},
},
});
ProvisionedCapacity を使う場合は mcuCount を必ず指定してください。AutoScaling を使う場合は影響ありません。
まとめ
AWS CDK v2.249.0 は Batch の AL2023 対応 と L1 プロパティのソーストレーシング が実用面での目玉です。また、L1 リソース定義の広範な更新により、EKS WarmPool や ECS Daemon、Bedrock AgentCore のコードベース評価など、最新の CloudFormation 機能が CDK から利用できるようになりました。
アップグレード時のチェックポイント:
- Batch 利用者: 新規プロジェクトでは
@aws-cdk/aws-batch:defaultToAL2023フラグが ON になります。既存プロジェクトでも、AL2 の EOL に備えて早めに AL2023 への移行を検討してください。EKS + Launch Template の組み合わせではuserdataTypeが自動設定される点に注意。 - AppSync 利用者:
CfnGraphQLApi.logConfigを使っている場合、cloudWatchLogsRoleArnとfieldLogLevelが必須化されたため、指定漏れがないか確認してください。 - AppStream / KafkaConnect 利用者:
CfnStack.attrIdの参照やProvisionedCapacity.mcuCountの省略がないか、合成時のエラーメッセージと合わせて確認を。 - デバッグ効率化: 複雑な Aspect や Mixin を使っている場合は、
CDK_DEBUG=1 cdk synthでプロパティ変更箇所のソーストレースを取得し、意図しない上書きを可視化できます。