概要
AWS CDK v2.181.0では、RDSにメンテナンスウィンドウでの変更適用をスケジュールする機能が追加され、Step FunctionsのS3CsvItemReaderでカスタムCSVデリミタがサポートされました。また、CloudFormationリソース定義の更新と複数のバグ修正が含まれています。
新機能
RDS: メンテナンスウィンドウでの変更適用スケジュール
RDSデータベースインスタンスとクラスターインスタンスで、変更を次のメンテナンスウィンドウで適用するようにスケジュールできるapplyImmediatelyプロパティが追加されました。
CloudFormationのApplyImmediately機能を利用することで、即座に変更を適用するか、次のメンテナンスウィンドウまで待つかを制御できます。
DatabaseInstanceでの使用例
import * as rds from 'aws-cdk-lib/aws-rds';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const instance = new rds.DatabaseInstance(this, 'Instance', {
engine: rds.DatabaseInstanceEngine.postgres({
version: rds.PostgresEngineVersion.VER_16_0,
}),
vpc,
instanceType: ec2.InstanceType.of(
ec2.InstanceClass.T3,
ec2.InstanceSize.MICRO,
),
// 変更を次のメンテナンスウィンドウで適用
applyImmediately: false, // デフォルト: true(即座に適用)
});
DatabaseClusterでの使用例
import * as rds from 'aws-cdk-lib/aws-rds';
const cluster = new rds.DatabaseCluster(this, 'Cluster', {
engine: rds.DatabaseClusterEngine.auroraPostgres({
version: rds.AuroraPostgresEngineVersion.VER_16_0,
}),
vpc,
writer: rds.ClusterInstance.serverlessV2('writer', {
// クラスターインスタンスレベルで変更適用タイミングを制御
applyImmediately: false, // 次のメンテナンスウィンドウで適用
}),
readers: [
rds.ClusterInstance.serverlessV2('reader', {
applyImmediately: false,
}),
],
});
利用シーン
- 本番環境でダウンタイムを最小限に抑えたい場合
- メンテナンスウィンドウを計画的に設定し、変更を計画的に適用したい場合
- インスタンスタイプやストレージの変更など、再起動が必要な変更を実施する場合
注意: 現在、applyImmediatelyはクラスターレベルの設定ではなく、インスタンスレベルでのみサポートされています。
関連PR: #33448
Step Functions: S3CsvItemReaderでのカスタムCSVデリミタサポート
Step Functionsの分散マップ状態で使用するS3CsvItemReaderに、カスタムCSVデリミタを指定できるcsvDelimiterプロパティが追加されました。
デフォルトではカンマ(,)が使用されますが、タブ区切りやセミコロン区切りなど、異なるデリミタを使用するCSVファイルにも対応できるようになりました。
使用例
import * as sfn from 'aws-cdk-lib/aws-stepfunctions';
import * as s3 from 'aws-cdk-lib/aws-s3';
const bucket = s3.Bucket.fromBucketName(this, 'Bucket', 'my-bucket');
const distributedMap = new sfn.DistributedMap(this, 'DistributedMap', {
itemReader: new sfn.S3CsvItemReader({
bucket,
key: 'data.csv',
// カスタムデリミタを指定(例: タブ区切り)
csvDelimiter: '\t', // デフォルト: ',' (カンマ)
}),
maxConcurrency: 10,
});
distributedMap.itemProcessor(
new sfn.Pass(this, 'ProcessItem'),
);
サポートされるデリミタの例
// カンマ区切り(デフォルト)
csvDelimiter: ','
// タブ区切り
csvDelimiter: '\t'
// セミコロン区切り
csvDelimiter: ';'
// パイプ区切り
csvDelimiter: '|'
利用シーン
- ヨーロッパ圏で一般的なセミコロン区切りのCSVファイルを処理する場合
- TSV(タブ区切り)ファイルを処理する場合
- レガシーシステムから出力されたカスタム区切り文字のファイルを処理する場合
関連PR: #33558
CloudFormation L1リソース定義の更新
CloudFormationリソースの定義が最新のものに更新されました。これにより、AWSサービスの新機能や更新されたプロパティがCDKで利用可能になります。
関連PR: #33579
バグ修正
Cognito: 脅威保護機能の再追加と機能計画の明確化
以前削除されたCognitoの脅威保護(threat protection)機能が再度追加され、今後の機能計画が明確化されました。
関連PR: #33565
Core: CustomResourceのserviceTimeoutがトークンで機能しない問題の修正
CustomResourceのserviceTimeoutプロパティがトークン(動的な値)を受け取った場合に正しく動作しない問題が修正されました。
import * as cdk from 'aws-cdk-lib';
import * as cr from 'aws-cdk-lib/custom-resources';
const timeout = cdk.Duration.minutes(5);
new cr.CustomResource(this, 'MyResource', {
// トークンとして渡されるタイムアウトが正しく処理されるように修正
serviceTimeout: timeout,
// ...
});
関連PR: #33541
Core: NestedStackのリスト値へのクロススタック参照が無効な出力を生成する問題の修正
NestedStackからリスト値をエクスポートし、他のスタックから参照する際に、無効なCloudFormationテンプレートが生成される問題が修正されました。
関連PR: #32575
Core: タグアスペクトの優先順位が間違っている問題の修正
CDKのアスペクト機能を使用してタグを適用する際、優先順位が正しく適用されない問題が修正されました。
関連PR: #33460
RDS: DatabaseClusterPropsのmonitoringIntervalがトークンで機能しない問題の修正
DatabaseClusterPropsのmonitoringIntervalプロパティがトークンで渡された場合に正しく処理されない問題が修正されました。
import * as rds from 'aws-cdk-lib/aws-rds';
import * as cdk from 'aws-cdk-lib';
const interval = cdk.Duration.seconds(60);
const cluster = new rds.DatabaseCluster(this, 'Cluster', {
// トークンとして渡されるモニタリング間隔が正しく処理されるように修正
monitoringInterval: interval,
// ...
});
関連PR: #33516
Step Functions Tasks: SageMakerCreateTrainingJobにsagemaker:AddTags権限を追加
SageMakerCreateTrainingJobタスクで、トレーニングジョブにタグを追加するために必要なsagemaker:AddTags権限が自動的に付与されるようになりました。
関連PR: #32536
Alphaモジュール (2.181.0-alpha.0)
EKS v2 (alpha): EKS Auto Modeサポート
@aws-cdk/aws-eks-v2-alphaモジュールに、EKS Auto Modeのサポートが追加されました。EKS Auto Modeでは、コンピュートリソースがノードプールを通じて自動的に管理されます。
デフォルトの動作(Auto Mode有効)
import * as eks from '@aws-cdk/aws-eks-v2-alpha';
// デフォルトでAuto Modeが有効
const cluster = new eks.Cluster(this, 'Cluster', {
vpc,
version: eks.KubernetesVersion.V1_32,
kubectlProviderOptions: {
kubectlLayer: new KubectlV32Layer(this, 'kubectl'),
},
// Auto Modeがデフォルトで有効になっており、明示的な指定は不要
});
明示的なAuto Mode設定
const cluster = new eks.Cluster(this, 'Cluster', {
vpc,
version: eks.KubernetesVersion.V1_32,
kubectlProviderOptions: {
kubectlLayer: new KubectlV32Layer(this, 'kubectl'),
},
defaultCapacityType: eks.DefaultCapacityType.AUTOMODE, // オプション(デフォルト値)
compute: {
nodePools: ['system', 'general-purpose'], // オプション(デフォルト値)
nodeRole: customRole, // オプション: カスタムIAMロール
},
});
主な特徴
- デフォルトでAuto Modeが有効(V2の主要な違い)
- ノードプールを通じてコンピュートリソースを自動管理
- Kubernetesネットワーキングで弾力的な負荷分散を有効化
- ブロックストレージ設定を自動有効化
- デフォルトキャパシティをノードグループとして作成しない(aws-eksモジュールとの主要な違い)
- ノードプールは大文字小文字を区別し、“system”および/または”general-purpose”である必要がある
- 手動で追加されたノードグループとの共存可能(ハイブリッドデプロイメント)
関連PR: #33373
MSK (alpha): Kafka 3.8.xサポートと廃止バージョンへのラベル追加
Amazon MSKで、Kafka 3.8.xバージョンのサポートが追加され、廃止された古いバージョンに廃止ラベルが追加されました。
Kafka 3.8.xの使用例
import * as msk from '@aws-cdk/aws-msk-alpha';
const cluster = new msk.Cluster(this, 'Cluster', {
vpc,
// 新しいKafka 3.8.xバージョンを指定
clusterVersion: msk.KafkaVersion.V3_8_0,
// ...
});
廃止されたバージョン
以下のバージョンには廃止ラベルが追加されました:
| バージョン | EOL日 |
|---|---|
| 2.6.0 - 2.6.3 | 2024-09-11 |
| 2.7.0 - 2.7.2 | 2024-09-11 |
| 2.8.0 - 2.8.1 | 2024-09-11 |
| 2.8.2-tiered | 2025-01-14 |
| 3.1.1 | 2024-09-11 |
| 3.2.0 | 2024-09-11 |
| 3.3.1 - 3.3.2 | 2024-09-11 |
これらのバージョンを使用している場合は、サポートされているバージョンへのアップグレードを検討してください。
関連PR: #33553
Redshift (alpha): メンテナンストラック名のサポート
Amazon Redshiftクラスターで、メンテナンストラック名を指定できるmaintenanceTrackNameプロパティが追加されました。
使用例
import * as redshift from '@aws-cdk/aws-redshift-alpha';
const cluster = new redshift.Cluster(this, 'Cluster', {
masterUser: {
masterUsername: 'admin',
},
vpc,
// メンテナンストラックを指定
maintenanceTrackName: redshift.MaintenanceTrackName.CURRENT, // または TRAILING、PREVIEW
});
メンテナンストラックオプション
// 現在のメンテナンストラック(デフォルト)
maintenanceTrackName: redshift.MaintenanceTrackName.CURRENT
// 遅延メンテナンストラック(より安定した更新)
maintenanceTrackName: redshift.MaintenanceTrackName.TRAILING
// プレビュートラック(最新機能の早期アクセス)
maintenanceTrackName: redshift.MaintenanceTrackName.PREVIEW
利用シーン
- CURRENT: 最新の機能と修正を定期的に適用したい場合
- TRAILING: より安定性を重視し、他のクラスターでの実績を待ってから適用したい場合
- PREVIEW: 新機能を早期に試したい開発/テスト環境
関連PR: #33552
まとめ
AWS CDK v2.181.0では、RDSでのメンテナンスウィンドウを活用した変更適用のスケジューリング機能と、Step Functionsでのカスタム区切り文字を使用したCSV処理のサポートが追加されました。これらの機能により、本番環境でのデータベース変更管理がより柔軟になり、多様なデータ形式への対応が向上しました。
Alphaモジュールでは、EKS v2のAuto Modeサポート、MSKの最新Kafkaバージョン対応、Redshiftのメンテナンストラック制御など、重要な新機能が追加されています。特にEKS Auto Modeは、Kubernetesクラスターの運用管理を大幅に簡素化する革新的な機能です。
また、複数のバグ修正により、CustomResourceのタイムアウト処理やRDSのモニタリング設定など、トークンを使用する際の動作がより安定しました。