Back to Releases
v2.241.0 2026年3月2日

AWS CDK v2.241.0 リリース解説

CDK Mixinsの導入、EKS Kubernetes 1.35サポート、S3属性ベースアクセス制御(ABAC)、Auto Scaling削除保護など多数の新機能が追加されました。

autoscalingekss3dynamodbrdscodedeploy

概要

AWS CDK v2.241.0では、コンストラクトに再利用可能な機能を追加するための新しい仕組み「CDK Mixins」がコアモジュールに導入されました。また、EKSがKubernetes 1.35をサポート、S3バケットで属性ベースアクセス制御(ABAC)が利用可能に、Auto Scaling Groupに削除保護機能が追加されるなど、多くの新機能が含まれています。

新機能

CDK Mixins の導入 (#37055)

CDK Mixinsは、コンストラクトに対して再利用可能な機能を追加するための新しい仕組みです。従来のAspectsとは異なり、Mixinsは適用対象のコンストラクトを細かく制御でき、特定のリソースタイプ、パスパターン、またはIDに基づいて選択的に機能を適用できます。

Mixinsの基本的な使用方法:

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

// 特定のスコープにMixinを適用
Mixins.of(scope).apply(myMixin);

カスタムMixinの作成:

import { Mixin, IConstruct } from 'aws-cdk-lib';

class MyCustomMixin extends Mixin {
  // このMixinが適用可能かどうかを判定
  supports(construct: IConstruct): boolean {
    // 特定のリソースタイプに対してのみtrueを返す
    return construct instanceof lambda.Function;
  }

  // Mixinの実際の処理
  applyTo(construct: IConstruct): void {
    // ここでコンストラクトに対する処理を実装
    const fn = construct as lambda.Function;
    // 例: タグの追加、設定の変更など
  }
}

ConstructSelectorによるターゲット指定:

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

// リソースタイプで選択
const selector = ConstructSelector.byResourceType('AWS::Lambda::Function');

// パスパターンで選択
const pathSelector = ConstructSelector.byPath('**/MyStack/**');

// IDのglobパターンで選択
const idSelector = ConstructSelector.byId('MyFunction*');

エラーハンドリング:

// 少なくとも1つのコンストラクトにMixinが適用されることを要求
Mixins.of(scope).requireAny().apply(myMixin);

// すべての対象コンストラクトにMixinが適用されることを要求
Mixins.of(scope).requireAll().apply(myMixin);

Aspectsとの違い:

  • Aspects: ツリー内のすべてのノードを訪問
  • Mixins: 作者がsupports()で対象を細かく制御可能

Auto Scaling Group に削除保護を追加 (#36924)

Auto Scaling GroupにdeletionProtectionプロパティが追加され、誤った削除からAuto Scaling Groupを保護できるようになりました。

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

const asg = new autoscaling.AutoScalingGroup(this, 'ASG', {
  vpc,
  instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.MICRO),
  machineImage: ec2.MachineImage.latestAmazonLinux2023(),
  // 削除保護を有効化
  deletionProtection: true,  // trueで削除保護を有効化(デフォルト: false)
});

削除保護が有効な場合、CloudFormationスタックの削除時にAuto Scaling Groupの削除がブロックされます。削除する場合は、先に削除保護を無効にする必要があります。

EKS: Kubernetes 1.35 サポート (#37065)

Amazon EKSでKubernetes 1.35がサポートされました。この更新にはkubectl-v35@2.0.0レイヤー(kubectl 1.35.0とHelm 4.1.0を含む)が使用されます。

import * as eks from 'aws-cdk-lib/aws-eks';
import { KubectlV35Layer } from '@aws-cdk/lambda-layer-kubectl-v35';

// Kubernetes 1.35クラスターの作成
const cluster = new eks.Cluster(this, 'MyCluster', {
  version: eks.KubernetesVersion.V1_35,  // Kubernetes 1.35を指定
  kubectlLayer: new KubectlV35Layer(this, 'KubectlLayer'),
});

aws-eks-v2モジュールでの使用:

import * as eks from 'aws-cdk-lib/aws-eks-v2';
import { KubectlV35Layer } from '@aws-cdk/lambda-layer-kubectl-v35';

const cluster = new eks.Cluster(this, 'MyCluster', {
  version: eks.KubernetesVersion.V1_35,  // Kubernetes 1.35を指定
  kubectlProviderOptions: {
    kubectlLayer: new KubectlV35Layer(this, 'KubectlLayer'),
  },
});

S3: 属性ベースアクセス制御(ABAC)のサポート (#36229)

S3バケットで属性ベースアクセス制御(ABAC)が利用可能になりました。ABACを使用すると、バケットタグに基づいてアクセス制御ポリシーを定義できます。

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

const bucket = new s3.Bucket(this, 'MyBucket', {
  // 属性ベースアクセス制御(ABAC)を有効化
  abacStatus: s3.AbacStatus.ENABLED,  // ABACを有効化(デフォルト: DISABLED)
});

AbacStatusの値:

  • AbacStatus.ENABLED: ABACを有効化
  • AbacStatus.DISABLED: ABACを無効化(デフォルト)

ABACを有効にすると、バケットのタグを条件としたIAMポリシーを使用してアクセス制御が可能になります。詳細はAWS S3ドキュメントを参照してください。

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

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

バグ修正

minimatchのReDoS脆弱性を修正 (#37127)

minimatchパッケージがバージョン^10.2.3にアップグレードされ、2つの高深刻度ReDoS(Regular Expression Denial of Service)脆弱性が解消されました:

  • GHSA-7r86-cg39-jmmj: matchOne()での複数の非隣接GLOBSTARセグメントによる組み合わせ爆発
  • GHSA-23c5-xmqv-rm74: ネストされた*()extglobによる破滅的バックトラッキング

この修正により、npm auditでフラグが立っていた脆弱性が解消されます。

DynamoDB: マルチアカウントグローバルテーブルのSIDを修正 (#37057)

マルチアカウントグローバルテーブルのレプリカ関連付け権限で使用されるSID(Statement ID)に不正な文字(ハイフン)が含まれていた問題が修正されました。

修正前の問題:

AllowMultiAccountReplicaAssociation-490940935144

SIDにハイフンが含まれていたため、DynamoDBがエラーを返していました。

修正後:

AllowMultiAccountReplicaAssociation490940935144

SIDからハイフンが除去され、ASCII大文字・小文字・数字のみで構成されるようになりました。

この修正により、マルチアカウントグローバルテーブルの作成が正常に動作するようになります。

RDS: エンジンバージョンの非推奨タグを修正 (#37080)

PR #36937で誤って非推奨とマークされていた多くのRDSエンジンバージョンが修正されました。AWS RDS APIの実際のステータスに基づいて、非推奨タグが正確に設定されています。

主な変更内容:

エンジン修正内容
PostgreSQL13.15-16, 13.18, 13.20-22, 14.12-13等の誤った非推奨を解除。14.21, 15.16, 16.12, 17.8, 18.2を追加
Aurora MySQL3.04.6, 3.10.3の誤った非推奨を解除。3.12.0を追加
Aurora PostgreSQL13.16, 13.18等の誤った非推奨を解除。16.10-limitless, 16.11-limitlessを追加
MariaDB10.5.25, 10.5.26等に不足していた非推奨タグを追加。10.11.16, 11.4.10, 11.8.6を追加
SQL Server15.00.4455.2, 16.00.4225.2等を追加

また、MariaDB 10.11.7の非推奨メッセージの誤記(「10.11.8」と記載されていた)も修正されました。

破壊的変更

CodeDeploy: DeploymentGroupのId属性が削除 (#37103)

L1リソースの更新により、AWS::CodeDeploy::DeploymentGroupId属性が削除されました。

影響:

  • CfnDeploymentGroup.attrIdを使用していた場合、このプロパティが利用できなくなります

対応方法:

  • 代替としてFn::RefまたはCfnDeploymentGroup.refを使用してDeploymentGroup名を取得できます

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

mixins-preview: Vended Logs MixinにrecordFieldsoutputFormatを追加 (#37042)

Vended Logs MixinにrecordFieldsoutputFormatのサポートが追加されました。

outputFormat:

  • ログの出力フォーマットを指定可能
  • 配信先やログタイプごとに異なるフォーマットオプションが利用可能
  • 注: toDestination()toXRay()ではoutputFormatは未サポート

recordFields:

  • 記録するフィールドを配列で指定
  • 必須フィールドは内部的に自動で追加される
import { VendedLogsMixin } from '@aws-cdk/mixins-preview';

// outputFormatとrecordFieldsを指定した例
const mixin = new VendedLogsMixin({
  // ログ配信の設定
  toS3: {
    bucket: myBucket,
    outputFormat: 'parquet',  // 出力フォーマット(json, plain, parquet等)
    recordFields: [
      'timestamp',
      'message',
      // 必要なフィールドを指定
    ],
  },
});

mixins-preview: クロスアカウント配信先のサポート (#36827)

Vended Logsでクロスアカウントのログ配信がサポートされました。S3バケットとFirehose Delivery Streamをクロスアカウントの配信先として使用できます。

import { S3Destination, FirehoseDestination } from '@aws-cdk/mixins-preview';

// クロスアカウントS3配信先の設定
const s3Destination = new S3Destination({
  bucket: crossAccountBucket,
  // クロスアカウント配信に必要な権限は自動的に設定される
});

// クロスアカウントFirehose配信先の設定
const firehoseDestination = new FirehoseDestination({
  deliveryStream: crossAccountDeliveryStream,
});

注意:

  • CloudWatch Log GroupsとX-Rayはクロスアカウント配信をサポートしていません
  • クロスアカウント配信に必要なIAM権限は自動的に設定されます

まとめ

AWS CDK v2.241.0は、CDK Mixinsの導入多数の新機能追加が特徴的なリリースです。

主なポイント:

  • CDK Mixins: コンストラクトに再利用可能な機能を追加する新しい仕組みがコアに導入
  • EKS 1.35サポート: 最新のKubernetesバージョンに対応(kubectl 1.35.0、Helm 4.1.0)
  • S3 ABAC: 属性ベースアクセス制御でタグに基づくアクセス制御が可能に
  • Auto Scaling削除保護: 誤った削除からAuto Scaling Groupを保護
  • セキュリティ修正: minimatchのReDoS脆弱性が解消

破壊的変更に注意:

  • AWS::CodeDeploy::DeploymentGroupId属性が削除されました。attrIdを使用していた場合はrefへの移行が必要です。