Back to Releases
AWS CDK 2025年10月14日

AWS CDK v2.220.0 リリース解説

AWS Batch でデフォルトインスタンスクラスのサポート、Kinesis でシャードレベルメトリクス、Lambda Function URL のデュアル認証対応、EKS クラスタの削除ポリシーサポートなど、多数の新機能とバグ修正が含まれます。

概要

AWS CDK v2.220.0 では、AWS Batch でデフォルトインスタンスクラスのサポート、Kinesis ストリームでのシャードレベルメトリクス、Lambda Function URL のデュアル認証対応、EKS クラスタの削除ポリシーサポートなど、多数の新機能が追加されました。また、L1 リソース定義の更新に伴う破壊的変更も含まれています。

破壊的変更

このリリースでは、L1 リソースの自動生成により、CloudFormation のリソーススキーマに合わせた以下の破壊的変更が含まれています:

  • aws-neptune: AWS::Neptune::EventSubscriptionSnsTopicArn プロパティが必須になりました
  • aws-neptune: AWS::Neptune::EventSubscriptionId 属性が削除されました
  • aws-servicecatalog: AWS::ServiceCatalog::PortfolioShareId 属性が削除されました
  • aws-lex: AWS::Lex::ResourcePolicyResourceArn プロパティが変更不可(immutable)になりました

これらの変更は CloudFormation の実際の状態をより正確に反映するためのものです。

新機能

AWS Batch: デフォルトインスタンスクラスのサポート

#35537

AWS Batch の EC2 マネージド型コンピュート環境で、デフォルトインスタンスクラスがサポートされました。これに伴い、useOptimalInstanceClasses プロパティは非推奨となりました。

AWS は 2025 年 11 月初旬に optimal の動作を変更する予定です。新しいデフォルトインスタンスクラスを使用することで、より柔軟なインスタンスタイプの選択が可能になります。

import * as batch from 'aws-cdk-lib/aws-batch';
import * as ec2 from 'aws-cdk-lib/aws-ec2';

const vpc = new ec2.Vpc(this, 'Vpc');

const computeEnvironment = new batch.ManagedEc2EcsComputeEnvironment(this, 'ComputeEnv', {
  vpc,
  // デフォルトインスタンスクラスを使用(推奨)
  // useOptimalInstanceClasses は非推奨になりました
});

Kinesis: シャードレベルメトリクス

#34963

Kinesis ストリームでシャードレベルのメトリクスを有効化できるようになりました。これにより、個々のシャードのパフォーマンスを詳細に監視できます。

import * as kinesis from 'aws-cdk-lib/aws-kinesis';

const stream = new kinesis.Stream(this, 'MyStream', {
  streamName: 'my-stream',
  // シャードレベルメトリクスを有効化
  shardLevelMetrics: [
    kinesis.ShardLevelMetrics.INCOMING_BYTES,      // 受信バイト数
    kinesis.ShardLevelMetrics.INCOMING_RECORDS,    // 受信レコード数
    kinesis.ShardLevelMetrics.OUTGOING_BYTES,      // 送信バイト数
    kinesis.ShardLevelMetrics.OUTGOING_RECORDS,    // 送信レコード数
    kinesis.ShardLevelMetrics.WRITE_PROVISIONED_THROUGHPUT_EXCEEDED,  // 書き込みスループット超過
    kinesis.ShardLevelMetrics.READ_PROVISIONED_THROUGHPUT_EXCEEDED,   // 読み取りスループット超過
    kinesis.ShardLevelMetrics.ITERATOR_AGE_MILLISECONDS,  // イテレーター経過時間
  ],
});

Lambda: Function URL のデュアル認証対応

#35725

Lambda Function URL でデュアル認証がサポートされました。これは Lambda 側の破壊的変更に対応するもので、Function URL 経由での呼び出しには lambda:InvokeFunctionlambda:InvokeFunctionUrl の両方の権限が必要になります。

CDK では、以下の変更により既存のコードが引き続き動作するようになっています:

import * as lambda from 'aws-cdk-lib/aws-lambda';

const fn = new lambda.Function(this, 'MyFunction', {
  runtime: lambda.Runtime.NODEJS_20_X,
  handler: 'index.handler',
  code: lambda.Code.fromAsset('lambda'),
});

// Function URL を作成(デュアル認証が自動的に適用されます)
const fnUrl = fn.addFunctionUrl({
  authType: lambda.FunctionUrlAuthType.NONE,
});

