Back to Releases
AWS CDK 2026年3月19日

AWS CDK v2.244.0 リリース解説

ECSにforceNewDeployment APIが追加、RDSで独立したParameterGroup作成が可能に、CodeBuildがmacOS 26をサポート、CDKの全エラーにエラーコードが付与されました。

概要

AWS CDK v2.244.0では、ECSサービスにforceNewDeployment()メソッドが追加され、タスク定義を変更せずに新しいデプロイをトリガーできるようになりました。また、RDSのParameterGroupを独立したリソースとして明示的に作成できるforInstance()/forCluster()静的メソッドが追加されています。さらに、CDKで発生する全エラーにエラーコードが付与され、Helm v4への対応、AspectsとMixins間の変換ユーティリティの導入など、多岐にわたる改善が含まれています。

新機能

ECS: forceNewDeployment メソッドの追加 (#35726)

BaseServiceクラス(FargateServiceEc2Serviceなどの基底クラス)にforceNewDeployment()メソッドが追加されました。サービス定義に変更がなくてもECSで新しいデプロイをトリガーできるため、同じタグの最新コンテナイメージを取り込みたい場合などに便利です。

メソッドシグネチャ:

public forceNewDeployment(nonce?: string): void
パラメータ説明
noncestring (オプション)新しいデプロイを発火させる一意の文字列(1〜255文字)。未指定時はタイムスタンプ(ISO 8601形式)が自動生成される

重要な注意事項:

  • nonceを指定しない場合、毎回new Date().toISOString()が生成されるため、cdk synthするたびにテンプレートが変わり、cdk deployするたびに新デプロイが発火します
  • 再デプロイのタイミングを制御したい場合は、安定したnonce(イメージダイジェストやバージョン文字列など)を渡してください
  • デプロイメントコントローラーがECSの場合のみ利用可能CODE_DEPLOYEXTERNALではValidationErrorがスローされます)

使用例:

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

declare const cluster: ecs.Cluster;
declare const taskDefinition: ecs.TaskDefinition;

const service = new ecs.FargateService(this, 'Service', {
  cluster,
  taskDefinition,
});

// パターン1: nonceを指定しない(毎回のデプロイで新デプロイをトリガー)
service.forceNewDeployment();

// パターン2: 安定したnonceを指定(意図したタイミングでのみ再デプロイ)
service.forceNewDeployment('my-custom-nonce-v2');

// パターン3: イメージダイジェストをnonceとして使う実用パターン
declare const imageDigest: string;
service.forceNewDeployment(imageDigest);  // イメージが変わったときだけ再デプロイ

内部的には、以下のCloudFormationプロパティが生成されます:

{
  "ForceNewDeployment": {
    "EnableForceNewDeployment": true,
    "ForceNewDeploymentNonce": "<指定したnonce、またはISO 8601タイムスタンプ>"
  }
}

