おつかれさまです。ならたけぽんです。🐧
みなさま、AWS Cloud Development Kit(以下、AWS CDK)はお使いですか?
はい。私は調子に乗っていろいろコーディングしています!
え、なんだって?
AWS CDKのバージョンが変わるって?
バージョン2?
AWS Cloud Development Kit (AWS CDK) v2 の一般提供開始
え、AWS CDKのバージョン1は、フルサポートは2022/06/01まで、
以降はメンテナンスサポートになって、2023/06/01でサポート終了だって?
AWS CDK サポート期限
あぁぁぁァ、調子に乗って作成したあれやこれや、どげんしたらよかと・・・😱
というわけで、今回はAWS CDKを、バージョン1から、バージョン2に移行するお話しです。
こうしなければいけない!というお話しではなくて、
こうやってもできるよ!というお話しになっております。
まず、まっさきに考えました。バージョン1とバージョン2の、あいのり。🚌
CDK Toolkit v2 compatibility
※以下、引用
> do not install CDK Toolkit v2 globally.
> (Remove it if you already have it installed: npm remove -g aws-cdk.)
※以下、日本語訳
CDK Toolkit v2をグローバルにインストールしないでください。
(すでにインストールされている場合は削除してください:npm remove -g aws-cdk.)
え、そうなの?
両方のバージョンをグローバル設定にできないって、要は、
あ・い・の・り🚌、できないっていうことじゃん・・・
儚くも散った夢。😭
というわけで、AWS CDKのバージョン1を今後もご入用な方は、
バージョン1とバージョン2とでコーディング環境(サーバorPC)自体を変えるか、
上記URL記載のとおり、
npxコマンドでローカルフォルダだけAWS CDK バージョン2にしてください。
私はですか?
めんどいので、グローバルからAWS CDK バージョン2にしちゃいますYO!。
はい、おざっぱ~。🤗
では、まず最初に、AWS CDK バージョン1のコード群をしっかりバックアップします。
バックアップは大事。おおざっぱ~でも大事。というか必須。
次に、おもむろに、AWS CDK バージョン2をグローバルにインストールします。
> npm install -g aws-cdk
removed 204 packages, changed 1 package, and audited 3 packages in 8s
found 0 vulnerabilities
> cdk --version
2.41.0 (build 6ad48a3)
※ 2022/09/09 20:20現在
さらに、いつものとおり、任意の中身が空のフォルダを初期化します。
> cdk init --language typescript
✅ All done!
そして、最後におもむろに、AWS CDK バージョン1のソースコードを持ってきます!
はい。エラーで真っ赤っ赤~。。。
やっぱりそうだよね。安直にはいかんよね。。。
では、AWS CDK バージョン2 の公式ページをきちんと見てみましょう。
Your first AWS CDK app
※以下、引用
> import { aws_s3 as s3 } from 'aws-cdk-lib';
バージョン1では「aws-cdk/core」だったライブラリ名が、
バージョン2では「aws-cdk-lib」になってる。。。
ていうか、全部のライブラリが「aws-cdk-lib」パッケージに配下になってる。。。
AWS Cloud Development Kit (AWS CDK) v2 の一般提供開始
※以下、引用
> 1 つのパッケージに統合され、使用する各 AWS のサービスごとのパッケージを
> ダウンロードする必要がなくなります。
そういうことか。。。
ということで、「aws-cdk-lib」パッケージを参照するように、
AWS CDK バージョン1のコードをバージョン2に変換してみます。
合わせて、エラー群を1つ1つ、つぶしていきます。
例1)
○修正前:
import * as cdk from '@aws-cdk/core';
↓
○修正後:
import * as cdk from 'aws-cdk-lib';
例2)
○修正前:
import {
ISubnet,
IVpc,
Peer,
Port,
SecurityGroup,
Subnet,
Vpc
} from '@aws-cdk/aws-ec2';
↓
○修正後:
import {
aws_ec2 as ec2
} from 'aws-cdk-lib';
※コード内で、「ec2.Vpc」と接頭子「ec2」を付与する。
例3)
○修正前:
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
↓
○修正後:
constructor(scope: cdk.App, id: string, props?: cdk.StackProps) {
※「cdk.Construct」->「cdk.App」に
あぁぁぁァ、エラーが消えた。。。赤いの消えた。。。
やったよ父さん。ボク、やったよ。。。
もっと複雑なソースコードをお持ちのみなさまにおかれましては、
十分な作業時間を確保して、作業いただきますよう。
みなさまにご多幸あらんことを。
ギリギリまでバージョン1で作業するも良し。
エイ、や、と、この段階でバージョン2に切り替えるも良し。
良き良き、AWS CDKライフを!!!🌈