概要
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)
自動的に追加される権限:
enableExecuteCommandをtrueに設定すると、以下のIAM権限がジョブロールに自動的に追加されます:
ssmmessages:CreateControlChannelssmmessages:CreateDataChannelssmmessages:OpenControlChannelssmmessages: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 RAMMEDIUM: 8 vCPU, 16 GB RAMLARGE: 16 vCPU, 32 GB RAMXLARGE: 32 vCPU, 64 GB RAMXXLARGE: 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 ChromeFIREFOX: 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 Provideraws-eks: Kubectl Provideraws-appconfig: Configuration Custom Resourceaws-cloudfront-origins: S3 Origin Access Controlaws-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:GetBucketNotification、s3:PutBucketNotificationonarn:aws:s3:::specific-bucket
ECR Assets TarballImageAsset が CDK_DOCKER 環境変数を尊重
関連PR: #35344
TarballImageAssetがCDK_DOCKER環境変数を尊重するようになり、カスタムDockerコマンドを使用できます。
Step Functions DistributedMap の権限修正
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は、以下の主要な機能を含む充実したリリースです:
- RDS DatabaseProxyEndpoint L2コンストラクト: カスタムエンドポイントを簡単に作成
- Batch ECS Exec: 実行中のBatchジョブコンテナへのインタラクティブアクセス
- CodeBuild リモートDockerサーバー: より高性能なDockerビルド環境
- Synthetics マルチブラウザ: ChromeとFirefoxでのクロスブラウザテスト
- Python 3.13へのアップグレード: カスタムリソースの長期サポート
これらの新機能により、より柔軟で強力なインフラストラクチャ構築が可能になります。特にRDS DatabaseProxyEndpointとBatch ECS Execは、プロダクション環境でのデバッグと運用を大幅に改善します。