RDS: 独立したParameterGroupの作成サポート (#37165)

ParameterGroupクラスに、インスタンス/クラスターにバインドされていない独立した(standalone)パラメータグループを明示的に作成する2つの静的ファクトリメソッドが追加されました。

従来、ParameterGroupは遅延生成パターン(lazy creation)を採用しており、bindToInstance()/bindToCluster()が呼ばれる(もしくはDatabaseInstance/DatabaseClusterに渡される)まで実際のCloudFormationリソースは生成されませんでした。そのため、単独でパラメータグループだけを作成したいユースケースに対応できませんでした。

新しい静的メソッド:

メソッド生成されるリソース用途
ParameterGroup.forInstance(scope, id, props)AWS::RDS::DBParameterGroupDBインスタンス用の独立したパラメータグループ
ParameterGroup.forCluster(scope, id, props)AWS::RDS::DBClusterParameterGroupDBクラスター用の独立したパラメータグループ

ParameterGroupPropsの主なプロパティ(既存):

プロパティ説明
engineIEngine対象のデータベースエンジン(必須)
descriptionstringパラメータグループの説明文
parameters{ [key: string]: string }パラメータのキーと値のマップ
namestringパラメータグループ名(未指定時はCloudFormationが生成)
removalPolicyRemovalPolicyスタック削除時の挙動

使用例(インスタンス用):

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

const instanceParameterGroup = rds.ParameterGroup.forInstance(this, 'InstanceParameterGroup', {
  engine: rds.DatabaseInstanceEngine.mysql({
    version: rds.MysqlEngineVersion.VER_8_0_35,   // 対象エンジンとバージョン
  }),
  description: 'Parameter group for MySQL',        // 説明文
  parameters: {
    max_connections: '150',                        // 最大接続数
    slow_query_log: '1',                           // スロークエリログを有効化
  },
  name: 'my-instance-parameter-group',             // パラメータグループ名(省略可)
});

使用例(クラスター用):

const clusterParameterGroup = rds.ParameterGroup.forCluster(this, 'ClusterParameterGroup', {
  engine: rds.DatabaseClusterEngine.auroraMysql({
    version: rds.AuroraMysqlEngineVersion.VER_3_04_0,  // Aurora MySQLエンジンバージョン
  }),
  description: 'Parameter group for Aurora MySQL',
  parameters: {
    aurora_parallel_query: '1',                        // Auroraのパラレルクエリを有効化
  },
});

CodeBuild: macOS 26 ランナーのサポート (#37240)

MacBuildImageに macOS 26(aws/codebuild/macos-arm-base:26)が追加されました。CodeBuildがmacOS base:26イメージをサポートしたことに対応した変更です。

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

const fleet = new codebuild.Fleet(this, 'MacOsFleet', {
  computeType: codebuild.FleetComputeType.MEDIUM,
  environmentType: codebuild.EnvironmentType.MAC_ARM,
  baseCapacity: 1,
});

new codebuild.Project(this, 'Project', {
  source: codebuild.Source.gitHub({
    owner: 'my-org',
    repo: 'my-repo',
  }),
  environment: {
    buildImage: codebuild.MacBuildImage.BASE_26,   // 新規: macOS 26 ランナー
    fleet,
  },
});

利用可能なMacBuildImage定数:

定数対応イメージ
MacBuildImage.BASE_14aws/codebuild/macos-arm-base:14
MacBuildImage.BASE_15aws/codebuild/macos-arm-base:15
MacBuildImage.BASE_26aws/codebuild/macos-arm-base:26新規追加

Mixins: Aspects と Mixins 間の変換ヘルパー (#37235)

aws-cdk-lib/coreShimsクラスが追加され、AspectsとMixinsを相互に変換できるようになりました。両者はビジターパターンの実装ですが、Mixinsは即時適用(命令的)、Aspectsはsynthesisフェーズで適用(宣言的)という違いがあります。既存のAspectをMixinとして再利用したい場合などに有用です。

API:

メソッド用途挙動
Shims.asMixin(aspect)AspectをMixinに変換supports()フィルタが無いため、全てのconstructに適用される
Shims.asAspect(mixin)MixinをAspectに変換MixinのMixin.supports()でフィルタされる(サポートされないconstructは静かにスキップ)

使用例:

import { Aspects, Mixins, Shims } from 'aws-cdk-lib';

// 既存のAspectをMixinとして即時適用する
const versioningMixin = Shims.asMixin(new EnableBucketVersioning());
Mixins.of(scope).apply(versioningMixin);

// 既存のMixinをAspectとしてsynthesisフェーズまで適用を遅延する
const publicAccessAspect = Shims.asAspect(new BucketBlockPublicAccess());
Aspects.of(scope).add(publicAccessAspect);

spec2cdk: Grantsクラスに actions() メソッドの自動生成 (#36987)

<Resource>Grantsクラス(SNSのTopicGrantsなど)に、任意のアクションを付与できる汎用メソッドactions()が自動生成されるようになりました。grants.jsonで定義された具体的なメソッド(publishsubscribeなど)に加えて、ユーザーが任意の権限を付与できる逃げ道が提供されます。

メソッドシグネチャ:

// 通常のリソース
public actions(grantee: iam.IGrantable, actions: Array<string>, options: PermissionsOptions): iam.Grant;

// 暗号化可能なリソース(KMSキーを持つ)
public actions(grantee: iam.IGrantable, actions: Array<string>, options: EncryptedPermissionsOptions): iam.Grant;

オプションの型定義:

export interface PermissionsOptions {
  /**
   * 権限を付与するリソースのARN。
   * @default - 対象リソースのARN
   */
  readonly resourceArns?: Array<string>;
}

export interface EncryptedPermissionsOptions extends PermissionsOptions {
  /**
   * 付与するKMSキーのアクション。
   * @default - KMSキーへの権限は付与されない
   */
  readonly keyActions?: Array<string>;
}

使用例:

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

declare const topic: sns.Topic;
declare const role: iam.Role;

// SNS Topicに対して任意のアクションを付与
topic.grants.actions(role, ['sns:Publish', 'sns:ListSubscriptions'], {
  keyActions: ['kms:Decrypt', 'kms:GenerateDataKey*'],   // KMSキーに必要な操作
});

L1 CloudFormation リソース定義の更新 (#37260)

最新のAWS CloudFormation リソース仕様に基づいてL1コンストラクトが更新されました。主な変更点:

  • Bedrock AgentCore: EvaluatorOnlineEvaluationConfigPolicyEngineにARNテンプレートを追加
  • DevOpsAgent: ServiceリソースにARNテンプレートを追加
  • ECR: ECRImageActionECRReferrerActionイベントにlast-activated-attarget-storage-classプロパティを追加
  • NetworkFirewall: 3つの新イベント(FirewallAttachmentStatusChangedFirewallConfigurationChangedFirewallTransitGatewayAttachmentStatusChanged)を追加
  • DirectoryService: MicrosoftADのARNテンプレートを修正
  • Pinpoint: InAppTemplateのARNテンプレートを/SMSから/VOICEに修正
  • RAM: PermissionのARNテンプレートからリージョン部分を削除(RAMはグローバルサービス)

バグ修正

EKS: Helm v4 互換性のための OCI チャート取り扱いの修正 (#37142)

kubectl-v35にバンドルされた Helm v4 でLocateChartの挙動が変わり、--repo指定時にローカルのチャートパスチェックがスキップされるようになりました(Helm v3ではローカルパスが優先されていた)。

修正前の問題:

OCIチャートをローカルに取得した後、CDKハンドラがhelm upgradeローカルチャートパスと--repo/--versionの両方を渡していたため、Helm v4で以下のエラーが発生していました:

failed to perform FetchReference on source: invalid reference

修正内容:

v1・v2両方のHelmハンドラで、OCIチャートをローカルにプルした後にrepositoryversionをクリアするように変更しました。これにより、helm upgradeにはローカルチャートパスのみが渡され、Helm v3/v4の両方で正しく動作します。

修正後の使い方(ユーザー側のコードに変更は不要):

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

declare const cluster: eks.Cluster;

// OCIチャートからのHelmインストールが Helm v4 でも正しく動作するようになった
cluster.addHelmChart('MyChart', {
  chart: 'my-chart',
  repository: 'oci://public.ecr.aws/my-org/charts',   // OCIリポジトリ
  version: '1.2.3',
  namespace: 'default',
});

また、EKSがKubernetes 1.33以降でAL2 AMIサポートを打ち切ったことに伴い、integテストもAL2023への移行・k8s 1.32ピン留めが行われています。

aws-cdk-lib / core: 全エラーにエラーコードを付与 (#36934#37270)

CDKで発生するすべての検証エラーおよびエラーアノテーションに、一意のエラーコード(例: @aws-cdk/aws-ec2:... のような識別子)が付与されるようになりました。これにより、エラー発生時の検索・トラブルシューティング・ナレッジベース化が容易になります。

  • #36934: すべてのValidationError等にエラーコードを追加
  • #37270: Annotations.addError()/addWarning()等のエラーアノテーションにもエラーコードを追加

エラーコードは意図的に抑制不可(suppressできない)仕様となっており、ユーザーが頻繁に遭遇するエラーを追跡して改善につなげる目的があります。ユーザー側のコード変更は不要です。

Alphaモジュール (2.244.0-alpha.0)

Bug Fixes

Amazon Managed Service for Apache Flinkで廃止された(もしくは廃止予定の)Flinkランタイムバージョンに@deprecatedタグが付与されました。

非推奨化されたランタイム:

ランタイム状況
Runtime.FLINK_1_62025年2月にサポート終了
Runtime.FLINK_1_82025年7月にサポート終了
Runtime.FLINK_1_112025年2月にサポート終了
Runtime.FLINK_1_132025年10月16日にサポート終了

これらを使用しているコードでは@deprecated警告がIDEに表示されます。現在サポートされているランタイム(FLINK_1_15FLINK_1_18FLINK_1_19FLINK_1_20)への移行が推奨されます。

修正後の正しい使い方:

import * as flink from '@aws-cdk/aws-kinesisanalytics-flink-alpha';

new flink.Application(this, 'MyApplication', {
  runtime: flink.Runtime.FLINK_1_20,   // 最新のサポート対象バージョンを使用
  code: flink.ApplicationCode.fromAsset('./my-app.jar'),
});

まとめ

AWS CDK v2.244.0は、運用性を向上させる新APIの追加基盤整備が主な内容です。

主なポイント:

  • ECS forceNewDeployment(): 長年の要望(#27762)に応える形で、タスク定義を変えずにサービスの再デプロイをトリガーできるようになりました。ただし、nonceを指定しないと毎デプロイで発火するため注意が必要です
  • RDS ParameterGroup.forInstance()/forCluster(): #9741で要望されていた独立したパラメータグループ作成が正式サポートされました
  • 全エラーにエラーコード: トラブルシューティング・ナレッジ共有がしやすくなりました
  • Helm v4 対応: EKSクラスターでOCI由来のHelmチャートを使用している場合、v4環境でも正しく動作するようになりました
  • Mixins × Aspects の相互変換: 既存のAspectをMixinとして再利用(またはその逆)がShimsで簡単に行えるようになりました