Amazon Web Services ブログ

AWS CDK は AWS CDK CLI と CDK コンストラクトライブラリを分離します

本記事は 2025 年 1 月 14 日に公開された AWS CDK is splitting Construct Library and CLI を翻訳したものです。翻訳は Solutions Architect の山崎 宏紀が担当しました。

AWS CDK は、クラウドインフラストラクチャをコードで定義し、AWS CloudFormation を通じてプロビジョニングするためのオープンソースのソフトウェア開発フレームワークです。AWS CDK は主に 2 つのコンポーネントで構成されています。AWS CDK CLI と、AWS アプリケーションをモデル化するためにプログラミング言語から使用する CDK コンストラクトライブラリです。CDK コンストラクトライブラリはアプリケーションのモデルをローカルのディレクトリに「合成」し、AWS CDK CLI はそのディレクトリのファイルを読み取って AWS にアプリケーションをデプロイします。

2025 年 2 月より、AWS CDK CLI と CDK コンストラクトライブラリは同時リリースではなくなります。代わりに、それぞれが独自のリリースサイクルを持つようになり、バージョン番号も異なるものとなります。AWS CDK で利用する API やユーザーエクスペリエンスへの影響はありません。

これは AWS CDK の動作方法や AWS CDK の使用方法を根本的に変更するものではありません。最新バージョンの AWS CDK CLI は、それ以前の過去にリリースされたすべてのバージョンの CDK コンストラクトライブラリをサポートし続けます。ユーザーは引き続きいつでも自由に AWS CDK CLI を最新バージョンにアップグレードすることができます。この変更による最大の違いは AWS CDK CLI と関連コンポーネントのソースコードが新しい GitHub リポジトリに移行されることです。新しいリポジトリは https://github.com/aws/aws-cdk-cli (訳註: 2025-02-03 時点ではアクセス不可) となり、移行完了後に一般公開される予定です。

新しいバージョニング体系での AWS CDK CLI の最初の新バージョンは 2.1000.0 としてリリースされ、次のバージョンは 2.1001.0 に続きます。CDK コンストラクトライブラリは現在のバージョニング体系を継続し、2.174.0,2.175.0,2.176.0 というように順次リリースされます。

変更の理由

AWS CDK CLI と CDK コンストラクトライブラリは元々別個のコンポーネントでした。これらは歴史的に同じリポジトリに配置されていましたが、これは私たちが迅速に反復開発を行うために役立ちました。AWS CDK が成熟するにつれて、異なるコンポーネントへの変更は異なるサイクルで進み、異なるテスト戦略が必要であることがわかりました。この変更により一方のサブプロジェクトのリリースサイクルを他方に影響を与えることなく変更できるようになり、プロジェクト全体により高い俊敏性をもたらすことができます。

AWS CDK CLI の基本的な互換性モデルは変わりません。AWS CDK CLI はそれと同時期またはそれ以前にリリースされたすべての CDK コンストラクトライブラリの出力を処理できます。これまでは CLI version >= Lib version が常に有効なバージョンの組合せであるというルールとして表現されていました。バージョンが同時にリリースされなくなるため、新しいルールは CLI release date >= Lib release date となります。バージョン番号だけでは一目でこの関係を把握することは難しくなりますが、CDK コンストラクトライブラリが必要とする最小限の AWS CDK CLI バージョンが cdk.out マニフェストに含まれます。エラーメッセージには必要なバージョンを表示し、各バージョンの互換性情報を GitHub に公開します。

バージョンの連続性の区切りを示すため、AWS CDK CLI のバージョン番号に大きな明確な区切りを設けます。2.174.0 の後、AWS CDK CLI のバージョンは 2.1000.0 にスキップし、その後 2.1001.0 に進みます。これによりメジャーバージョン番号を変更することなく、AWS CDK CLI と CDK コンストラクトライブラリのバージョニング体系の関連性が途切れていることが明確になることを期待しています。

CDK コンストラクトライブラリは、2.175.02.176.0 などのように、現在のバージョニング体系でリリースを継続します。

変更しない項目について