// grantInvokeUrl はデュアル認証を付与します
// lambda:InvokeFunctionUrl に加えて、lambda:InvokeFunction (条件付き) も付与されます
// 条件: lambda:InvokedViaFunctionUrl = true
// この権限は Function URL 経由の呼び出しのみを許可し、直接呼び出しは許可しません
fnUrl.grantInvokeUrl(someRole);

新しい条件キー lambda:InvokedViaFunctionUrl により、Function URL 経由の呼び出しのみを許可する細かい権限制御が可能になります。

Amplify: ビルドコンピュートタイプのサポート

#34796

Amplify Hosting でカスタマイズ可能なビルドインスタンスがサポートされました。

import * as amplify from 'aws-cdk-lib/aws-amplify';

const app = new amplify.App(this, 'MyApp', {
  sourceCodeProvider: new amplify.GitHubSourceCodeProvider({
    owner: 'my-org',
    repository: 'my-repo',
    oauthToken: cdk.SecretValue.secretsManager('github-token'),
  }),
  // ビルドコンピュートタイプを指定
  buildComputeType: amplify.BuildComputeType.LARGE,  // SMALL (デフォルト) または LARGE
});

CloudFront Origins: Lambda Function URL の IP アドレスタイプ

#35458

Lambda Function URL をオリジンとして使用する際に、IP アドレスタイプを設定できるようになりました。IPv4、IPv6、デュアルスタックから選択できます。

import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
import * as origins from 'aws-cdk-lib/aws-cloudfront-origins';
import * as lambda from 'aws-cdk-lib/aws-lambda';

const fn = new lambda.Function(this, 'MyFunction', {
  runtime: lambda.Runtime.NODEJS_20_X,
  handler: 'index.handler',
  code: lambda.Code.fromAsset('lambda'),
});

const fnUrl = fn.addFunctionUrl({
  authType: lambda.FunctionUrlAuthType.NONE,
});

const distribution = new cloudfront.Distribution(this, 'Distribution', {
  defaultBehavior: {
    origin: new origins.FunctionUrlOrigin(fnUrl, {
      // IP アドレスタイプを指定
      ipAddressType: origins.OriginIpAddressType.DUALSTACK,  // IPV4、IPV6、DUALSTACK から選択
      // デフォルト: IPV4
    }),
  },
});

EC2: Bedrock AgentCore の VPC エンドポイント

#35667

Amazon Bedrock AgentCore の VPC エンドポイントが追加されました(2025 年 9 月 25 日に発表)。

import * as ec2 from 'aws-cdk-lib/aws-ec2';

const vpc = new ec2.Vpc(this, 'Vpc');

// Bedrock AgentCore VPC エンドポイント
new ec2.InterfaceVpcEndpoint(this, 'BedrockAgentCore', {
  vpc,
  service: ec2.InterfaceVpcEndpointAwsService.BEDROCK_AGENTCORE,
});

// Bedrock AgentCore Gateway VPC エンドポイント
new ec2.InterfaceVpcEndpoint(this, 'BedrockAgentCoreGateway', {
  vpc,
  service: ec2.InterfaceVpcEndpointAwsService.BEDROCK_AGENTCORE_GATEWAY,
});

EC2: Client VPN の自動再接続設定

#35538

Client VPN エンドポイントで、セッションタイムアウト時の自動再接続を制御できるようになりました。

import * as ec2 from 'aws-cdk-lib/aws-ec2';

const endpoint = new ec2.ClientVpnEndpoint(this, 'Endpoint', {
  vpc,
  serverCertificateArn: 'arn:aws:acm:...',
  clientCidrBlock: '10.0.0.0/16',
  // セッションタイムアウト時に自動再接続するか
  disconnectOnSessionTimeout: false,  // false: 自動再接続する(デフォルト)、true: 切断する
});

EKS: クラスタの削除ポリシーサポート

#35560

EKS クラスタに削除ポリシーを設定できるようになりました。これにより、スタック削除時のクラスタと関連リソースの動作を制御できます。

import * as eks from 'aws-cdk-lib/aws-eks';
import * as cdk from 'aws-cdk-lib';

const cluster = new eks.Cluster(this, 'Cluster', {
  version: eks.KubernetesVersion.V1_30,
  // 削除ポリシーを設定
  removalPolicy: cdk.RemovalPolicy.RETAIN,  // スタック削除時にクラスタを保持
  // removalPolicy: cdk.RemovalPolicy.DESTROY,  // スタック削除時にクラスタも削除
});

