Back to Releases
AWS CDK 2026年4月3日

AWS CDK v2.248.0 リリース解説

EKSクラスターでisolatedサブネットを使用する際のバリデーションが、エラーから警告にダウングレードされました。

概要

AWS CDK v2.248.0は、EKSクラスターのPRIVATE_ISOLATEDサブネット使用時のバリデーション挙動を修正したパッチリリースです。v2.246.0で追加された厳格なバリデーションが、AWSが公式にサポートする完全プライベートEKSクラスターのパターンをブロックしていた問題を解消します。

バグ修正

EKS: isolatedサブネットのバリデーションをエラーから警告にダウングレード (#37500)

v2.246.0で導入された、kubectl用にPRIVATE_ISOLATEDサブネットを使用した場合にValidationError(ハードエラー)をスローする挙動が修正されました。このエラーは、AWSが公式ドキュメントで明示的にサポートしている構成をブロックしてしまっていました。

問題の背景:

AWSでは、適切なVPCエンドポイント(STS、EKS、ECR、S3、CloudWatch Logsなど)を構成することで、isolatedサブネット上で完全プライベートなEKSクラスターを実行できます。しかし、v2.246.0以降ではこの正当な構成がCDKシンセス時にエラーとなり、合成できませんでした。

修正内容:

  • aws-eksおよびaws-eks-v2の両クラスター実装で、ValidationErrorAnnotations.addWarningV2に変更
  • 警告ID: @aws-cdk/aws-eks:isolatedSubnetsForKubectlPrivateSubnets
  • PRIVATE_WITH_EGRESSサブネットおよびisolatedサブネットを持つインポート済みVPCの既存テストは従来通り動作

修正後の使い方: isolatedサブネット上の完全プライベートEKSクラスター

import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as eks from 'aws-cdk-lib/aws-eks';
import { KubectlV32Layer } from '@aws-cdk/lambda-layer-kubectl-v32';

// isolatedサブネットのみを持つVPCを作成
const vpc = new ec2.Vpc(this, 'PrivateVpc', {
  maxAzs: 3,
  subnetConfiguration: [
    {
      name: 'isolated',
      subnetType: ec2.SubnetType.PRIVATE_ISOLATED, // NAT Gatewayなしの完全プライベート
      cidrMask: 24,
    },
  ],
});

// プライベートクラスターに必要なVPCエンドポイントを追加
vpc.addInterfaceEndpoint('StsEndpoint', {
  service: ec2.InterfaceVpcEndpointAwsService.STS,
});
vpc.addInterfaceEndpoint('EksEndpoint', {
  service: ec2.InterfaceVpcEndpointAwsService.EKS,
});
vpc.addInterfaceEndpoint('EcrEndpoint', {
  service: ec2.InterfaceVpcEndpointAwsService.ECR,
});
vpc.addInterfaceEndpoint('EcrDockerEndpoint', {
  service: ec2.InterfaceVpcEndpointAwsService.ECR_DOCKER,
});
vpc.addInterfaceEndpoint('CloudWatchLogsEndpoint', {
  service: ec2.InterfaceVpcEndpointAwsService.CLOUDWATCH_LOGS,
});
vpc.addGatewayEndpoint('S3Endpoint', {
  service: ec2.GatewayVpcEndpointAwsService.S3,
});

// PRIVATE_ISOLATED サブネット上にEKSクラスターを作成
// v2.248.0以降はエラーではなく警告となり、合成が可能
const cluster = new eks.Cluster(this, 'PrivateCluster', {
  version: eks.KubernetesVersion.V1_32,
  kubectlLayer: new KubectlV32Layer(this, 'KubectlLayer'),
  vpc,
  vpcSubnets: [
    { subnetType: ec2.SubnetType.PRIVATE_ISOLATED }, // isolatedサブネットを指定可能に
  ],
  endpointAccess: eks.EndpointAccess.PRIVATE, // APIエンドポイントもプライベートに
});

影響範囲:

  • v2.246.0または2.247.0からアップグレードする場合、これまでValidationErrorで失敗していたスタックが合成できるようになります
  • 警告は引き続き表示されるため、VPCエンドポイントの構成不備に気付くきっかけにはなります
  • 警告を抑制したい場合は、以下のように明示的に無効化できます
import { Annotations } from 'aws-cdk-lib';

// 警告を抑制(必要なVPCエンドポイントが揃っていることを確認した上で)
Annotations.of(cluster).acknowledgeWarning(
  '@aws-cdk/aws-eks:isolatedSubnetsForKubectlPrivateSubnets',
  'VPC endpoints for STS, EKS, ECR, S3, and CloudWatch Logs are configured',
);

Alphaモジュール (2.248.0-alpha.0)

このリリースではAlphaモジュールに特筆すべき変更はありません。

まとめ

AWS CDK v2.248.0は、EKS isolatedサブネット利用時のバリデーション修正に焦点を当てたパッチリリースです。

主なポイント:

  • EKSバリデーション緩和: PRIVATE_ISOLATEDサブネットでのkubectl使用がハードエラーから警告に変更され、完全プライベートクラスター構成が再び利用可能に
  • AWSサポートパターンの尊重: AWS公式ドキュメントで記載されている構成がCDKでも問題なくデプロイできるようになりました

アップグレード推奨:

  • v2.246.0または2.247.0でPRIVATE_ISOLATEDサブネットを使ったEKSクラスターがエラーで合成できなかった場合、本リリースへのアップグレードにより解消します