📝
CDK で RDS Aurora PostgreSQL クラスターのスナップショットからのリストアをやってみた
前提
- 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