突然ですがdeprecated
していいですか
最近、CDKでデプロイしていたら、
[WARNING] aws-cdk-lib.aws_rds.DatabaseClusterProps#instanceProps is deprecated.
- use writer and readers instead
This API will be removed in the next major release.
と出てきたので、RDSの書き方変わるのかなーとChangeLogを漁りに行ったら、
直近、2.82.0
でRDSの変更があって
rds: support Aurora Serverless V2 instances
の文字が!!!待望!!
Before
通常は下記のような、Auroraの書き方をすると
const rds = new DatabaseCluster(this, DatabaseCluster.name, {
engine: DatabaseClusterEngine.auroraMysql({ version: AuroraMysqlEngineVersion.VER_3_03_0 }),
instanceProps: {
vpc,
vpcSubnets: { subnetType: SubnetType.PRIVATE_WITH_EGRESS },
},
defaultDatabaseName,
removalPolicy: RemovalPolicy.DESTROY,
});
現在はインスタンスタイプが、db.t3.medium
のリーダーインスタンス・ライターインスタンスが作成されます。
After
今後はこうなるようです。
const rds = new DatabaseCluster(this, DatabaseCluster.name, {
engine: DatabaseClusterEngine.auroraMysql({ version: AuroraMysqlEngineVersion.VER_3_03_0 }),
vpc,
vpcSubnets: { subnetType: SubnetType.PRIVATE_WITH_EGRESS },
instanceUpdateBehaviour: InstanceUpdateBehaviour.ROLLING,
writer: ClusterInstance.provisioned("WriterInstance", {
instanceType: InstanceType.of(InstanceClass.T3, InstanceSize.MEDIUM),
enablePerformanceInsights: true,
}),
readers: [
ClusterInstance.provisioned("ReaderInstance", {
instanceType: InstanceType.of(InstanceClass.T3, InstanceSize.MEDIUM),
enablePerformanceInsights: true,
}),
],
defaultDatabaseName,
removalPolicy: RemovalPolicy.DESTROY,
});
ポイント
- writer・readersでインスタンスを定義
serveless v2用に書き換え
writerだけserverlessV2
に書き換えるとこうなりました。
const rds = new DatabaseCluster(this, DatabaseCluster.name, {
engine: DatabaseClusterEngine.auroraMysql({ version: AuroraMysqlEngineVersion.VER_3_03_0 }),
vpc,
vpcSubnets: { subnetType: SubnetType.PRIVATE_WITH_EGRESS },
instanceUpdateBehaviour: InstanceUpdateBehaviour.ROLLING,
+ writer: ClusterInstance.serverlessV2("Writer", { scaleWithWriter: true, enablePerformanceInsights: true }),
defaultDatabaseName,
removalPolicy: RemovalPolicy.DESTROY,
});
servelessv2用に書き換えたのをデプロイしてみました。
まず、Beforeで書いたテンプレートをデプロイしておき
次に、servelessv2用に書き換えたのをデプロイしてみました。
1. servelessv2インスタンスがリーダーインスタンス
で作られる
2. servelessv2インスタンスがリーダーインスタンス
→ライターインスタンス
に昇格し、リーダーインスタンス
が削除
3. servelessv2インスタンスのみになった
ローリングデプロイもバッチリでした。