Back to Releases
v2.215.0 2025年9月15日

AWS CDK v2.215.0 リリース解説

RDS DatabaseProxyEndpoint L2コンストラクト、Batch ECS Exec、CodeBuildリモートDockerサーバーサポート、Syntheticsマルチブラウザ対応など、多数の新機能を含むリリース

rdsbatchcodebuildsyntheticscustom-resourcestepfunctions

概要

AWS CDK v2.215.0は、RDS DatabaseProxyEndpointの新しいL2コンストラクト、Batch ECS Exec対応、CodeBuildのリモートDockerサーバーサポート、Syntheticsのマルチブラウザ対応など、多数の新機能を含むメジャーリリースです。また、カスタムリソースのPythonランタイムが3.13にアップグレードされました。

新機能

RDS DatabaseProxyEndpoint L2コンストラクト

関連PR: #35064

RDS Database Proxyにカスタムエンドポイントを追加できるDatabaseProxyEndpoint L2コンストラクトが追加されました。これにより、読み取り専用エンドポイントや特定のサブネット・セキュリティグループを持つエンドポイントを作成できます。

主要なプロパティ:

  • dbProxy: 関連付けるDatabase Proxy(必須)
  • dbProxyEndpointName: エンドポイント名(オプション、未指定時はCDKが生成)
  • vpc: エンドポイントを配置するVPC(必須)
  • vpcSubnets: エンドポイントを配置するサブネット(オプション、未指定時はVPCのデフォルト戦略を使用)
  • securityGroups: 関連付けるセキュリティグループ(オプション、未指定時はVPCのデフォルトセキュリティグループを使用)
  • targetRole: 読み取り/書き込みまたは読み取り専用操作の指定(オプション、デフォルトはREAD_WRITE

コード例:

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

declare const vpc: ec2.Vpc;
declare const proxy: rds.DatabaseProxy;

// 読み取り専用エンドポイントの作成
const readOnlyEndpoint = new rds.DatabaseProxyEndpoint(this, 'ReadOnlyEndpoint', {
  dbProxy: proxy,                             // 関連付けるDatabase Proxy
  vpc: vpc,                                   // エンドポイントを配置するVPC
  vpcSubnets: {                              // エンドポイントを配置するサブネット
    subnetType: ec2.SubnetType.PRIVATE_WITH_EGRESS,
  },
  targetRole: rds.ProxyEndpointTargetRole.READ_ONLY,  // 読み取り専用に設定
});

// DatabaseProxyクラスにもaddEndpointメソッドが追加されました
const customEndpoint = proxy.addEndpoint('CustomEndpoint', {
  vpc: vpc,
  dbProxyEndpointName: 'my-custom-endpoint',  // カスタムエンドポイント名
  vpcSubnets: {
    availabilityZones: ['us-east-1a'],        // 特定のAZを指定
  },
});

// エンドポイント情報へのアクセス
console.log(readOnlyEndpoint.endpoint);           // エンドポイントのホスト名
console.log(readOnlyEndpoint.dbProxyEndpointName); // エンドポイント名
console.log(readOnlyEndpoint.dbProxyEndpointArn);  // エンドポイントのARN

Batch ECS Execute Command (ECS Exec) サポート

関連PR: #35341

AWS Batchジョブコンテナに対してECS Execを使用してアクセスできるようになりました。これにより、実行中のBatchジョブコンテナにインタラクティブにアクセスしてデバッグできます。

追加されたプロパティ:

  • enableExecuteCommand: ECS Execを有効化(デフォルト: false

自動的に追加される権限:

enableExecuteCommandtrueに設定すると、以下のIAM権限がジョブロールに自動的に追加されます:

  • ssmmessages:CreateControlChannel
  • ssmmessages:CreateDataChannel
  • ssmmessages:OpenControlChannel
  • ssmmessages:OpenDataChannel

コード例:

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

declare const jobQueue: batch.IJobQueue;

// ECS Execを有効化したジョブ定義
const jobDefinition = new batch.EcsJobDefinition(this, 'JobDef', {
  container: new batch.EcsEc2ContainerDefinition(this, 'Container', {
    image: ecs.ContainerImage.fromRegistry('public.ecr.aws/amazonlinux/amazonlinux:latest'),
    cpu: 256,
    memory: cdk.Size.mebibytes(512),
    // ECS Execを有効化(デバッグ用にコンテナにアクセス可能)
    enableExecuteCommand: true,
  }),
});

// ジョブの送信
const job = new batch.EcsJobDefinition(this, 'MyJob', {
  container: new batch.EcsFargateContainerDefinition(this, 'FargateContainer', {
    image: ecs.ContainerImage.fromRegistry('my-app:latest'),
    cpu: 1,
    memory: cdk.Size.gibibytes(2),
    // Fargateでもサポート
    enableExecuteCommand: true,
  }),
});

使用方法:

ジョブが実行中の状態で、AWS CLIを使用してコンテナにアクセスできます:

aws batch execute-command \
  --cluster <cluster-name> \
  --task <task-id> \
  --container <container-name> \
  --interactive \
  --command "/bin/bash"

CodeBuild リモートDockerサーバーサポート

関連PR: #34976

CodeBuildプロジェクトでリモートDockerサーバーを使用できるようになりました。これにより、より高いコンピューティングリソースでDockerビルドを実行できます。

追加された列挙型:

  • DockerServerComputeType: リモートDockerサーバー専用のコンピュートタイプ
    • SMALL: 4 vCPU, 8 GB RAM
    • MEDIUM: 8 vCPU, 16 GB RAM
    • LARGE: 16 vCPU, 32 GB RAM
    • XLARGE: 32 vCPU, 64 GB RAM
    • XXLARGE: 64 vCPU, 128 GB RAM

コード例:

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

// リモートDockerサーバーを使用するプロジェクト
const project = new codebuild.Project(this, 'MyProject', {
  environment: {
    buildImage: codebuild.LinuxBuildImage.STANDARD_7_0,
    // リモートDockerサーバーのコンピュートタイプを指定
    computeType: codebuild.DockerServerComputeType.LARGE,  // 16 vCPU, 32 GB RAM
  },
  buildSpec: codebuild.BuildSpec.fromObject({
    version: '0.2',
    phases: {
      build: {
        commands: [
          'docker build -t my-app .',
          'docker push my-app:latest',
        ],
      },
    },
  }),
});

ユースケース:

  • 大規模なDockerイメージのビルド
  • マルチステージビルドでのリソース最適化
  • CI/CDパイプラインの高速化

Synthetics マルチブラウザサポート

関連PR: #35423

CloudWatch Syntheticsカナリアで、Google Chromeに加えてMozilla Firefoxもサポートされるようになりました。最大2つのブラウザタイプを指定できます。

追加された型:

  • BrowserType: ブラウザタイプの列挙型
    • CHROME: Google Chrome
    • FIREFOX: Mozilla Firefox
  • browserConfigs: ブラウザ設定の配列(最大2つ)

制約事項:

  • 最大2つのブラウザタイプを指定可能
  • Firefoxは Python Selenium ランタイムではサポートされません(Node.js PuppeteerまたはPlaywrightランタイムを使用)
  • 少なくとも1つのブラウザタイプが必要

コード例:

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

declare const bucket: s3.Bucket;

// 複数ブラウザでテストするカナリア
const canary = new synthetics.Canary(this, 'MultiBrowserCanary', {
  schedule: synthetics.Schedule.rate(cdk.Duration.minutes(5)),
  test: synthetics.Test.custom({
    code: synthetics.Code.fromAsset('canary'),
    handler: 'index.handler',
  }),
  runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_10_0,
  artifactsBucketLocation: { bucket },
  // ChromeとFirefoxの両方でテスト
  browserConfigs: [
    synthetics.BrowserType.CHROME,
    synthetics.BrowserType.FIREFOX,
  ],
});

// Firefoxのみでテスト
const firefoxCanary = new synthetics.Canary(this, 'FirefoxCanary', {
  schedule: synthetics.Schedule.rate(cdk.Duration.minutes(10)),
  test: synthetics.Test.custom({
    code: synthetics.Code.fromAsset('canary'),
    handler: 'index.handler',
  }),
  runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PLAYWRIGHT_2_0,
  artifactsBucketLocation: { bucket },
  // Firefoxのみ指定
  browserConfigs: [synthetics.BrowserType.FIREFOX],
});

カスタムリソースのPython 3.13ランタイムへのアップグレード

関連PR: #35342

カスタムリソースハンドラーで使用されるPythonランタイムが3.9/3.11から3.13にアップグレードされました。Python 3.9は2025年10月にEOLを迎えるため、この変更により長期的なサポートが保証されます。

影響を受けるコンポーネント:

  • aws-ecs: Drain Hook Provider
  • aws-eks: Kubectl Provider
  • aws-appconfig: Configuration Custom Resource
  • aws-cloudfront-origins: S3 Origin Access Control
  • aws-codepipeline-actions: クロスアカウントパイプライン
  • aws-dynamodb: Import Source
  • その他多数のカスタムリソースハンドラー

注意事項:

  • この変更は既存のスタックには影響しません
  • 新しくデプロイされるカスタムリソースからPython 3.13が使用されます
  • Python 3.13はすべてのAWSリージョンで利用可能です

Step Functions EvaluateExpression の Node.js 22 サポート

関連PR: #35370

Step FunctionsのEvaluateExpressionタスクでNode.js 22ランタイムがサポートされました。

コード例:

import * as sfn from 'aws-cdk-lib/aws-stepfunctions';
import * as tasks from 'aws-cdk-lib/aws-stepfunctions-tasks';

// Node.js 22を使用したEvaluateExpression
const evalTask = new tasks.EvaluateExpression(this, 'Eval', {
  expression: '$.value * 2',
  runtime: lambda.Runtime.NODEJS_22_X,  // Node.js 22ランタイム
});

Bunの新しいロックファイルサポート

関連PR: #34873

Bunパッケージマネージャーの新しいロックファイル形式(bun.lockb)がサポートされました。

新しいリソースインターフェース

関連PR: #35032

L1リソースとL2リソースの両方で共有される新しいリソースインターフェースが導入されました。これにより、より型安全なリソース参照が可能になります。

バグ修正

S3 BucketNotificationsHandler IAM権限のスコープ修正

関連PR: #35334

S3バケット通知ハンドラーのIAM権限が、すべてのバケットではなく特定のバケットARNにスコープされるようになりました。これにより、最小権限の原則に準拠します。

修正内容:

  • 以前: s3:* on * (すべてのバケット)
  • 修正後: s3:GetBucketNotifications3:PutBucketNotification on arn:aws:s3:::specific-bucket

ECR Assets TarballImageAsset が CDK_DOCKER 環境変数を尊重

関連PR: #35344

TarballImageAssetCDK_DOCKER環境変数を尊重するようになり、カスタムDockerコマンドを使用できます。

Step Functions DistributedMap の権限修正

関連PR: #34760, #35417

DistributedMapを使用するステートマシンで、実行およびリドライブに必要な権限が正しく追加されるようになりました。ネストされたStateGraphsでのみDistributedMapが定義されている場合も正しく動作します。

Stack docstring のタイポ修正

関連PR: #35455

Stackクラスのdocstringで「notfication」が「notification」に修正されました。

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

Bedrock Alpha: プロンプトのデフォルトバリアント検証

関連PR: #35366

Bedrockプロンプトでデフォルトバリアントを使用する際の検証が追加されました。これにより、不正な設定を早期に検出できます。

まとめ

AWS CDK v2.215.0は、以下の主要な機能を含む充実したリリースです:

  1. RDS DatabaseProxyEndpoint L2コンストラクト: カスタムエンドポイントを簡単に作成
  2. Batch ECS Exec: 実行中のBatchジョブコンテナへのインタラクティブアクセス
  3. CodeBuild リモートDockerサーバー: より高性能なDockerビルド環境
  4. Synthetics マルチブラウザ: ChromeとFirefoxでのクロスブラウザテスト
  5. Python 3.13へのアップグレード: カスタムリソースの長期サポート

これらの新機能により、より柔軟で強力なインフラストラクチャ構築が可能になります。特にRDS DatabaseProxyEndpointとBatch ECS Execは、プロダクション環境でのデバッグと運用を大幅に改善します。