Back to Releases
v2.204.0 2025年7月4日

AWS CDK v2.204.0 リリース解説

API Gateway V2でステージ変数がサポートされ、CloudWatch Metricsにidとvisibleプロパティが追加されました。lambda-python-alphaではuvによる依存関係管理が利用可能になりました。

apigatewayv2cloudwatchlambdaecrregion-info

概要

AWS CDK v2.204.0では、API Gateway V2でステージ変数がサポートされ、HTTP APIとWebSocket APIで環境ごとの設定を柔軟に管理できるようになりました。CloudWatch Metricsにはidvisibleプロパティが追加され、メトリクスの識別や表示制御がより簡単になりました。また、lambda-python-alphaモジュールでは高速なパッケージマネージャーuvのサポートが追加されています。

新機能

API Gateway V2: ステージ変数のサポート

HTTP APIとWebSocket APIで**ステージ変数(Stage Variables)**がサポートされました。ステージ変数を使用することで、環境ごとに異なる設定値を管理でき、同じAPIを異なる環境(開発、ステージング、本番など)で柔軟に使用できます。

主な機能

  • HttpStageWebSocketStagestageVariablesプロパティを追加
  • ステージごとに異なる設定値(エンドポイントURL、バージョン番号など)を定義可能
  • Lambda統合やHTTP統合でステージ変数を参照可能

HTTP APIでの使用例

import * as apigatewayv2 from 'aws-cdk-lib/aws-apigatewayv2';
import * as integrations from 'aws-cdk-lib/aws-apigatewayv2-integrations';

const httpApi = new apigatewayv2.HttpApi(this, 'HttpApi');

// ステージ変数を使用してステージを定義
const prodStage = new apigatewayv2.HttpStage(this, 'ProdStage', {
  httpApi,
  stageName: 'prod',
  // ステージ変数の定義
  stageVariables: {
    environment: 'production',           // 環境識別子
    backendUrl: 'https://api.prod.example.com',  // バックエンドURL
    version: 'v1',                       // APIバージョン
    maxRetries: '3',                     // 最大リトライ回数
  },
});

const devStage = new apigatewayv2.HttpStage(this, 'DevStage', {
  httpApi,
  stageName: 'dev',
  stageVariables: {
    environment: 'development',
    backendUrl: 'https://api.dev.example.com',
    version: 'v1-beta',
    maxRetries: '1',
  },
});

WebSocket APIでの使用例

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

const webSocketApi = new apigatewayv2.WebSocketApi(this, 'WebSocketApi', {
  // WebSocket API設定
});

// WebSocket APIのステージ変数
const wsStage = new apigatewayv2.WebSocketStage(this, 'WsStage', {
  webSocketApi,
  stageName: 'prod',
  // WebSocket接続設定をステージ変数で管理
  stageVariables: {
    connectionTimeout: '300',            // 接続タイムアウト(秒)
    messageRetention: '7200',            // メッセージ保持時間(秒)
    lambdaAlias: 'prod',                 // Lambda関数のエイリアス
  },
});

関連Issue: #11818 関連PR: #34548


CloudWatch: Metricにidとvisibleプロパティを追加

CloudWatch Metricsに**idプロパティとvisible**プロパティが追加されました。これにより、ダッシュボードやアラームでメトリクスをより柔軟に制御できるようになります。

主な機能

  • id: メトリクスに一意の識別子を割り当て(デフォルト: 自動生成)
  • visible: メトリクスの表示/非表示を制御(デフォルト: true)
  • Math Expression(計算式メトリクス)で非表示メトリクスを参照可能

使用例: 計算式で中間メトリクスを非表示にする

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

// メトリクス1: 表示(visible: true、デフォルト)
const metric1 = new cloudwatch.Metric({
  namespace: 'MyApp',
  metricName: 'Requests',
  id: 'm1',                              // メトリクスID
  statistic: 'Sum',
  period: Duration.minutes(5),
});

// メトリクス2: 非表示(計算用)
const metric2 = new cloudwatch.Metric({
  namespace: 'MyApp',
  metricName: 'Errors',
  id: 'm2',                              // メトリクスID
  statistic: 'Sum',
  period: Duration.minutes(5),
  visible: false,                        // ダッシュボードで非表示
});

// Math Expressionで非表示メトリクスを使用
const errorRate = new cloudwatch.MathExpression({
  expression: 'm2 / m1 * 100',           // エラー率を計算
  usingMetrics: {
    m1: metric1,
    m2: metric2,                         // 非表示だが計算には使用
  },
  label: 'Error Rate (%)',
});

// ダッシュボードに追加(errorRateのみ表示)
const dashboard = new cloudwatch.Dashboard(this, 'Dashboard', {
  dashboardName: 'MyAppDashboard',
});

