Skip to content

Latest commit

 

History

History
365 lines (222 loc) · 11.9 KB

API.md

File metadata and controls

365 lines (222 loc) · 11.9 KB

RDS Tools


cdk-constructs: Developer Preview

The APIs of higher level constructs in this module are in developer preview before they become stable. We will only make breaking changes to address unforeseen API issues. Therefore, these APIs are not subject to Semantic Versioning, and breaking changes will be announced in release notes. This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package.


There are multiple versions of this library published. You should be using the v0.X.X versions for now. There are versions published that match the CDK version they depend on, but don't use those.

This is a collection of CDK constructs you can use with RDS.

Developer Preview

DatabaseScript

Provides a Custom Resource and backing Lambda Function that will run a given script against a given database.

const databaseInstance = new DatabaseInstance(stack, 'test-database', {
  engine: DatabaseInstanceEngine.sqlServerWeb({ version: SqlServerEngineVersion.VER_15_00_4043_16_V1 }),
  vpc: vpc,
});


// ...


new DatabaseScript(stack2, 'test', {
  databaseInstance,
  script: 'SELECT 1',
})
  .bind(databaseInstance.connections.securityGroups[0]); // bind for security access

DatabaseUser

There was once a construct called DatabaseUser. However, it is better to use the standard code from the CDK directly:

const myUserSecret = new rds.DatabaseSecret(this, 'MyUserSecret', {
  username: 'myuser',
  masterSecret: instance.secret,
  excludeCharacters: '{}[]()\'"/\\', // defaults to the set " %+~`#$&*()|[]{}:;<>?!'/@\"\\"
});
const myUserSecretAttached = myUserSecret.attach(instance); // Adds DB connections information in the secret
instance.addRotationMultiUser('MyUser', { // Add rotation using the multi user scheme
  secret: myUserSecretAttached,
});

API Reference

Constructs

DatabaseScript

  • Implements: aws-cdk-lib.aws_ec2.IConnectable

Initializers

import { DatabaseScript } from '@matthewbonig/rds-tools'

new DatabaseScript(scope: Construct, id: string, props: DatabaseScriptProps)
Name Type Description
scope constructs.Construct No description.
id string No description.
props DatabaseScriptProps No description.

scopeRequired
  • Type: constructs.Construct

idRequired
  • Type: string

propsRequired

Methods

Name Description
toString Returns a string representation of this construct.
bind Grants access to the Lambda Function to the given SecurityGroup.
slugify No description.

toString
public toString(): string

Returns a string representation of this construct.

bind
public bind(securityGroup: SecurityGroup, port: Port): DatabaseScript

Grants access to the Lambda Function to the given SecurityGroup.

Adds an ingress rule to the given security group and for the given port.

securityGroupRequired
  • Type: aws-cdk-lib.aws_ec2.SecurityGroup

portRequired
  • Type: aws-cdk-lib.aws_ec2.Port

slugify
public slugify(x: string): string
xRequired
  • Type: string

Static Functions

Name Description
isConstruct Checks if x is a construct.

isConstruct
import { DatabaseScript } from '@matthewbonig/rds-tools'

DatabaseScript.isConstruct(x: any)

Checks if x is a construct.

xRequired
  • Type: any

Any object.


Properties

Name Type Description
node constructs.Node The tree node.
adhocConnections aws-cdk-lib.aws_ec2.Connections No description.
connections aws-cdk-lib.aws_ec2.Connections The network connections associated with this resource.
handler aws-cdk-lib.aws_lambda.IFunction No description.
adhocHandler aws-cdk-lib.aws_lambda.IFunction The underlying Lambda handler function for making adhoc commands against the database.

nodeRequired
public readonly node: Node;
  • Type: constructs.Node

The tree node.


adhocConnectionsRequired
public readonly adhocConnections: Connections;
  • Type: aws-cdk-lib.aws_ec2.Connections

connectionsRequired
public readonly connections: Connections;
  • Type: aws-cdk-lib.aws_ec2.Connections

The network connections associated with this resource.


handlerRequired
public readonly handler: IFunction;
  • Type: aws-cdk-lib.aws_lambda.IFunction

adhocHandlerOptional
public readonly adhocHandler: IFunction;
  • Type: aws-cdk-lib.aws_lambda.IFunction

The underlying Lambda handler function for making adhoc commands against the database.

Undefined unless 'enableAdhoc' is true


Structs

DatabaseScriptProps

Initializer

import { DatabaseScriptProps } from '@matthewbonig/rds-tools'

const databaseScriptProps: DatabaseScriptProps = { ... }

Properties

Name Type Description
script string The script to execute.
databaseInstance aws-cdk-lib.aws_rds.DatabaseInstance The database instance to run the script against.
databaseName string An optional databaseName.
enableAdhoc boolean Deploy a second Lambda function that allows for adhoc sql against the database?
secret aws-cdk-lib.aws_secretsmanager.ISecret An optional secret that provides credentials for the database.
vpc aws-cdk-lib.aws_ec2.IVpc The VPC for the Lambda Function to attach to.

scriptRequired
public readonly script: string;
  • Type: string

The script to execute.


databaseInstanceOptional
public readonly databaseInstance: DatabaseInstance;
  • Type: aws-cdk-lib.aws_rds.DatabaseInstance

The database instance to run the script against.


databaseNameOptional
public readonly databaseName: string;
  • Type: string

An optional databaseName.

If none is provided then it will be the default for the rds instance, as defined by the AWS docs.

mysql - mysql mssql - master postgres - postgres


enableAdhocOptional
public readonly enableAdhoc: boolean;
  • Type: boolean
  • Default: false

Deploy a second Lambda function that allows for adhoc sql against the database?


secretOptional
public readonly secret: ISecret;
  • Type: aws-cdk-lib.aws_secretsmanager.ISecret
  • Default: the root secret from the database instance

An optional secret that provides credentials for the database.

Must have fields 'username' and 'password'


vpcOptional
public readonly vpc: IVpc;
  • Type: aws-cdk-lib.aws_ec2.IVpc

The VPC for the Lambda Function to attach to.

If one is not provide, it's assumed from the database instance.