Back to Releases
AWS CDK 2026年4月13日

AWS CDK v2.249.0 リリース解説

AWS BatchでAL2023イメージタイプがサポートされフィーチャーフラグによりデフォルト化、L1コンストラクトのプロパティ変更のソーストレーシング機能が追加、L1 CloudFormationリソース定義が更新されました。

概要

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追加された値説明
EcsMachineImageTypeECS_AL2023_NVIDIAECS 用の AL2023 NVIDIA GPU 対応 AMI
EksMachineImageTypeEKS_AL2023EKS 用の AL2023 AMI
EksMachineImageTypeEKS_AL2023_NVIDIAEKS 用の AL2023 NVIDIA GPU 対応 AMI

既存の ECS_AL2023 と合わせて、Batch API が受け付ける全ての AL2023 系 AMI タイプが CDK 側で指定できるようになりました。

フィーチャーフラグの挙動

@aws-cdk/aws-batch:defaultToAL2023 を有効化すると、imageType を省略した場合のデフォルトが以下のように変更されます。

種別フラグ OFF(従来)フラグ ON(新規プロジェクトのデフォルト)
ECS Compute EnvironmentECS_AL2ECS_AL2023
EKS Compute EnvironmentEKS_AL2EKS_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::DaemonECS の新しい Daemon リソース
AWS::ECS::DaemonTaskDefinitionECS Daemon 用のタスク定義
AWS::Omics::ConfigurationOmics のランコンフィグ設定
AWS::NovaAct::WorkflowDefinitionNova Act ワークフロー定義(新サービス)
AWS::SecurityAgent::*Security Agent サービス一式(AgentSpace / Application / Pentest / TargetDomain)

既存リソースの主な拡張

  • AWS::EKS::Nodegroup: WarmPoolConfigEnabled, 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: 新しいデータソースタイプ BOXS3TablesParametersTableBucketArn)が追加。
  • AWS::SageMaker::Model: primaryIdentifierId から ModelArn に変更され、属性として ModelArn が取得可能に。多くの文字列プロパティに enum 制約が付与されました(例: ContainerDefinition.ModeSingleModel|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::StackId 属性が削除されました。primaryIdentifierName に変更されています。
AWS::AppSync::GraphQLApiLogConfig.CloudWatchLogsRoleArnrequired になりました。
AWS::AppSync::GraphQLApiLogConfig.FieldLogLevelrequired になりました。
AWS::KafkaConnect::ConnectorProvisionedCapacity.McuCountrequired になりました。

移行方法

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 を指定する場合、CloudWatchLogsRoleArnFieldLogLevel を必ず設定する必要があります。

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 を使っている場合、cloudWatchLogsRoleArnfieldLogLevel が必須化されたため、指定漏れがないか確認してください。
  • AppStream / KafkaConnect 利用者: CfnStack.attrId の参照や ProvisionedCapacity.mcuCount の省略がないか、合成時のエラーメッセージと合わせて確認を。
  • デバッグ効率化: 複雑な Aspect や Mixin を使っている場合は、CDK_DEBUG=1 cdk synth でプロパティ変更箇所のソーストレースを取得し、意図しない上書きを可視化できます。