概要
AWS CDK v2.175.1 は、CLI における重要なバグを修正したパッチリリースです。このリリースでは、入れ子になったステージ内にのみスタックが定義されている場合に「no stack found in the main cloud assembly」エラーが発生する問題が修正されました。
バグ修正
CLI: 入れ子になったステージ内のスタック検出の修正
関連PR: #32839
v2.175.0 で導入された変更により、トップレベルにスタックが存在せず、入れ子になった Stage 内にのみスタックが定義されているアプリケーションで問題が発生していました。この問題により、以下のようなエラーが発生していました:
no stack found in the main cloud assembly
影響を受けるケース
以下のような構成のアプリケーションが影響を受けていました:
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
// アプリケーション定義
const app = new cdk.App();
// トップレベルに直接スタックを定義せず、Stage 内にスタックを定義
class MyStage extends cdk.Stage {
constructor(scope: Construct, id: string, props?: cdk.StageProps) {
super(scope, id, props);
// Stage 内でスタックを定義
new cdk.Stack(this, 'MyStack', {
// スタック設定
});
}
}
// Stage をインスタンス化(トップレベルには Stack が存在しない)
new MyStage(app, 'Production', {
env: { account: '123456789012', region: 'us-east-1' }
});
このような構成は、マルチ環境デプロイメントやパイプラインで一般的に使用されるパターンですが、v2.175.0 では正しく動作しませんでした。
修正内容
このリリースでは、問題の原因となった変更を revert することで、入れ子になった Stage 内のスタックが正しく認識されるようになりました。以下のファイルの変更が取り消されました:
packages/aws-cdk/lib/cdk-toolkit.tspackages/aws-cdk/test/cdk-toolkit.test.tspackages/@aws-cdk-testing/cli-integ/tests/cli-integ-tests/cli.integtest.ts
影響範囲
この修正により、以下の CDK CLI コマンドが入れ子になった Stage を持つアプリケーションで再び正常に動作するようになります:
cdk deploycdk synthcdk diffcdk destroy
移行ガイド
v2.175.0 を使用していて、この問題に遭遇した場合は、v2.175.1 にアップグレードするだけで問題が解決します。コードの変更は必要ありません。
npm install aws-cdk@2.175.1
Alpha モジュール
Alpha モジュール (2.175.1-alpha.0) には変更はありません。
まとめ
AWS CDK v2.175.1 は、v2.175.0 で発生した CLI の重大なバグを修正する重要なパッチリリースです。入れ子になった Stage 内にスタックを定義する一般的なパターンを使用している場合は、このバージョンへのアップグレードを推奨します。
この問題は、マルチ環境デプロイメントやパイプラインを使用しているプロジェクトで特に影響が大きかったため、迅速に修正されました。v2.175.0 を使用している場合は、できるだけ早く v2.175.1 にアップグレードすることをお勧めします。