0
0

古いCDKプロジェクトのバージョンアップデートを実施した話

Posted at

はじめに

普段はインフラエンジニアとして仕事を実施しているのですが、
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になります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0