Back to Releases
v2.187.0 2025年3月31日

AWS CDK v2.187.0 リリース解説

ECRリポジトリのルックアップ機能、EKSノードグループの自動修復機能、Kafkaイベントソースのタイムスタンプ指定など、重要な機能追加を含むリリース

ecrekslambdakinesisfirehoseec2

概要

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タイムスタンプを指定
  • startingPositionAT_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,
}));

注意点:

  • startingPositionTimestampstartingPositionAT_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対応など、有用な機能が追加されています。