AWS CDK をアップデートする | Cloud9での注意点

AWS CDKのバージョンアップ方法を記します。
また、Cloud9でCDKをバージョンアップする際の注意点についても記述します。


はじめに

おはよう。@bioerrorlogです。

CDKは非常に活発に開発されています。

CDKのリリースを見るに、だいたい一週間ぐらいの間隔で新バージョンがリリースされているようです(下図)。

CDK バージョン リリース日
v1.35.0 2020-04-23
v1.34.0 2020-04-21
v1.33.0 2020-04-17
v1.32.0 2020-04-10
v1.31.0 2020-03-24
v1.30.0 2020-03-18


CDKをアップデートするとき、特にCloud9で作業する場合に、少し躓くポイントがありました。

今回は、それらCDKアップデート方法をメモします。


作業環境

Ubuntu上で動作確認を行いました。

$ lsb_release -d
Description:    Ubuntu 18.04.4 LTS


CDK をアップデートする

一般的なCDKアップデート方法

npm install -g aws-cdkとしてしてインストールされた一般的なケース*1では、CDKのアップデート方法は単純です。

普通にnpmパッケージをアップデートするように、npm updateコマンドでCDKパッケージaws-cdkがアップデートできます。

sudo npm update -g aws-cdk


CDKバージョンを確認すると、現時点での最新バージョン(v1.35.0)にアップデートされていることが確認できます。

$ cdk --version
1.32.2 (build e19e206)

$ sudo npm update -g aws-cdk

$ cdk --version
1.35.0 (build e0810c8)

Cloud9でのCDKアップデート方法

Cloud9の場合、少し注意が必要です。
結論から言うと、CDKパッケージとしてaws-cdkではなくcdkを指定することでCDKのアップデートができます。

npm update -g cdk


どういうことかというと、Cloud9でプリインストールされているのはaws-cdkパッケージ*2ではなくcdkパッケージ*3である、ということのようです。


普通にnpm install -g aws-cdkでCDKをインストールした場合、次のようにaws-cdkパッケージはあってもcdkパッケージはありません。

$ npm ls -g aws-cdk
/home/ubuntu/.nvm/versions/node/v10.20.1/lib
└── aws-cdk@1.35.0 

$ npm ls -g cdk
/home/ubuntu/.nvm/versions/node/v10.20.1/lib
└── (empty)


一方、Cloud9でaws-cdkパッケージとcdkパッケージを調べると、次のようになります。

$ npm ls -g cdk
/home/ubuntu/.nvm/versions/node/v10.20.1/lib
└── cdk@1.35.0 

$ npm ls -g aws-cdk  
/home/ubuntu/.nvm/versions/node/v10.20.1/lib
└─┬ cdk@1.35.0
  └── aws-cdk@1.35.0 


つまり、Cloud9でプリインストールされているのはcdkパッケージであり、aws-cdkはその一部に過ぎない、ということのようです。

よって、
npm update -g aws-cdkは上手くいかず、
npm update -g cdkなら上手くいく、という訳です。

おわりに

今回は、CDKのアップデート方法を記しました。

Cloud9では何故かアップデートできない、というところが始まりでしたが、aws-cdkではなくcdkパッケージがインストールされていた、というのはなかなか面白い不思議ポイントでした。

なぜcdkパッケージの方がプリインストールされているのか、aws-cdkパッケージとcdkパッケージの違いは何なのか、など色々と気になるところがあります。

折を見て調べていきたいです。

[関連記事]

www.bioerrorlog.work

www.bioerrorlog.work

参考

Releases · aws/aws-cdk · GitHub

Troubleshooting common AWS CDK issues - AWS Cloud Development Kit (AWS CDK)

*1:ドキュメントでは、このインストール方法が推奨されています。

*2:https://www.npmjs.com/package/aws-cdk

*3:https://www.npmjs.com/package/cdk