Back to Releases
AWS CDK 2026年5月19日

AWS CDK v2.255.0 リリース解説

Bedrock AgentCore モジュールが stable に昇格しました。また、合成パフォーマンスのプロファイリング機能、アセットフィンガープリンティングキャッシュの永続化、EC2 C8A インスタンスタイプのサポートが追加されています。

概要

このリリースの目玉は、@aws-cdk/aws-bedrock-agentcore-alpha モジュールが stable に昇格し、aws-cdk-lib/aws-bedrockagentcore として正式にリリースされた点です。加えて、合成 (synthesis) のパフォーマンス計測機能、アセットフィンガープリンティングキャッシュの永続化、EC2 C8A インスタンスタイプのサポートが追加され、合成速度を大きく改善する複数のバグ修正も含まれています。

リリース: v2.255.0


新機能

Bedrock AgentCore モジュールが stable に昇格 (#37876)

この機能でできること:

  • @aws-cdk/aws-bedrock-agentcore-alpha の主要なコンストラクトが stable に昇格し、aws-cdk-lib/aws-bedrockagentcore として利用できるようになりました。
  • Policy サブモジュールのみ alpha のまま残ります。それ以外のコンストラクト (Gateway, Browser, CodeInterpreter, Memory など) はすべて stable 版への移行が推奨されます。

使用例 (移行):

// Before: alpha モジュール
import * as agentcore from '@aws-cdk/aws-bedrock-agentcore-alpha';

// After: stable モジュール
import * as agentcore from 'aws-cdk-lib/aws-bedrockagentcore';

ポイント:

  • alpha からの昇格に伴い、いくつかのプロパティ名やシグネチャに破壊的変更があります。詳細は本記事の「破壊的変更」セクションを参照してください。
  • 当面 alpha モジュールも残りますが、新規プロジェクトでは stable 版を使用してください。

合成パフォーマンスカウンタの出力 (#37843)

この機能でできること:

  • 合成処理が遅い (デフォルトで 1 スタックあたり 10 秒以上) と判定された場合、CDK が自動的にパフォーマンスカウンタを出力します。CLI 側ではこれをテレメトリとして送信し、AWS CDK チームがボトルネック分析に活用します。
  • パフォーマンス計測は Node.js の Performance Measurement APIs を利用し、ファイルシステムアクセスやサブプロセス起動など合成が遅くなりやすい箇所を自動的に計測します。

使用例 (レポーティングの無効化):

import { App } from 'aws-cdk-lib';

// App プロパティで無効化する方法
const app = new App({
  performanceReporting: false,
});

または cdk.json のコンテキストキーで無効化:

{
  "context": {
    "aws:cdk:performance-reporting": false
  }
}

ポイント:

  • カウンタは $CDK_PERF_COUNTERS_FILE 環境変数で指定されたファイルに書き出されます。
  • 出力されるカウンタの例: phase:Constructionbundle:NodejsFunctionDockerImage.fromBuildFileSystem.fingerprint など、各処理にかかった時間 (ms) と呼び出し回数。
  • ユーザー自身が printPerfCounters() 関数を使ってアプリケーションのプロファイリングに活用することも可能です。

アセットフィンガープリンティングキャッシュの永続化 (#37822)

この機能でできること:

  • これまでメモリ内のみだったアセットフィンガープリント結果を、ディスクに永続化するようになりました。
  • 大量のファイル (例: 約 37,000 ファイル) を含むディレクトリのフィンガープリント計算が、再合成時に 約 75% 高速化 します (約 13 秒 → 約 3 秒)。

ポイント:

  • キャッシュは ~/.cdk/cache/fingerprints に保存されます。
  • キャッシュファイルとサブディレクトリには最大エントリ数の上限が設定されており、無制限に膨張しないよう管理されています。
  • 利用にあたって特別な設定は不要で、自動的に有効になります。

PropertyMergeStrategy が deferred Box 値に対応 (#37844)

この機能でできること:

  • TableV2.replicas のような Box でラップされた遅延評価プロパティに対しても、プロパティのマージ戦略 (PropertyMergeStrategyArrayMergeStrategy.replaceByKey) が正しく動作するようになりました。
  • 以前は Box でラップされた値に対してマージを行うと不透明な IResolvable オブジェクトが渡され、マージ結果が誤っていました。

ポイント:

  • 内部的に BoxSafeMergeStrategyBoxSafeArrayStrategy という新しいラッパーが導入され、Box の値はマージを遅延 (Box.combine) して合成時に正しく解決されるようになります。
  • @aws-cdk/cfn-property-mixins を使ってカスタムプロパティを後付けで適用するユースケースで効果を発揮します。

EC2 C8A インスタンスタイプのサポート (#36736)

この機能でできること:

  • 第 5 世代 AMD EPYC プロセッサ (コードネーム Turin) ベースのコンピュート最適化インスタンス C8A を利用できるようになりました。

使用例:

import * as ec2 from 'aws-cdk-lib/aws-ec2';

// 新しい C8A インスタンスタイプの利用
const instanceType = ec2.InstanceType.of(
  ec2.InstanceClass.C8A,         // または ec2.InstanceClass.COMPUTE8_AMD
  ec2.InstanceSize.XLARGE,
);
// 結果: c8a.xlarge

ポイント:

  • InstanceClass.C8AInstanceClass.COMPUTE8_AMD のどちらでも c8a インスタンスファミリを指定できます。
  • 既存の C7A、M8A、R8A と同じパターンで利用可能です。

バグ修正

キャッシュ済み Lazy が内部で Box API を使用するように (#37889)

  • Lazy.string()Lazy.number()Lazy.list()Lazy.any() のキャッシュ版が、内部的に LazyBox (ReadonlyState ラッパー) を返すようになり、Box.isBox() のチェックや derive()getStackTraces() をサポートします。
  • 動作的な後方互換性は保たれており、ユーザーの既存コードに変更は不要です。Lazy と Box の解決メカニズムを統一する内部リファクタリングです。
  • 非キャッシュの Lazy は解決コンテキストに依存するため引き続き Box ではありません。

デフォルトのスタックトレースサイズが過剰なオーバーヘッドを発生 (#37827)

  • これまで CDK ライブラリはスタックトレース取得時に最大サイズ (実質無制限) のフレームをキャプチャしていましたが、これが合成時間の大きなオーバーヘッドになっていました。
  • デフォルトのスタックトレースサイズ (10 フレーム) を使用することで、スタックトレース収集の処理時間が約 50% 削減されます。
  • 例えば 8,500 個のコンストラクトを含むサンプルアプリで約 200ms の高速化が確認されています。
  • ユーザーは --stack-trace-limit フラグで引き続き制御可能です。

クロスアカウントの Fn::GetStackOutput が単一の IAM ロールを共有するように (#37871)

  • これまではクロスアカウント参照ごとにプロデューサ側で IAM ロールが 1 つずつ作成されていましたが、すべてのコンシューマプリンシパルを Trust Policy にまとめた 単一の IAM ロール を共有するようになりました。
  • ロールとポリシーのコンストラクト ID は安定 (GetStackOutputRole / GetStackOutputPolicy) となり、参照の解決値に依存しないためコンストラクト生成が冪等になります。
  • Trust Policy は Lazy.any で遅延解決されるため、コンシューマが追加されるたびに動的に蓄積されます。

DynamoDB Streams grant の deprecated scope プロパティを削除 (#36680)

  • DynamoDB Streams の grant 系メソッドで使用されていた deprecated な scope プロパティが削除されました。
  • このプロパティは未使用で警告を出していたため、今回のクリーンアップで取り除かれています。
  • ユーザーコードで scope を渡していない限り、影響はありません。

IAM PolicyStatement の SID を identity policy で英数字のみに検証 (#36150)

  • IAM の identity policy では、Statement ID (SID) は ASCII 大文字 (A-Z)、小文字 (a-z)、数字 (0-9) のみが許可されています (公式ドキュメント)。
  • これまで CDK では SID にハイフンなど無効な文字が含まれていてもビルド時には通り、デプロイ時に初めて失敗していました。
  • 今回の修正で、PolicyStatement のコンストラクタ時点で SID を検証し、無効な文字が含まれる場合はエラーをスローするようになりました。

修正後の正しい使い方:

import * as iam from 'aws-cdk-lib/aws-iam';

// OK: 英数字のみ
const validStatement = new iam.PolicyStatement({
  sid: 'AllowS3Access1',
  actions: ['s3:GetObject'],
  resources: ['*'],
});

// NG: ハイフンを含むためコンストラクト時にエラー
// const invalidStatement = new iam.PolicyStatement({
//   sid: 'Allow-S3-Access',  // <-- エラー
//   ...
// });

Alpha モジュール

bedrock-agentcore-alpha が stable に昇格 (#37876)

@aws-cdk/aws-bedrock-agentcore-alpha のうち、Policy サブモジュールを除くすべてのコンストラクトが aws-cdk-lib/aws-bedrockagentcore に昇格しました。alpha 版を利用しているプロジェクトは、本記事の「破壊的変更」セクションを参照しつつ stable 版への移行を推奨します。


破壊的変更

bedrock-agentcore-alpha → aws-bedrockagentcore: プロパティ名のリネーム (#37876)

stable への昇格に伴い、複数のプロパティ・型がリネームされました。

Before (alpha)After (stable)
IGateway.nameIGateway.gatewayName
IGatewayTarget.nameIGatewayTarget.gatewayTargetName
BrowserCustom.nameBrowserCustom.browserCustomName
CodeInterpreterCustom.nameCodeInterpreterCustom.codeInterpreterCustomName
IMemoryStrategy.nameIMemoryStrategy.strategyName
MemoryStrategyCommonProps.nameMemoryStrategyCommonProps.strategyName
ApiKeyCredentialProviderProps (gateway 設定用)ApiKeyCredentialProviderOptions
ApiKeyCredentialProviderResourceProps (コンストラクタ用)ApiKeyCredentialProviderProps
EvaluatorReferenceEvaluatorSelector
EvaluatorReferenceBindResultEvaluatorSelectorBindResult

OverrideConfig.model の依存先が変更 (#37876)

OverrideConfig.model プロパティの型が、alpha モジュールから stable モジュールに依存するように変更されました。

変更前:

import { IBedrockInvokable } from '@aws-cdk/aws-bedrock-alpha';

const config: OverrideConfig = {
  model: someBedrockInvokable, // IBedrockInvokable
};

変更後:

import { IModel } from 'aws-cdk-lib/aws-bedrock';

const config: OverrideConfig = {
  model: someModel, // IModel
};

移行方法:

  • alpha 由来の IBedrockInvokable を使用している箇所を、aws-cdk-lib/aws-bedrockIModel に置き換えてください。

metric() メソッドのシグネチャ変更 (#37876)

bedrockagentcore のリソースの metric() メソッドから dimensions の位置引数が削除されました。リソース固有のディメンションは内部で自動的に付与されるようになり、追加のディメンションは props.dimensionsMap で渡すように変更されています。

変更前:

// dimensions が位置引数
resource.metric(
  'MyMetric',
  { ResourceId: 'foo' }, // DimensionsMap
  { statistic: 'Sum' },
);

変更後:

// リソースのディメンションは自動付与
// 追加ディメンションは props.dimensionsMap に渡す
resource.metric('MyMetric', {
  statistic: 'Sum',
  dimensionsMap: {
    ExtraDimension: 'bar',
  },
});

移行方法:

  • metric() の第 2 引数として DimensionsMap を渡している箇所を削除し、必要に応じて props.dimensionsMap に統合してください。

まとめ

Bedrock AgentCore の stable 昇格と、合成パフォーマンスの観測・最適化機能 (パフォーマンスカウンタ、フィンガープリント永続化、スタックトレース最適化、IAM ロールの集約) が大きな目玉のリリースです。AgentCore を alpha で利用していたユーザーは、リネームを中心とする破壊的変更に注意しつつ stable 版への移行を進めることをおすすめします。