cdk のメジャーバージョンのマイグレーション
0時に寝て5時に起きた。開発者にインフラ変更の影響を出さないように6時半からインフラのお仕事してた。
cdk v1 と v2 の違い⌗
AWS CDK Versions には v1 と v2 の2つがある。新規で作るものは v2 を選択すればよいけど、既存のスタックが v1 だとマイグレーションが必要になる。cdk は bootstrap したときに CDKToolkit というスタックを生成する。cdk をアップグレードするというのはこのスタックの設定も更新する必要がある。デフォルト設定をそのまま使っていればマイグレーションはそんなに難しくはないはずだけど、設定をカスタマイズしていたりするといくつかパラメーターを調整したりしなかったりしてややこしいかもしれない。
また v2 は v1 の experimental な機能は移行されていないため、v1 のライブラリを直接使うか、自前でその機能を実装するといったことも必要になる可能性がある。
cdk v2 を使っていて v1 にある機能が v2 になくてあれー?って感じで調べてたら experimental な機能はまだ移行されてないらしい。https://t.co/SbRZ5ddrTj
— Tetsuya Morimoto (@t2y) April 7, 2022
例えば、v1 の apigwv2.VpcLink というメソッドは experimental で v2 に移行されていないため、v2 に移行されている stable な CfnVpcLink という機能を使って次のように実装した。これは v1 の cdk の実装をみて同じように実装しただけ。
- const apiGwVpcLink = new apigwv2.VpcLink(this, 'ApiGwVpcLink', {
- vpc: vpc,
- vpcLinkName: 'my-vpc-link',
- securityGroups: [mySecurityGroup]
+ const apiGwVpcLink = new apigwv2.CfnVpcLink(this, 'ApiGwVpcLink', {
+ name: 'my-vpc-link',
+ subnetIds: vpc.privateSubnets.map(sb => sb.subnetId),
+ securityGroupIds: [mySecurityGroup.securityGroupId]
Read other posts