AWS CDK CLIとCDKコンストラクトライブラリのバージョンが一致しなくなった
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 1fi
ただし、今後メジャーアップデートやセキュリティなどの問題により非推奨なバージョンが発生するとリリース日以外の内容も考慮する必要が出てくると思われるため、安全に倒すのであればcdk synth
を実行するようにした方がいいでしょう。