概要
AWS CDK v2.240.0の最大のハイライトは、aws-eks-v2モジュールがAlphaからStableに昇格したことです。この新しいEKSモジュールは、従来のaws-eksモジュールを完全に書き直したもので、ネイティブのL1 CloudFormationリソースを使用し、EKS Auto Modeをデフォルトでサポートします。また、セキュリティ修正としてminimatchパッケージのReDoS脆弱性が解消されています。
新機能
EKS-V2: Stableに昇格 🚀 (#36950)
@aws-cdk/aws-eks-v2-alphaモジュールがStableに昇格し、aws-cdk-lib/aws-eks-v2として利用可能になりました。この新しいモジュールは従来のaws-eksモジュールと比較して以下の主要な改善があります:
主な変更点:
- ネイティブL1リソースの使用: カスタムリソース(
Custom::AWSCDK-EKS-Cluster)ではなく、ネイティブのAWS::EKS::Clusterを使用 - Kubectl Handlerの任意化: デフォルトでは作成されず、明示的に指定した場合のみ作成
- AwsAuth constructの廃止: クラスターへの権限はAccess Entryで管理
- スタック制限の解除: 1スタックあたり複数のクラスター作成が可能に
- ネストスタックの廃止: シンプルなスタック構成
- EKS Auto Modeのデフォルトサポート: フルマネージドのコンピュートモード
import * as eks from 'aws-cdk-lib/aws-eks-v2';
// 最小構成: EKS Auto Modeがデフォルトで有効
const cluster = new eks.Cluster(this, 'MyCluster', {
version: eks.KubernetesVersion.V1_34, // Kubernetesバージョン(必須)
});
EKS Auto Mode(デフォルト):
EKS Auto Modeでは、EKSがポッドの要件に基づいてEC2インスタンスを自動的にプロビジョニング・スケーリングします。
import * as eks from 'aws-cdk-lib/aws-eks-v2';
// EKS Auto Modeを明示的に有効化
const cluster = new eks.Cluster(this, 'AutoModeCluster', {
version: eks.KubernetesVersion.V1_34,
defaultCapacityType: eks.DefaultCapacityType.AUTOMODE, // Auto Modeを使用(デフォルト値)
compute: {
nodePools: ['system', 'general-purpose'], // デフォルトのノードプール
},
});
Managed Node Groupsの使用:
import * as eks from 'aws-cdk-lib/aws-eks-v2';
// Managed Node Groupsを使用する場合
const cluster = new eks.Cluster(this, 'ManagedNodeCluster', {
version: eks.KubernetesVersion.V1_34,
defaultCapacityType: eks.DefaultCapacityType.NODEGROUP, // Managed Node Groupsを使用
});
// Fargateプロファイルの追加(オプション)
cluster.addFargateProfile('FargateProfile', {
selectors: [
{ namespace: 'default' }, // 'default'名前空間のPodをFargateで実行
],
});
Fargate専用クラスター:
import * as eks from 'aws-cdk-lib/aws-eks-v2';
// Fargateのみを使用するクラスター
const fargateCluster = new eks.FargateCluster(this, 'FargateCluster', {
version: eks.KubernetesVersion.V1_34, // Kubernetesバージョン(必須)
});
Kubectl Handlerの設定(オプション):
Kubernetesマニフェストの適用やHelm chartのインストールにはKubectl Handlerが必要です:
import * as eks from 'aws-cdk-lib/aws-eks-v2';
import { KubectlV34Layer } from '@aws-cdk/lambda-layer-kubectl-v34';
// Kubectl Handlerを有効化
const cluster = new eks.Cluster(this, 'ClusterWithKubectl', {
version: eks.KubernetesVersion.V1_34,
kubectlProviderOptions: {
kubectlLayer: new KubectlV34Layer(this, 'KubectlLayer'), // kubectlレイヤー
},
});
// Kubernetesマニフェストの適用が可能に
cluster.addManifest('MyManifest', {
apiVersion: 'v1',
kind: 'ConfigMap',
metadata: { name: 'my-config' },
data: { key: 'value' },
});
Self-Managed Nodes:
import * as eks from 'aws-cdk-lib/aws-eks-v2';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
const cluster = new eks.Cluster(this, 'SelfManagedCluster', {
version: eks.KubernetesVersion.V1_34,
});
// セルフマネージドのAuto Scaling Groupを追加
cluster.addAutoScalingGroupCapacity('SelfManagedASG', {
instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.MEDIUM),
minCapacity: 1, // 最小インスタンス数
maxCapacity: 5, // 最大インスタンス数
});
移行時の注意:
従来のaws-eksモジュールからの移行時には、非推奨のinstanceTypeプロパティが削除されているため、instanceTypes(配列)を使用してください:
// 変更前(aws-eks): instanceType(単数形、非推奨・削除済み)
// instanceType: ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.MEDIUM),
// 変更後(aws-eks-v2): instanceTypes(複数形)
cluster.addNodegroupCapacity('NodeGroup', {
instanceTypes: [
ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.MEDIUM),
ec2.InstanceType.of(ec2.InstanceClass.T3, ec2.InstanceSize.LARGE),
],
minSize: 1,
maxSize: 10,
});
L1 CloudFormationリソース定義の更新 (#37039, #37034)
最新のAWS CloudFormationリソース仕様に基づいてL1コンストラクトが更新されました。
主な更新内容:
- AWS Amplify: Platform、Stage、BuildComputeTypeプロパティにEnum値が追加
- Amazon Prometheus (APS): Scraper/Workspace のログ出力フォーマット(json, plain, w3c, parquet等)がサポート
- AWS AmplifyUIBuilder: SortPropertyのDirectionプロパティにASC/DESCが追加
バグ修正
minimatchのReDoS脆弱性を修正 (#37027)
minimatchパッケージがバージョン^10.2.1にアップグレードされ、ReDoS(Regular Expression Denial of Service)脆弱性(GHSA-3ppc-4f35-3m26)が解消されました。
この脆弱性は、特定のパターンの正規表現マッチングで悪意のある入力により処理が遅延する可能性があるものでした。CDKユーザーへの直接的なセキュリティリスクは限定的でしたが、依存関係の脆弱性スキャナーで検出される可能性がありました。
Alphaモジュール (2.240.0-alpha.0)
このリリースでは、Alphaモジュールに新機能や変更はありません。
まとめ
AWS CDK v2.240.0は、aws-eks-v2モジュールのStable昇格が最大のハイライトです。
主なポイント:
- aws-eks-v2がStableに: ネイティブL1リソースを使用した新しいEKSモジュールが正式リリース
- EKS Auto Modeのデフォルトサポート: フルマネージドのコンピュート管理が標準に
- シンプルなアーキテクチャ: カスタムリソースやネストスタックが不要に
- セキュリティ修正: minimatchのReDoS脆弱性が解消
移行について:
既存のaws-eksモジュールは引き続き利用可能ですが、新規プロジェクトではaws-eks-v2の使用を推奨します。移行時にはinstanceTypeからinstanceTypesへの変更が必要です。