510 文字
3 分

AWS CDK CLIとCDKコンストラクトライブラリのバージョンが一致しなくなった

2025-03-25

AWS CDK CLI と CDK コンストラクトライブラリの分離#

AWS CDK CLI(aws-cdk)と CDK コンストラクトライブラリ(aws-cdk-lib)が同時リリースではなくなったことで、v2.174.0 以降バージョンが一致しなくなりました。

https://aws.amazon.com/jp/blogs/news/aws-cdk-is-splitting-construct-library-and-cli/

また、aws-cdkは v2.174.0 の次のバージョンが v2.1000.0 にスキップされています。

従来の CLI と本体のバージョンによる判定#

aws-cdkaws-cdk-libは、バージョンをある程度合わせて利用しないとエラーが出ていました。

具体的には、aws-cdkのバージョンがaws-cdk-libのバージョン以上である必要がありました。

この形式では、見れば簡単に判定できるため、あまり問題になることはなかったように思います。

新しい CLI と本体のリリース日による判定#

v2.174.0 以降は、aws-cdkaws-cdk-libのリリース日基準で合わせる必要があります。

具体的には、aws-cdkのリリース日がaws-cdk-libのリリース日と同じか、より新しい必要があります。

新しい形式では、従来の形式と異なり見るだけでは判定が困難です。

代わりに、GitHub に互換性情報を掲載することに加えて、cdk.outに必要最小限の CLI バージョンを出力すると記載されていますが確認しやすいとは言えません。

簡単にリリース日を比較する#

npmなどでは次のようなコマンドで、パッケージのリリース日を取得できます。

Terminal window
npm view aws-cdk time.created

これを利用すると、次のようにリリース日を比較するスクリプトを作成できます。

Terminal window
aws_cdk_release=$(npm view aws-cdk time.created)
aws_cdk_lib_release=$(npm view aws-cdk-lib time.created)
if [[ "$aws_cdk_release" < "$aws_cdk_lib_release" ]]; then
echo "Error: aws-cdk release date ($aws_cdk_release) is older than aws-cdk-lib release date ($aws_cdk_lib_release)" >&2
exit 1
fi

ただし、今後メジャーアップデートやセキュリティなどの問題により非推奨なバージョンが発生するとリリース日以外の内容も考慮する必要が出てくると思われるため、安全に倒すのであればcdk synthを実行するようにした方がいいでしょう。

AWS CDK CLIとCDKコンストラクトライブラリのバージョンが一致しなくなった
https://blog.ohirunewani.com/posts/aws-cdk-cli-construct-library-split/
作者
hrdtbs
公開日
2025-03-25
ライセンス
CC BY-NC-SA 4.0