AWS CDK を使用して Aurora PostgreSQL データベースクラスターを作成する
公開日
2025年1月19日
更新日
2025年1月19日
8
分で読める
AWS
この記事では、AWS CDK を使用してスケーラビリティの高い Aurora PostgreSQL データベースクラスターを設定する方法について説明します。この実装では、Serverless v2 インスタンスや Secrets Manager などの最新のベストプラクティスを採用し、セキュリティと効率を向上させています。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
- VPC が作成済みであること
- Isolated Subnet と Isolated Security Group が作成済みであること
CDKコード
以下は CDK Stack のコード例です。
import * as cdk from 'aws-cdk-lib';
import { SecurityGroup } from 'aws-cdk-lib/aws-ec2';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import {
AuroraPostgresEngineVersion,
ClusterInstance,
Credentials,
DatabaseCluster,
DatabaseClusterEngine,
SubnetGroup,
} from 'aws-cdk-lib/aws-rds';
import { Secret } from 'aws-cdk-lib/aws-secretsmanager';
import { Construct } from 'constructs';
export class RDSStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// VPC ID
const vpcId = 'xxx';
// Isolated Security Group ID
const isolatedSecurityGroupId = 'xxx';
// -------------------------------------------
// VPC を取得
const vpc = ec2.Vpc.fromLookup(this, 'VPC', { vpcId: vpcId });
const rdsSubnetGroup = new SubnetGroup(this, `rds-subnet-group`, {
vpc: vpc,
vpcSubnets: { subnetType: ec2.SubnetType.PRIVATE_ISOLATED },
description: 'RDS 用のサブネットグループ',
});
// RDS セキュリティグループを取得
const rdsSecurityGroup = SecurityGroup.fromLookupById(this, `rds-sg`, isolatedSecurityGroupId);
// RDS 用シークレットを作成
const dbSecret = new Secret(this, `rds-secret`, {
secretName: `<SECRET_NAME>`,
generateSecretString: {
secretStringTemplate: JSON.stringify({ username: 'postgres' }),
generateStringKey: 'password',
passwordLength: 10, // パスワードの長さ
excludeCharacters: '"@/$&:{}()[]+*=^-|', // 除外する特殊文字
},
});
// RDS クラスターを作成
new DatabaseCluster(this, `db-cluster`, {
engine: DatabaseClusterEngine.auroraPostgres({ version: AuroraPostgresEngineVersion.VER_17_2 }), // Aurora PostgreSQL 17.2
clusterIdentifier: `db-cluster`,
defaultDatabaseName: '<DATABASE_NAME>',
vpc: vpc,
vpcSubnets: vpc.selectSubnets({ subnetType: ec2.SubnetType.PRIVATE_ISOLATED }),
serverlessV2MinCapacity: 0.5,
serverlessV2MaxCapacity: 64,
backup: { retention: cdk.Duration.days(7) }, // バックアップ保持期間 7 日
credentials: Credentials.fromSecret(dbSecret),
subnetGroup: rdsSubnetGroup,
securityGroups: [rdsSecurityGroup],
storageEncrypted: true, // 暗号化を有効化
writer: ClusterInstance.serverlessV2(`db-instance-1`, {
autoMinorVersionUpgrade: false,
instanceIdentifier: `db-instance-1`,
enablePerformanceInsights: false,
publiclyAccessible: false,
}),
readers: [
ClusterInstance.serverlessV2(`db-instance-2`, {
autoMinorVersionUpgrade: false,
instanceIdentifier: `db-instance-2`,
enablePerformanceInsights: false,
publiclyAccessible: false,
}),
],
});
}
}
まとめ
この記事では、AWS CDK を使用して Aurora PostgreSQL データベースクラスターを設定する方法について説明しました。Serverless v2 を活用することで、高効率でスケーラブルかつ安全なデータベースソリューションを実現できます。さらに詳細なカスタマイズ内容については、AWS CDK RDS ドキュメント を参照してください。