はじめに
普段はインフラエンジニアとして仕事を実施しているのですが、
CDKをバージョンアップするにあたって色々と手間取ってしまったため、忘れないための備忘録になります。
また、NodeJSのプロジェクトを長期管理したこともなかったので、プロジェクト管理についてもあまりよくわかってなかったところのため、これを機に備忘録として残します。
エラー内容
結論からいうと、CDK コマンドを実行した際古いプロジェクトだった故もあり、AMAZON_LINUX_2023がサポートされていない旨が出力されました。
(CDK始めたてであり、AmazonLinux2023も出たばっかりに作ったプロジェクトだった)
$ cdk synth
/path/to/sample_project/node_modules/ts-node/src/index.ts:859
return new TSError(diagnosticText, diagnosticCodes, diagnostics);
^
TSError: ⨯ Unable to compile TypeScript:
lib/simple_ec2_webapp-stack.ts:53:92 - error TS2551: Property 'AMAZON_LINUX_2023' does not exist on type 'typeof AmazonLinuxGeneration'. Did you mean 'AMAZON_LINUX_2022'?
53 machineImage: new ec2.AmazonLinuxImage({ generation: ec2.AmazonLinuxGeneration.AMAZON_LINUX_2023 }),
~~~~~~~~~~~~~~~~~
node_modules/aws-cdk-lib/aws-ec2/lib/machine-image.d.ts:301:5
301 AMAZON_LINUX_2022 = "al2022"
~~~~~~~~~~~~~~~~~
'AMAZON_LINUX_2022' is declared here.
エラーがあったmachine-image.d.tsコードを見てみるとAmazonLinux2023がサポートされていない..
/**
* What generation of Amazon Linux to use
*/
export declare enum AmazonLinuxGeneration {
/**
* Amazon Linux
*/
AMAZON_LINUX = "amzn",
/**
* Amazon Linux 2
*/
AMAZON_LINUX_2 = "amzn2",
/**
* Amazon Linux 2022
*/
AMAZON_LINUX_2022 = "al2022"
}
CDKの最新Verである2.114の公式ドキュメントを見てみると、列挙型 AmazonLinuxGeneration で定義可能な値でちゃんとAMAZON_LINUX_2023
もサポートされていることが確認できます。
https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.AmazonLinuxGeneration.html
以前利用していたCDKぷろじぇくとのVerが古くて未だAmazonLinux2023をサポートされていない
ので今回はCDKプロジェクト のアップデートについて説明していきたいと思います。
まず、利用可能なパッケージの最新Verについて確認します。
$ npm outdated
Package Current Wanted Latest Location Depended by
@types/node 18.11.15 18.11.15 20.13.0 node_modules/@types/node simple_ec2_webapp
aws-cdk 2.58.1 2.58.1 2.144.0 node_modules/aws-cdk simple_ec2_webapp
aws-cdk-lib 2.58.1 2.58.1 2.144.0 node_modules/aws-cdk-lib simple_ec2_webapp
typescript 4.9.5 4.9.5 5.4.5 node_modules/typescript simple_ec2_webapp
また、package.jsonに記載されているパッケージのアップデートを確認するにはnpm-check-updates
を実行すれば、最新のパッケージを確認することができます。
$ npm-check-updates
@types/jest ^29.2.4 → ^29.5.12
@types/node 18.11.15 → 20.13.0
aws-cdk 2.58.1 → 2.144.0
aws-cdk-lib 2.58.1 → 2.144.0
constructs ^10.0.0 → ^10.3.0
jest ^29.3.1 → ^29.7.0
ts-jest ^29.0.3 → ^29.1.4
ts-node ^10.9.1 → ^10.9.2
typescript ~4.9.4 → ~5.4.5
Run ncu -u to upgrade package.json
上記のコマンドでもRun ncu -u to upgrade package.json
と律儀に記載されているのでncu -u
を実行してpackage.jsonファイル内のパッケージをアップデートします。
$ ncu -u
Upgrading
@types/jest ^29.2.4 → ^29.5.12
@types/node 18.11.15 → 20.13.0
aws-cdk 2.58.1 → 2.144.0
aws-cdk-lib 2.58.1 → 2.144.0
constructs ^10.0.0 → ^10.3.0
jest ^29.3.1 → ^29.7.0
ts-jest ^29.0.3 → ^29.1.4
ts-node ^10.9.1 → ^10.9.2
typescript ~4.9.4 → ~5.4.5
Run npm install to install new versions.
またも丁寧にnpm install
と記載されているので、実行してnpmパッケージを最新化します。
npm install
これで最新のパッケージを更新することができました。最初に実行したnpm-check-updates
を再度実行してアップデート可能なパッケージがあるか確認します。
$ ncu
All dependencies match the latest package versions :)
これで無事にアップデートすることができました。
仕切り直してcdk synth
を実行し、成功できればOKになります。