概要
AWS CDK v2.187.0では、ECRリポジトリのfromLookupメソッド追加、EKSノードグループの自動修復機能サポート、Kafkaイベントソースでの開始位置タイムスタンプ指定など、開発者体験を向上させる重要な機能が追加されました。また、Alphaモジュールでは、EC2 LaunchTemplateへのPlacementGroup追加などの機能が含まれています。
新機能
ECR: 既存リポジトリのルックアップ機能
ECRモジュールにfromLookupメソッドが追加され、既存のECRリポジトリを動的に参照できるようになりました。これにより、リポジトリARNや名前が事前に分からない場合でも、デプロイ時にリポジトリを検索して利用できます。
主な機能:
- リポジトリ名またはARNで検索可能
- Context Providerを使用した動的な検索
- Token化された値には対応しない(事前に値が確定している必要がある)
コード例:
import * as ecr from 'aws-cdk-lib/aws-ecr';
// リポジトリ名で検索
const repository = ecr.Repository.fromLookup(this, 'MyRepository', {
repositoryName: 'my-app-repo',
});
// リポジトリARNで検索
const repositoryByArn = ecr.Repository.fromLookup(this, 'MyRepositoryByArn', {
repositoryArn: 'arn:aws:ecr:us-east-1:123456789012:repository/my-app-repo',
});
// 検索したリポジトリを使用
new lambda.DockerImageFunction(this, 'MyFunction', {
code: lambda.DockerImageCode.fromEcr(repository),
});
注意点:
repositoryNameまたはrepositoryArnの少なくとも一方を指定する必要があります- Token化された名前やARNは使用できません
EKS: ノードグループの自動修復機能
EKSのマネージドノードグループで、ノードの自動修復機能(Node Auto Repair)をサポートするようになりました。この機能により、ノードの健全性チェックに失敗したノードを自動的に置き換えることができます。
主な機能:
enableNodeAutoRepairプロパティで有効化- デフォルトは無効
- ノードの健全性監視と自動復旧
コード例:
import * as eks from 'aws-cdk-lib/aws-eks';
const cluster = new eks.Cluster(this, 'MyCluster', {
version: eks.KubernetesVersion.V1_31,
});
cluster.addNodegroupCapacity('MyNodeGroup', {
instanceTypes: [new ec2.InstanceType('t3.medium')],
minSize: 2,
maxSize: 5,
// ノードの自動修復を有効化
enableNodeAutoRepair: true,
});
詳細: この機能を有効にすると、EKSはノードの健全性チェックを定期的に実行し、問題が検出された場合は自動的にノードを置き換えます。これにより、ノードの障害による影響を最小限に抑えることができます。
Lambda: Kafkaイベントソースでの開始位置タイムスタンプ指定
Lambda関数のKafkaイベントソース(ManagedKafkaEventSourceとSelfManagedKafkaEventSource)で、特定の時刻から読み取りを開始できるようになりました。
主な機能:
startingPositionTimestampプロパティでUnixタイムスタンプを指定startingPositionをAT_TIMESTAMPに設定する必要がある- マネージドKafkaとセルフマネージドKafkaの両方でサポート
コード例:
import * as lambda from 'aws-cdk-lib/aws-lambda';
import * as sources from 'aws-cdk-lib/aws-lambda-event-sources';
import * as msk from 'aws-cdk-lib/aws-msk';
declare const myFunction: lambda.Function;
declare const cluster: msk.Cluster;
// 特定の時刻からKafkaトピックを読み取る
myFunction.addEventSource(new sources.ManagedKafkaEventSource({
clusterArn: cluster.clusterArn,
topic: 'my-topic',
startingPosition: lambda.StartingPosition.AT_TIMESTAMP,
// 2025年3月1日 00:00:00 UTCから読み取り開始
startingPositionTimestamp: 1709251200,
}));
// セルフマネージドKafkaでも同様に使用可能
myFunction.addEventSource(new sources.SelfManagedKafkaEventSource({
bootstrapServers: ['kafka-broker:9092'],
topic: 'my-topic',
startingPosition: lambda.StartingPosition.AT_TIMESTAMP,
startingPositionTimestamp: 1709251200,
secret: mySecret,
}));
注意点:
startingPositionTimestampはstartingPositionがAT_TIMESTAMPの場合のみ有効です- 他の
startingPositionと組み合わせると警告またはエラーが発生します
その他の機能
cx-api: CDK_TOOLKIT_VERSION環境変数のサポート
CDK Toolkitのバージョンを環境変数で宣言できるようになりました。
CloudFormation L1リソース定義の更新
最新のCloudFormationリソース定義が更新されました。
アセット名の表示改善
アセットのフレンドリーな表示名が追加され、デプロイ時の可視性が向上しました。
Kinesis Firehose: ValidationErrorsの改善
Kinesis Firehoseモジュールで、型付けされていないErrorの代わりにValidationErrorsをスローするようになりました。
Alphaモジュール (2.187.0-alpha.0)
EC2: LaunchTemplateへのPlacementGroup追加
LaunchTemplateでPlacementGroupを指定できるようになりました。これにより、EC2インスタンスの配置戦略をより細かく制御できます。
コード例:
import * as ec2 from '@aws-cdk/aws-ec2-alpha';
// Placement Groupを作成
const placementGroup = new ec2.PlacementGroup(this, 'MyPlacementGroup', {
strategy: ec2.PlacementGroupStrategy.CLUSTER,
});
// Launch TemplateにPlacement Groupを指定
const launchTemplate = new ec2.LaunchTemplate(this, 'MyLaunchTemplate', {
machineImage: ec2.MachineImage.latestAmazonLinux2023(),
instanceType: ec2.InstanceType.of(ec2.InstanceClass.C5, ec2.InstanceSize.XLARGE),
// Placement Groupを指定
placementGroup: placementGroup,
});
EC2: VPCEndpointServiceのSupportedRegionsプロパティ対応
VPCエンドポイントサービスで、新しいSupportedRegionsプロパティをサポートするようになりました。
App Runner: ValidationErrorの改善
App Runnerモジュールでも、型付けされていないエラーの代わりにValidationErrorをスローするようになりました。
IoT: Enumの値を追加
IoTモジュールで不足していたEnum値が追加されました。
バグ修正
Cognito: ユーザープールクライアントのログ動作修正
Cognitoユーザープールクライアントのカスタムリソースで、ログ動作が修正されました。これにより、セキュリティアドバイザリ GHSA-qq4x-c6h6-rfxh で報告された問題が解決されました。
Core: ネストされたスタックのアセット名にTokenが含まれる問題を修正
ネストされたスタックのアセット名にTokenが含まれる問題が修正されました。
DynamoDB: レプリカテーブルの保持設定が正しく適用されない問題を修正
DynamoDBテーブル v1で、テーブルがRETAIN設定の場合にレプリカテーブルも保持されるように修正されました。
EKS: ルックアップしたVPCでのプライベートサブネット検証エラーを修正
EKSクラスターで、ルックアップしたVPCを使用する際にプライベートサブネットの早期検証エラーが発生する問題が修正されました。
まとめ
AWS CDK v2.187.0は、ECRリポジトリのルックアップ、EKSノードグループの自動修復、Kafkaイベントソースのタイムスタンプ指定など、実用的な機能追加が多く含まれたリリースです。特にECRのfromLookupは、既存リソースの参照を容易にする重要な機能です。また、いくつかのセキュリティ修正やバグ修正も含まれており、安定性が向上しています。Alphaモジュールでも、EC2 LaunchTemplateのPlacementGroup対応など、有用な機能が追加されています。