UNPKG

@studion/infra-code-blocks

Version:
41 lines (40 loc) 2.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DatabaseReplica = void 0; const aws = require("@pulumi/aws"); const pulumi = require("@pulumi/pulumi"); const constants_1 = require("../constants"); const defaults = { multiAz: false, applyImmediately: false, allocatedStorage: 20, maxAllocatedStorage: 100, instanceClass: 'db.t4g.micro', enableMonitoring: false, engineVersion: '17.2', }; class DatabaseReplica extends pulumi.ComponentResource { constructor(name, args, opts = {}) { super('studion:DatabaseReplica', name, {}, opts); this.name = name; const argsWithDefaults = Object.assign({}, defaults, args); this.monitoringRole = argsWithDefaults.monitoringRole; this.instance = this.createDatabaseInstance(args); this.registerOutputs(); } createDatabaseInstance(args) { const argsWithDefaults = Object.assign({}, defaults, args); const stack = pulumi.getStack(); const monitoringOptions = argsWithDefaults.enableMonitoring && this.monitoringRole ? { monitoringInterval: 60, monitoringRoleArn: this.monitoringRole.arn, performanceInsightsEnabled: true, performanceInsightsRetentionPeriod: 7, } : {}; const instance = new aws.rds.Instance(`${this.name}-rds`, Object.assign(Object.assign({ identifierPrefix: `${this.name}-`, engine: 'postgres', engineVersion: argsWithDefaults.engineVersion, allocatedStorage: argsWithDefaults.allocatedStorage, maxAllocatedStorage: argsWithDefaults.maxAllocatedStorage, instanceClass: argsWithDefaults.instanceClass, dbSubnetGroupName: argsWithDefaults.dbSubnetGroupName, vpcSecurityGroupIds: [argsWithDefaults.dbSecurityGroupId], storageEncrypted: true, multiAz: argsWithDefaults.multiAz, publiclyAccessible: false, applyImmediately: argsWithDefaults.applyImmediately, autoMinorVersionUpgrade: true, maintenanceWindow: 'Mon:07:00-Mon:07:30', replicateSourceDb: argsWithDefaults.replicateSourceDb, parameterGroupName: argsWithDefaults.parameterGroupName, skipFinalSnapshot: true }, monitoringOptions), { tags: Object.assign(Object.assign({}, constants_1.commonTags), argsWithDefaults.tags) }), { parent: this }); return instance; } } exports.DatabaseReplica = DatabaseReplica;