メジャーバージョン番号は変更しません: バージョンの連続性が途切れていることを示す目的で AWS CDK CLI 3.x をリリースすることはありません。その理由は以下の 2 つです:

  • ほとんどのお客様のプロジェクトには、"aws-cdk": "^2.174.0" のような依存関係の範囲が設定されています。メジャーバージョン番号を 3.x に変更すると、これらのプロジェクトは AWS CDK CLI の更新を自動的に取り込まなくなり、次のスキーマ変更時に AWS CDK CLI の互換性エラーが発生することになります。メジャーバージョン 2 のままであれば新しいリリースは指定された依存関係の範囲に引き続き一致し、自動的にインストールされます。
  • この変更は "CDKv3" リリースを意味するものではないため、そのように解釈される可能性を避けるために AWS CDK CLI のメジャーバージョンを 3 に変更しません。これは AWS CDK CLI のメジャーバージョン番号を決して上げないという約束ではありません。将来、変更する正当な理由がある場合は結果的に変更する可能性があります。その場合は影響を最小限に抑える方法で実施します。少なくとも将来の AWS CDK CLI v3 は非推奨でない CDK コンストラクトライブラリの 2.x バージョンとの互換性を維持します。

issue を報告する場所は変更されません: AWS CDK CLI のコードは別のリポジトリに移動し、プルリクエストは別のリポジトリに対して行う必要がありますが、AWS CDK に関する問題は引き続きメインの aws/aws-cdk リポジトリに報告することができます。AWS CDK フレームワーク全体に関する問題を、その問題がどのコンポーネントから発生したかに関係なく 1 つの場所で簡単に報告できるようにしたいと考えています。AWS CDK チームは、すべてのリポジトリにわたって issue を監視し、必要に応じて issue を別のリポジトリに移動します。これは、jsii のような他の AWS CDK コンポーネントで採用している運用手順と同じです。

互換性モデルは変更されません: 互換性モデルに変更はありません。AWS CDK CLI はそれ以前の過去ににリリースされた非推奨でないバージョンの CDK コンストラクトライブラリによって生成されたすべての cdk.out ディレクトリを常に読み取ることができます。互換性を確保するために、CDK コンストラクトライブラリのバージョンをアップグレードする頻度と同じかそれ以上の頻度で npm upgrade を使用して AWS CDK CLI バージョンをアップグレードすることをお勧めします。

互換性を確保するために使用できるいくつかの有用なヒントを紹介します。従うべき簡単なルールは CLI release date >= Lib release date であれば確実に動作するということです。より複雑ではありますが、やはりライブラリリリース前の最新の AWS CDK CLI リリースは確実に動作し、それ以降のバージョンも同様に動作します。cdk.out ディレクトリ内のファイル形式に変更がない場合、古いバージョンでも動作する可能性がありますが、その互換性は保証されません。

お客様への影響について

AWS CDK ユーザーの皆様へ: AWS CDK CLI と CDK コンストラクトライブラリのバージョンが異なることにお気づきになると思います。AWS CDK の日常的な使用経験に最も影響を与えるのは CDK コンストラクトライブラリのバージョンであるため、これを「AWS CDK のバージョン」として考えることをお勧めします。また、使用している CDK コンストラクトライブラリのバージョンをサポートする AWS CDK CLI バージョンを常に使用するために、AWS CDK CLI は最新バージョンに保つことをお勧めします。CDK コンストラクトライブラリと AWS CDK CLI の両方を単一の「AWS CDK バージョン」でインストールすることを前提としたスクリプトは書き直す必要があります。

# このスクリプトは今後正常に動作しません。aws-cdk と aws-cdk-lib は異なるバージョンを持つ場合があります。 
$ CDK_VERSION=2.714.0 
$ npm install aws-cdk-lib@$CDK_VERSION 
$ npm install aws-cdk@$CDK_VERSION 
# Do this instead (install the latest 2.x)
$ npm install aws-cdk@^2 
Bash

AWS CDK コントリビューターの方へ:AWS CDK CLI 関連の issue は引き続き aws-cdk リポジトリに報告してください。ただし、プルリクエストは新しいリポジトリに対して行う必要があります。AWS CDK CLI と CDK コンストラクトライブラリの両方に関わる変更は両方のリポジトリに対して送り、個別にマージする必要があります。コンストラクトライブラリの PR をマージする前に AWS CDK CLI の変更をリリースする必要があります。具体的なワークフローについては、新しい https://github.com/aws/aws-cdk-cli リポジトリに記載されます。

まとめ

この変更により AWS CDK をより速いペースで改善できるようになることを嬉しく思います。お客様側での準備やスクリプトの更新が必要になる可能性はありますが、ユーザーへの影響は最小限に抑えられると考えています。ご質問がある場合や、この変更に関する議論に参加したい場合は GitHub の該当 Issue をご覧いただくか、AWS Support または Slack を通じて直接お問い合わせください。