Zenn
📝

CDK で RDS Aurora PostgreSQL クラスターのスナップショットからのリストアをやってみた

2025/03/23に公開

前提

  • RDS は Aurora PostgreSQL 16.4
  • 実行環境は Cloud9 (Amazon Linux 2023)
  • RDS のスナップショットは事前に手動で取得済み
  • CDK の言語は TypeScript

CDK の初期設定

今から始める CDK 入門 #1
プロジェクトの作成までは上記の手順通りです。

コードの編集

まずは EC2 と RDS のモジュールをインストールします。

$ npm install @aws-cdk/aws-ec2
$ npm install @aws-cdk/aws-rds

devio-stack.ts を以下のコードに書き換えます。

lib/devio-stack.ts
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as rds from 'aws-cdk-lib/aws-rds';
import * as ec2 from 'aws-cdk-lib/aws-ec2';

export class DevioStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    const vpc = ec2.Vpc.fromLookup(this, 'DefaultVpc', {
      isDefault: true
    });
    
    new rds.DatabaseClusterFromSnapshot(this, 'Database', {
      engine: rds.DatabaseClusterEngine.auroraPostgres({ version: rds.AuroraPostgresEngineVersion.VER_16_4 }),
      writer: rds.ClusterInstance.provisioned('writer'),
      vpcSubnets: {
        subnetType: ec2.SubnetType.PUBLIC,
      },
      vpc,
      snapshotIdentifier: 'your-snapshot-arn',
    });
  }
}
  • VPC にはデフォルト VPC を指定しています
  • エンジンは Aurora PostgreSQL、バージョンは 16.4 を指定しています
  • パブリックサブネットを指定しています
  • snapshotIdentifier の値には手動で取得済みのスナップショット ARN を指定します

bin/bin/devio.ts を以下のコードに書き換えます。

bin/devio.ts
#!/usr/bin/env node
import * as cdk from 'aws-cdk-lib';
import { DevioStack } from '../lib/devio-stack';

const app = new cdk.App();
new DevioStack(app, 'DevioStack', {
  
  env: {
      account: process.env.CDK_DEFAULT_ACCOUNT,
      region: process.env.CDK_DEFAULT_REGION,
  },
});

デプロイ

$ cdk synth

初めて CDK でデプロイする場合は以下のコマンドも実行してください。

$ cdk bootstrap

デプロイします。

$ cdk deploy

デプロイ後に RDS コンソールでスナップショットから復元されたクラスターをを確認できます。

今回はリストアしたクラスターが不要なので以下のコマンドで削除します。

$ cdk destroy

なお、クラスター削除後に自動的に取得されたスナップショットも残るので、不要であればスナップショットも削除してください。

まとめ

今回は CDK で RDS Aurora PostgreSQL クラスターのスナップショットからのリストアをやってみました。
どなたかの参考になれば幸いです。

参考資料

Discussion

ログインするとコメントできます