概要
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)。
影響範囲
この巻き戻しにより、以下の機能が一時的に削除されました:
LoadBalancerのAdvancedConfigurationプロパティDeploymentConfigurationの以下のプロパティ:Strategy(デプロイメント戦略)BakeTime(ベイクタイム)LifecycleHooks(ライフサイクルフック)
ServiceConnectのTestTrafficRulesプロパティ
削除されたファイル:
lib/alternate-target-configuration.tslib/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 が自動的に設定)。詳細なメトリクス監視が不要な環境では、これがコスト増加の要因となっていました。
この機能により、以下のようなシナリオでコストを最適化できます:
- 開発環境やテスト環境
- 詳細な監視が不要なバッチ処理ジョブ
- コストを重視する本番ワークロード
新しいプロパティ
SparkJobProps と RayJobProps インターフェースに以下のプロパティが追加されました:
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 種類):
PySparkEtlJobPySparkStreamingJobScalaSparkEtlJobScalaSparkStreamingJobFlexJob- その他の Spark ベースのジョブ
Ray ジョブ(1 種類):
RayJob
設計の特徴
- 後方互換性: デフォルトで
trueのため、既存のコードは変更なしで動作します - きめ細かい制御:
enableMetricsとenableObservabilityMetricsを個別に制御可能 - 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 ジョブのコストを最適化したい場合は、
enableMetricsとenableObservabilityMetricsプロパティの活用を検討してください - Alpha モジュールの機能は実験的なものであり、将来的に変更される可能性があることに注意してください