0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS CDKでAuroraServeless V2がサポートされたので書き換えてみた

Last updated at Posted at 2023-06-19

突然ですが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インスタンスがリーダーインスタンスで作られる

rds-writer-phase-1-2023-06-19 19.03.58.png

2. servelessv2インスタンスがリーダーインスタンスライターインスタンスに昇格し、リーダーインスタンスが削除

rds-writer-phase-2-2023-06-19 19.13.40.png

3. servelessv2インスタンスのみになった

rds-writer-phase-3-2023-06-19 19.41.51.png

ローリングデプロイもバッチリでした。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?