@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,
      })

    Install

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

    DownloadsWeekly Downloads

    2

    Version

    1.0.2

    License

    MIT

    Unpacked Size

    38.6 kB

    Total Files

    21

    Last publish

    Collaborators

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