この削除ポリシーは、EKS クラスタ本体、IAM ロール、ノードグループ、セキュリティグループ、VPC リソース、カスタムリソースなど、クラスタによって作成されるすべての CloudFormation リソースに適用されます。

CloudWatch Logs: 変換済みログのメトリクスフィルタ

#35359

メトリクスフィルタで変換済みログに対してフィルタを適用できるようになりました。

import * as logs from 'aws-cdk-lib/aws-logs';

const logGroup = new logs.LogGroup(this, 'LogGroup');

const metricFilter = new logs.MetricFilter(this, 'MetricFilter', {
  logGroup,
  filterPattern: logs.FilterPattern.literal('[...]'),
  metricNamespace: 'MyApp',
  metricName: 'ErrorCount',
  // 変換済みログに対してメトリクスフィルタを適用
  applyOnTransformedLogs: true,  // デフォルト: false
});

OpenSearch: OpenSearch 3.1 エンジンバージョン

#35477

OpenSearch 3.1 エンジンバージョンがサポートされました。

import * as opensearch from 'aws-cdk-lib/aws-opensearchservice';

const domain = new opensearch.Domain(this, 'Domain', {
  version: opensearch.EngineVersion.OPENSEARCH_3_1,  // OpenSearch 3.1
  capacity: {
    dataNodes: 2,
    dataNodeInstanceType: 'r6g.large.search',
  },
});

Route53: Private Hosted Zone の属性からのインポート

#35552

PrivateHostedZonefromPrivateHostedZoneAttributes メソッドが追加されました。これは PublicHostedZone と同様の機能です。

import * as route53 from 'aws-cdk-lib/aws-route53';

// Private Hosted Zone を属性からインポート
const hostedZone = route53.PrivateHostedZone.fromPrivateHostedZoneAttributes(
  this,
  'HostedZone',
  {
    hostedZoneId: 'Z1234567890ABC',
    zoneName: 'internal.example.com',
  },
);

// zoneName プロパティを参照可能
console.log(hostedZone.zoneName);

Synthetics: Puppeteer 11 以降でのルートレベルスクリプト

#35426

Synthetics Canary で、Puppeteer 11.0 以降のランタイムを使用する場合、ルートディレクトリにスクリプトファイルを配置できるようになりました。

従来の構造(引き続きサポート):

Canary/
  nodejs/
    node_modules/
      index.js

新しい構造(Puppeteer 11.0 以降):

Canary/
  index.js
import * as synthetics from 'aws-cdk-lib/aws-synthetics';

const canary = new synthetics.Canary(this, 'Canary', {
  runtime: synthetics.Runtime.SYNTHETICS_NODEJS_PUPPETEER_11_0,
  test: synthetics.Test.custom({
    // index.js をルートディレクトリに配置可能
    handler: 'index.handler',
    code: synthetics.Code.fromAsset('canary'),
  }),
  schedule: synthetics.Schedule.rate(cdk.Duration.minutes(5)),
});

バグ修正

CloudWatch: AnomalyDetectionAlarm のメトリクス期間

#35319

AnomalyDetectionAlarm でメトリクスの期間が正しく反映されない問題が修正されました。

ECS: マネージドインスタンスのタスク定義検証

#35684

ECS マネージドインスタンス向けのタスク定義の検証が更新されました。

Lambda (Node.js): Bun を 1.2.23 にアップデート

#35702

ARM64 サポートのため、aws-lambda-nodejs で使用される Bun が 1.2.23 にアップデートされました。

S3: BucketPolicy.fromCfnBucketPolicy の合成エラー

#35633

BucketPolicy.fromCfnBucketPolicy() で発生していた合成エラーが修正されました。

S3 Tables: 読み取りアクセスロールの権限

#35420

S3 Tables のテーブルバケット読み取りアクセスロールで、s3tables:ListNamespaces の権限が誤っていた問題が修正されました。

Alpha モジュール

Amplify (Alpha): 空の customResponseHeaders 配列の処理

#35700

@aws-cdk/aws-amplify-alpha モジュールで、空の customResponseHeaders 配列を正しく処理できるようになりました。

まとめ

AWS CDK v2.220.0 は、AWS Batch のデフォルトインスタンスクラス、Kinesis のシャードレベルメトリクス、Lambda Function URL のデュアル認証など、多数の新機能を提供します。特に、EKS クラスタの削除ポリシーサポートは、本番環境での運用において重要な機能です。

L1 リソースの破壊的変更については、Neptune、ServiceCatalog、Lex を使用している場合は、アップグレード前に影響を確認することをお勧めします。

詳細については、リリースノートをご確認ください。