AWS CDK v2.174.0 がリリースされました。このバージョンでは、CodeBuildの新しい環境タイプのサポート、カスタムリソースのサービスタイムアウト設定、CloudFormationの簡略化されたリソースインポート機能など、多数の新機能とバグ修正が含まれています。
新機能
CodeBuild: 新しい環境タイプのサポート (#32729)
CodeBuildプロジェクトで、新しいEC2ベースの環境タイプがサポートされました。
追加された環境タイプ:
LINUX_EC2- Linux EC2環境ARM_EC2- ARM EC2環境WINDOWS_EC2- Windows EC2環境
import * as codebuild from 'aws-cdk-lib/aws-codebuild';
const project = new codebuild.Project(this, 'MyProject', {
// 新機能: EC2ベースの環境タイプを指定
environmentType: codebuild.EnvironmentType.LINUX_EC2,
buildSpec: codebuild.BuildSpec.fromObject({
version: '0.2',
phases: {
build: {
commands: ['echo "Building on Linux EC2"'],
},
},
}),
});
カスタムリソース: サービスタイムアウトの設定 (#30911)
カスタムリソースに serviceTimeout プロパティが追加され、カスタムリソースのタイムアウトをカスタマイズできるようになりました。デフォルトの3600秒から変更することで、開発・テストサイクルを高速化できます。
import * as cdk from 'aws-cdk-lib';
import * as customResources from 'aws-cdk-lib/custom-resources';
// CustomResourceでのサービスタイムアウト設定
const customResource = new cdk.CustomResource(this, 'MyCustomResource', {
serviceToken: 'arn:aws:lambda:us-east-1:123456789012:function:MyFunction',
// 新機能: サービスタイムアウトを設定(秒単位)
serviceTimeout: cdk.Duration.seconds(300), // デフォルト: 3600秒
properties: {
key: 'value',
},
});
// AwsCustomResourceでのサービスタイムアウト設定
const awsCustomResource = new customResources.AwsCustomResource(this, 'MyAwsCustomResource', {
onUpdate: {
service: 'S3',
action: 'ListBuckets',
physicalResourceId: customResources.PhysicalResourceId.of('my-resource'),
},
// 新機能: サービスタイムアウトを設定
serviceTimeout: cdk.Duration.minutes(5), // 5分に設定
policy: customResources.AwsCustomResourcePolicy.fromSdkCalls({
resources: customResources.AwsCustomResourcePolicy.ANY_RESOURCE,
}),
});
AutoScaling: アベイラビリティゾーン分散戦略 (#32100)
AutoScalingグループに availabilityZoneDistribution プロパティが追加され、インスタンスのアベイラビリティゾーン間の分散戦略を制御できるようになりました。
import * as autoscaling from 'aws-cdk-lib/aws-autoscaling';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const vpc = new ec2.Vpc(this, 'VPC');
const autoScalingGroup = new autoscaling.AutoScalingGroup(this, 'ASG', {
vpc,
instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.MICRO),
machineImage: new ec2.AmazonLinuxImage(),
// 新機能: AZ分散戦略を設定
availabilityZoneDistribution: 'balanced', // インスタンスをAZ間でバランスよく配置
});
この機能により、高可用性要件に応じてインスタンスの配置を最適化できます。
CLI: CloudFormation 簡略化リソースインポート (#32676)
CDK CLIで、CloudFormationの簡略化されたリソースインポート機能がサポートされました。同じ物理名を持つ既存のリソース(S3バケット、DynamoDBテーブルなど)をデプロイ時に自動的にインポートできます。
# 既存リソースを自動的にインポートしてデプロイ
cdk deploy --import-existing-resources
# または
cdk deploy --import-existing-resources MyStack
この機能は以下のユースケースで有用です:
- コンストラクトツリーのリファクタリング
cdk migrateを使用した既存リソースの移行- 既存のCloudFormationスタックへのCDKの段階的な導入
CloudFront: Distribution ARN プロパティ (#32531)
CloudFront Distributionに distributionArn プロパティが追加され、ディストリビューションのARNを簡単に取得できるようになりました。
import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
import * as s3 from 'aws-cdk-lib/aws-s3';
const bucket = new s3.Bucket(this, 'MyBucket');
const distribution = new cloudfront.Distribution(this, 'MyDistribution', {
defaultBehavior: {
origin: new cloudfront.origins.S3Origin(bucket),
},
});
// 新機能: Distribution ARNを取得
const arn = distribution.distributionArn;
// 例: arn:aws:cloudfront::123456789012:distribution/EDFDVBD632BHDS5
// インポートされたディストリビューションでも利用可能
const importedDistribution = cloudfront.Distribution.fromDistributionAttributes(this, 'ImportedDist', {
distributionId: 'EDFDVBD632BHDS5',
domainName: 'd111111abcdef8.cloudfront.net',
});
const importedArn = importedDistribution.distributionArn;
CodeBuild: 自動リトライ制限のサポート (#32507)
CodeBuildプロジェクトに autoRetryLimit プロパティが追加され、ビルドの自動リトライ回数を制御できるようになりました。
import * as codebuild from 'aws-cdk-lib/aws-codebuild';
const project = new codebuild.Project(this, 'MyProject', {
buildSpec: codebuild.BuildSpec.fromObject({
version: '0.2',
phases: {
build: {
commands: ['npm run build'],
},
},
}),
// 新機能: 自動リトライ回数を設定(0-2の範囲)
autoRetryLimit: 2, // ビルド失敗時に最大2回自動リトライ
});
この機能により、一時的な障害によるビルド失敗を自動的にリトライできます。
AppConfig: デプロイメントティック拡張アクションポイント (#32490)
AppConfigの拡張機能に atDeploymentTick アクションポイントが追加され、デプロイメント中の定期的なタイミングでアクションを実行できるようになりました。
import * as appconfig from 'aws-cdk-lib/aws-appconfig';
import * as lambda from 'aws-cdk-lib/aws-lambda';
const tickFunction = new lambda.Function(this, 'TickFunction', {
runtime: lambda.Runtime.NODEJS_20_X,
handler: 'index.handler',
code: lambda.Code.fromInline(`
exports.handler = async (event) => {
console.log('Deployment tick:', event);
};
`),
});
const extension = new appconfig.Extension(this, 'MyExtension', {
actions: [
new appconfig.Action({
actionPoints: [
appconfig.ActionPoint.ON_DEPLOYMENT_START,
appconfig.ActionPoint.ON_DEPLOYMENT_COMPLETE,
// 新機能: デプロイメント中の定期的なタイミングでアクションを実行
appconfig.ActionPoint.AT_DEPLOYMENT_TICK,
],
eventDestination: new appconfig.LambdaDestination(tickFunction),
}),
],
});
RDS: PostgreSQLとMariaDBの新バージョンサポート
PostgreSQL:
- PostgreSQL 11.22-rds.20241121 のサポート追加 (#32508)
MariaDB:
- MariaDB 11.4.4, 10.11.10, 10.6.20, 10.5.27 のサポート追加 (#32632)
import * as rds from 'aws-cdk-lib/aws-rds';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const vpc = new ec2.Vpc(this, 'VPC');
// PostgreSQL 11.22
const pgInstance = new rds.DatabaseInstance(this, 'PostgresInstance', {
engine: rds.DatabaseInstanceEngine.postgres({
version: rds.PostgresEngineVersion.VER_11_22, // 新バージョン
}),
vpc,
});
// MariaDB 11.4.4
const mariaInstance = new rds.DatabaseInstance(this, 'MariaInstance', {
engine: rds.DatabaseInstanceEngine.mariaDb({
version: rds.MariaDbEngineVersion.VER_11_4_4, // 新バージョン
}),
vpc,
});
Bedrock: 追加の基盤モデル (#32684)
AWS Bedrockで、新しい基盤モデルのサポートが追加されました。
CLI Plugin Contract: CLIとプラグイン間の公開契約 (#32111)
CDK CLIとプラグイン間の公開契約が導入され、プラグインの互換性と安定性が向上しました。
Alphaモジュールの変更
Glue: AWS Glue 5.0のサポート (#32467)
Alphaモジュールの @aws-cdk/aws-glue-alpha で、AWS Glue 5.0がサポートされました。
import * as glue from '@aws-cdk/aws-glue-alpha';
const job = new glue.Job(this, 'MyJob', {
executable: glue.JobExecutable.pythonShell({
glueVersion: glue.GlueVersion.V5_0, // 新バージョン
pythonVersion: glue.PythonVersion.THREE_NINE,
script: glue.Code.fromAsset('path/to/script.py'),
}),
});
EC2: C8GとM8Gインスタンスクラスの追加 (#32528)
Alphaモジュールの @aws-cdk/aws-ec2-alpha で、新しいGravitonベースのインスタンスクラスが追加されました。
import * as ec2 from '@aws-cdk/aws-ec2-alpha';
// C8G インスタンス (コンピューティング最適化、Graviton4)
const c8gInstance = ec2.InstanceType.of(
ec2.InstanceClass.C8G,
ec2.InstanceSize.XLARGE,
);
// M8G インスタンス (汎用、Graviton4)
const m8gInstance = ec2.InstanceType.of(
ec2.InstanceClass.M8G,
ec2.InstanceSize.XLARGE,
);
MSK: Kafka 3.7.xのサポート (#32515)
Alphaモジュールの @aws-cdk/aws-msk-alpha で、Kafka 3.7.xバージョンがサポートされました。
import * as msk from '@aws-cdk/aws-msk-alpha';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const vpc = new ec2.Vpc(this, 'VPC');
const cluster = new msk.Cluster(this, 'Cluster', {
clusterName: 'myCluster',
kafkaVersion: msk.KafkaVersion.V3_7_X, // 新バージョン (ZooKeeper)
vpc,
});
// KRaftモードも利用可能
const kraftCluster = new msk.Cluster(this, 'KraftCluster', {
clusterName: 'myKraftCluster',
kafkaVersion: msk.KafkaVersion.V3_7_X_KRAFT, // 新バージョン (KRaft)
vpc,
});
バグ修正
CLI関連の修正
- プロキシ環境下での通知機能の動作を修正 (#32590)
@aws-cdk/cloud-assembly-schemaの依存関係を最新化 (#32704)- ECRガベージコレクターでのページネーション処理を修正 (#32679)
- 認証情報プラグインが
nullの有効期限を返せるように修正 (#32554) cdk deploy -Rでロールバックが無効にならない問題を修正 (#32514)- 初期状態で空の認証情報を返すプラグインのサポート (#32552)
- SSOプロファイルでリージョンが設定されている場合の認証情報取得を修正 (#32520)
その他の修正
- OpenSearchでI4IとR7GDノードタイプがEBSボリュームを不要とするように修正 (#32592)
- AppSync関数のホットスワッピングでのリトライメカニズムを改善 (#32179)
- Lambda Python 3.8に非推奨タグを追加 (#32162)
- Route53ターゲットでのUserPoolドメインターゲットの非推奨メソッド使用を修正 (#31403)
- jsiiのバージョンを5.5から5.6にアップデート (#32588)
Alphaモジュールの修正
- EC2 Alphaでの
rangesOverlapでの文字列比較を修正 (#32269) - Redshift Alphaでカスタムリソース関数からのテーブル名抽出を修正 (#32452)
- Redshift Alphaでデータベースクエリシングルトン関数に同じロールを使用するように修正 (#32363)
まとめ
AWS CDK v2.174.0 は、CodeBuildの新しい環境タイプ、カスタムリソースのタイムアウト設定、CloudFormationの簡略化リソースインポート機能など、開発者エクスペリエンスを向上させる多数の新機能を提供しています。特に、カスタムリソースのサービスタイムアウト設定は、開発・テストサイクルの高速化に大きく貢献します。また、CLIの簡略化リソースインポート機能は、既存リソースのCDK管理への移行を大幅に簡素化します。
Alphaモジュールでは、Glue 5.0、Kafka 3.7.x、新しいGraviton4インスタンスクラス(C8G、M8G)のサポートが追加され、最新のAWSサービスと機能を活用できるようになりました。
CLIの各種バグ修正により、プロキシ環境やSSO認証での動作がより安定しました。アップグレードを検討する際は、破壊的変更がないことを確認してください。