Back to Releases
v2.210.0 2025年8月6日

AWS CDK v2.210.0 リリース解説

ECS Blue/Greenデプロイメント機能の一時的な巻き戻しと、Glue Alphaモジュールでのメトリクスコントロール機能の追加

ecsglue

概要

AWS CDK v2.210.0 では、ECS のネイティブ Blue/Green デプロイメント機能が Python の関数契約の破壊により一時的に巻き戻されました。また、Alpha モジュールでは Glue ジョブのメトリクス収集を任意で無効化できる機能が追加され、コストの最適化が可能になっています。

巻き戻し (Reverts)

ECS: ネイティブ Blue/Green デプロイメントサポートの巻き戻し

概要

PR #35061 で追加された ECS L2 コンストラクトのネイティブ Blue/Green デプロイメント機能が、PR #35170 により巻き戻されました。

巻き戻しの理由

この変更により Python の関数契約が破壊され、顧客の CI/CD パイプラインが動作しなくなる問題が発生しました(Issue #35167)。

影響範囲

この巻き戻しにより、以下の機能が一時的に削除されました:

  • LoadBalancerAdvancedConfiguration プロパティ
  • DeploymentConfiguration の以下のプロパティ:
    • Strategy(デプロイメント戦略)
    • BakeTime(ベイクタイム)
    • LifecycleHooks(ライフサイクルフック)
  • ServiceConnectTestTrafficRules プロパティ

削除されたファイル:

  • lib/alternate-target-configuration.ts
  • lib/deployment-lifecycle-hook-target.ts
  • 関連するテストファイル

今後の対応

この機能は Python との互換性問題が解決され次第、将来のリリースで再導入される予定です。ECS のネイティブ Blue/Green デプロイメント機能(AWS公式ブログ)を使用したい場合は、今後のリリースをお待ちください。

影響を受けるユーザー

v2.209.0 またはそれ以前のバージョンで追加された Blue/Green デプロイメント機能を使用していたユーザーは、v2.210.0 へのアップグレード前にコードの調整が必要になる場合があります。

Alpha モジュール

Glue: コスト最適化のための任意メトリクスコントロール機能

概要

AWS Glue Alpha モジュールに、CloudWatch メトリクス収集を任意で無効化できる機能が追加されました(PR #35154)。これにより、CloudWatch のコストを削減できます。

背景

これまで AWS Glue の Spark ジョブと Ray ジョブでは、CloudWatch メトリクスが常に有効化されていました(--enable-metrics--enable-observability-metrics が自動的に設定)。詳細なメトリクス監視が不要な環境では、これがコスト増加の要因となっていました。

この機能により、以下のようなシナリオでコストを最適化できます:

  • 開発環境やテスト環境
  • 詳細な監視が不要なバッチ処理ジョブ
  • コストを重視する本番ワークロード

新しいプロパティ

SparkJobPropsRayJobProps インターフェースに以下のプロパティが追加されました:

export interface SparkJobProps extends JobProps {
  /**
   * Glue ジョブのプロファイリングメトリクスを有効化
   * @default true - 後方互換性のためデフォルトで有効
   */
  readonly enableMetrics?: boolean;

  /**
   * Glue ジョブの Observability メトリクスを有効化
   * @default true - 後方互換性のためデフォルトで有効
   */
  readonly enableObservabilityMetrics?: boolean;
}

使用例

デフォルト動作(後方互換性)
// メトリクスは自動的に有効化される(既存の動作と同じ)
const defaultJob = new glue.PySparkEtlJob(this, 'DefaultJob', {
  role: myRole,
  script: glue.Code.fromAsset('path/to/script.py'),
  // enableMetrics: true(デフォルト)
  // enableObservabilityMetrics: true(デフォルト)
});
コスト最適化:両方のメトリクスを無効化
// 開発環境やコスト削減が重要な環境向け
const costOptimizedJob = new glue.PySparkEtlJob(this, 'CostOptimizedJob', {
  role: myRole,
  script: glue.Code.fromAsset('path/to/script.py'),
  enableMetrics: false,                    // プロファイリングメトリクスを無効化
  enableObservabilityMetrics: false,       // Observability メトリクスを無効化
});
選択的なメトリクスコントロール
// Observability メトリクスのみを有効化
const selectiveJob = new glue.PySparkEtlJob(this, 'SelectiveJob', {
  role: myRole,
  script: glue.Code.fromAsset('path/to/script.py'),
  enableMetrics: false,                    // プロファイリングメトリクスを無効化
  enableObservabilityMetrics: true,        // Observability メトリクスは有効化
});
Ray ジョブでの使用例
// Ray ジョブでも同じプロパティが使用可能
const rayJob = new glue.RayJob(this, 'MyRayJob', {
  role: myRole,
  glueVersion: glue.GlueVersion.V4_0,
  script: glue.Code.fromAsset('path/to/ray-script.py'),
  numberOfWorkers: 5,
  workerType: glue.WorkerType.Z_2X,
  runtime: glue.Runtime.RAY_TWO_FOUR,
  enableMetrics: false,                    // メトリクスを無効化してコストを削減
  enableObservabilityMetrics: false,
});

対応するジョブタイプ

この機能は以下の全 7 種類のジョブタイプで利用可能です:

Spark ジョブ(6 種類):

  • PySparkEtlJob
  • PySparkStreamingJob
  • ScalaSparkEtlJob
  • ScalaSparkStreamingJob
  • FlexJob
  • その他の Spark ベースのジョブ

Ray ジョブ(1 種類):

  • RayJob

設計の特徴

  • 後方互換性: デフォルトで true のため、既存のコードは変更なしで動作します
  • きめ細かい制御: enableMetricsenableObservabilityMetrics を個別に制御可能
  • Nullish Coalescing 演算子: props.enableMetrics ?? true により、明示的な false 値にも対応

実装の詳細

内部的には、以下のように条件付きでメトリクス引数が追加されます:

protected nonExecutableCommonArguments(props: SparkJobProps): {[key: string]: string} {
  // メトリクス引数を条件付きで追加(デフォルトは有効)
  const profilingMetricsArgs = (props.enableMetrics ?? true)
    ? { '--enable-metrics': '' }
    : {};
  const observabilityMetricsArgs = (props.enableObservabilityMetrics ?? true)
    ? { '--enable-observability-metrics': 'true' }
    : {};

  return {
    ...continuousLoggingArgs,
    ...profilingMetricsArgs,
    ...observabilityMetricsArgs,
    ...sparkUIArgs,
    ...this.checkNoReservedArgs(props.defaultArguments),
  };
}

IAM 権限

この変更による新しい IAM 権限の追加はありません。既存の Glue ジョブ実行権限がそのまま使用されます。

テストカバレッジ

  • 8 個の新しいテストケースを追加(Spark ジョブ用 5 件、Ray ジョブ用 3 件)
  • 537 個の全テストが成功
  • 統合テストにより AWS への実際のデプロイメントを検証済み
  • テストカバレッジ: ステートメント 92.9%、ブランチ 85.71%

まとめ

AWS CDK v2.210.0 は、品質とコスト最適化の両面に焦点を当てたリリースです。

主な変更点:

  • ECS: ネイティブ Blue/Green デプロイメント機能が Python との互換性問題により一時的に巻き戻されました。この機能は問題解決後に再導入される予定です
  • Glue Alpha: メトリクス収集を任意で無効化できる機能が追加され、コストの最適化が可能になりました。後方互換性が維持されているため、既存のコードへの影響はありません

推奨事項:

  • ECS の Blue/Green デプロイメント機能を使用していた場合は、アップグレード前にコードの確認が必要です
  • Glue ジョブのコストを最適化したい場合は、enableMetricsenableObservabilityMetrics プロパティの活用を検討してください
  • Alpha モジュールの機能は実験的なものであり、将来的に変更される可能性があることに注意してください