AWS CDK CLIとCDKコンストラクトライブラリのバージョンが一致しなくなった
aws-cdkとaws-cdk-libはv2.174.0以降バージョンが一致しなくなったことについて。また、有効な組み合わせの判定が困難になったため簡易なリリース日による判定について。
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-cdk
とaws-cdk-lib
は、バージョンをある程度合わせて利用しないとエラーが出ていました。
具体的には、aws-cdk
のバージョンがaws-cdk-lib
のバージョン以上である必要がありました。
この形式では、見れば簡単に判定できるため、あまり問題になることはなかったように思います。
新しいCLIと本体のリリース日による判定
v2.174.0以降は、aws-cdk
とaws-cdk-lib
のリリース日基準で合わせる必要があります。
具体的には、aws-cdk
のリリース日がaws-cdk-lib
のリリース日と同じか、より新しい必要があります。
新しい形式では、従来の形式と異なり見るだけでは判定が困難です。
代わりに、GitHubに互換性情報を掲載することに加えて、cdk.out
に必要最小限のCLIバージョンを出力すると記載されていますが確認しやすいとは言えません。
簡単にリリース日を比較する
npm
などでは次のようなコマンドで、パッケージのリリース日を取得できます。
npm view aws-cdk time.created
これを利用すると、次のようにリリース日を比較するスクリプトを作成できます。
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
を実行するようにした方がいいでしょう。