@nona-creative/aws-cdk-rds
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

AWS RDS (CDK)

Installation

npm i -S @nona-creative/aws-cdk-rds

Usage

  1. 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,
    })
  2. 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,
    })
  3. 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 || '',
    })
  4. 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 || '',
    })
  5. 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,
    })

Dependencies (4)

Dev Dependencies (20)

Package Sidebar

Install

npm i @nona-creative/aws-cdk-rds

Weekly Downloads

0

Version

1.0.2

License

MIT

Unpacked Size

38.6 kB

Total Files

21

Last publish

Collaborators

  • ian-cawood
  • yesitsdave
  • syntaxza
  • rollyourowned
  • neilrussell6