@nona-creative/aws-cdk-rds
v1.0.2
Published
AWS RDS package with CDK
Downloads
1
Readme
AWS RDS (CDK)
Installation
npm i -S @nona-creative/aws-cdk-rds
Usage
Create a Security Group for RDS on the relevant VPC (eg. using
@nona-creative/aws-cdk-vpc
)this.vpcStack.createSecurityGroup({ name: RDS_VPC_SECURITY_GROUP_NAME, description: 'RDS Security Group for app VPC', allowAllOutbound: false, })
and (optionally) add an ingress rule for lambda:
this.vpcStack.addSecurityGroupIngressRule({ targetSecurityGroupName: RDS_VPC_SECURITY_GROUP_NAME, sourceSecurityGroupName: LAMBDA_VPC_SECURITY_GROUP_NAME, port: 5432, })
Create the RDS stack
import { RDSStack } from '@nona-creative/aws-cdk-rds' const rdsSecurityGroup = this.vpcStack.securityGroups[RDS_VPC_SECURITY_GROUP_NAME] as SecurityGroup this.rdsStack = new RDSStack(this.scope, `${this.id}-rds-${this.stage}`, { stage: this.stage, vpc: this.vpcStack.vpc, securityGroup: rdsSecurityGroup, })
Retrieve required environment variables from AWS Secrets Manager and Paramstore (eg. using
@nona-creative/aws-cdk-config
)this.configData = new AWSConfig(stack, `${this.id}-config-${this.stage}`, { stage: this.stage, appName: process.env.APP_NAME || '', packageName: process.env.PACKAGE_NAME || '', paramStoreKeys: PARAM_STORE_KEYS, secretsManagerKeys: SECRETS_MANAGER_KEYS, secretsArn: process.env.SECRETS_ARN || '', })
Retrieve required environment variables from Secrets Manager and Paramstore (eg. using
@nona-creative/aws-config-cdk
)this.configData = new AWSConfig(this.apiGatewayStack, `${this.id}-config-${this.stage}`, { stage: this.stage, appName: process.env.APP_NAME || '', packageName: process.env.PACKAGE_NAME || '', paramStoreKeys: PARAM_STORE_KEYS, secretsManagerKeys: SECRETS_MANAGER_KEYS, secretsArn: process.env.SECRETS_ARN || '', })
Create Database or Database cluster using config data from AWSConfig
import { DatabaseInstanceProps } from '@aws-cdk/aws-rds' const additioanlDatabaseProps: DatabaseInstanceProps = { ... } const { POSTGRES_USER, POSTGRES_DB, POSTGRES_PASSWORD, POSTGRES_PORT } = this.configData this.rdsStack.createDatabase({ user: POSTGRES_USER as string, databaseName: POSTGRES_DB as string, password: POSTGRES_PASSWORD as string, port: POSTGRES_PORT as string, props: additioanlDatabaseProps, })
or
import { DatabaseClusterProps } from '@aws-cdk/aws-rds' const additioanlDatabaseClusterProps: DatabaseClusterProps = { ... } const { POSTGRES_USER, POSTGRES_DB, POSTGRES_PASSWORD, POSTGRES_PORT } = this.configData this.rdsStack.createDatabaseCluster({ user: POSTGRES_USER as string, databaseName: POSTGRES_DB as string, password: POSTGRES_PASSWORD as string, port: POSTGRES_PORT as string, props: additioanlDatabaseClusterProps, })