dashboard.addWidgets(
  new cloudwatch.GraphWidget({
    title: 'Error Rate',
    left: [errorRate],                   // 計算結果のみ表示
    // metric2は非表示だが計算に使用される
  })
);

使用例: 複数メトリクスの識別

// 複数メトリクスに明示的なIDを割り当て
const cpuMetric = new cloudwatch.Metric({
  namespace: 'AWS/EC2',
  metricName: 'CPUUtilization',
  id: 'cpu_metric',                      // 明示的なID
  dimensionsMap: {
    InstanceId: 'i-1234567890abcdef0',
  },
});

const memoryMetric = new cloudwatch.Metric({
  namespace: 'CWAgent',
  metricName: 'mem_used_percent',
  id: 'memory_metric',                   // 明示的なID
  dimensionsMap: {
    InstanceId: 'i-1234567890abcdef0',
  },
  visible: true,                         // 表示(デフォルト)
});

関連Issue: #19876 関連PR: #34870


Feature Flagsの Cloud Assembly への報告

Feature Flags(機能フラグ)の情報がCloud Assemblyに含まれるようになりました。これにより、デプロイ時にどのフラグが有効化されているかをより明確に追跡できます。

関連Issue: #34798 関連PR: #34884


Region Info: eusc-de リージョンのサポート追加

新しいAWSリージョンeusc-de(欧州ソブリンクラウド - ドイツ)のサポートが追加されました。

関連PR: #34860


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

lambda-python-alpha: uvによる依存関係管理のサポート

Python Lambda関数の依存関係管理でuv(高速Pythonパッケージマネージャー)がサポートされました。uvはRustで実装されており、pipやpoetryよりも大幅に高速な依存関係のインストールが可能です。

主な機能

  • uv.lockファイルの自動検出: プロジェクトにuv.lockが存在する場合、uvを使用して依存関係をインストール
  • uv pip syncによる高速インストール: 従来のpip installよりも高速に依存関係を解決
  • 既存のpipenv、poetry、requirements.txtと共存可能

使用例

import * as lambda from 'aws-cdk-lib/aws-lambda';
import { PythonFunction } from '@aws-cdk/aws-lambda-python-alpha';

// uv.lockを使用したPython Lambda関数
const uvFunction = new PythonFunction(this, 'UvFunction', {
  entry: 'lambda-handler-uv',            // uv.lockを含むディレクトリ
  runtime: lambda.Runtime.PYTHON_3_12,
  index: 'index.py',
  handler: 'handler',
  // uv.lockが存在する場合、自動的にuvを使用
});

プロジェクト構成例

lambda-handler-uv/
├── index.py              # Lambda関数のコード
├── pyproject.toml        # プロジェクト設定
└── uv.lock               # uvによる依存関係ロックファイル

pyproject.toml の例

[project]
name = "my-lambda-function"
version = "0.1.0"
requires-python = ">=3.12"
dependencies = [
    "requests>=2.31.0",
    "boto3>=1.34.0",
]

依存関係の優先順位

PythonFunctionは以下の順序で依存関係管理ツールを検出します:

  1. Pipenv: PipfilePipfile.lock
  2. Poetry: pyproject.tomlpoetry.lock
  3. uv: pyproject.tomluv.lock(新規追加)
  4. pip: requirements.txt

関連Issue: #31238, #32413 関連PR: #33880


バグ修正

ECR Assets: .dockerignoreのネストされた除外処理の修正

.dockerignoreファイルでネストされた除外パターンが正しく処理されない問題が修正されました。これにより、Dockerイメージビルド時のファイル除外がより正確に動作します。

影響範囲: ECR Assetsを使用したDockerイメージのビルド

関連Issue: #13636 関連PR: #34810


CLI 2.1017.0/2.1018.0との互換性問題の修正

CLI バージョン 2.1017.0 および 2.1018.0 で「Invalid Assembly Manifest」エラーが発生する問題が修正されました。

影響範囲: CDK CLI v2.1017.0-2.1018.0を使用している場合

関連Issue: #34798 関連PR: #34880


まとめ

AWS CDK v2.204.0は、API Gateway V2とCloudWatchの機能強化により、より柔軟なアプリケーション設定とメトリクス管理を実現しています。特に:

  • API Gateway V2のステージ変数により、環境ごとの設定管理が容易に
  • CloudWatch Metricsのidとvisibleプロパティにより、複雑な計算式やダッシュボード設計が簡素化
  • lambda-python-alphaのuvサポートにより、Python Lambda関数の依存関係インストールが高速化

また、重要なバグ修正により、Dockerイメージビルドとツールチェーンの安定性が向上しています。

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