Skip to main content

cdk-sqlserver-seeder Mentioned in Awesome CDK

build jsii-publish downloads

npm version PyPI version NuGet version Maven Central

A simple CDK seeder for SQL Server RDS databases.

When you create an RDS SQL Server instance using CloudFormation template, there is no way to provide initial schema definition as part of CloudFormation stack deployment. Custom schema deployment scripts can be executed only after the database deployment is complete.

cdk-sqlserver-seeder library is a AWS CDK construct that provides a way to automate this process and eliminate manual steps involved in the process of preparing new RDS SQL Server environment by executing custom SQL scripts on RDS SQL Server instance creation/deletion.

The construct relies on Invoke-SqlCmd cmdlet to run the scripts and provides a way to handle transient errors during stack provisioning.

Usage

# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
import aws_cdk.core as cdk
import aws_cdk.aws_ec2 as ec2
import aws_cdk.aws_rds as rds
from cdk_sqlserver_seeder import SqlServerSeeder

class DatabaseStack(cdk.Stack):
    def __init__(self, scope, id, *, description=None, env=None, stackName=None, tags=None, synthesizer=None, terminationProtection=None):
        super().__init__(scope, id, description=description, env=env, stackName=stackName, tags=tags, synthesizer=synthesizer, terminationProtection=terminationProtection)

        sql_server = rds.DatabaseInstance(self, "Instance",
            engine=rds.DatabaseInstanceEngine.SQL_SERVER_WEB
        )

        seeder = SqlServerSeeder(self, "SqlSeeder",
            database=sql_server,
            port=1433,
            vpc=vpc,
            create_script_path="./SQL/v1.0.0.sql", # script to be executed on resource creation
            delete_script_path="./SQL/cleanup.sql"
        )

Configuration properties

SqlServerSeeder construct accepts the following configuration properties:

Parameter Required Default Description
vpc yes VPC for Lambda function deployment
database yes RDS SQL Server database instance
createScriptPath yes SQL scripts to run on resource creation
deleteScriptPath no SQL script to run on resource deletion
port no 1433 RSD SQL Server database port
memorySize no 512 Lambda function memory size
ignoreSqlErrors no false Whether to ignore SQL error or not

Architecture

Architecture

cdk-sqlserver-seeder deploys a custom resource backed by PowerShell lambda to connect to SQL Server instance. Lambda function is deployed in private subnets of your VPC where RDS instance resides.

Lambda function retrieves database credentials from AWS Secrets Manager and uses them to construct connection string to the database.

SQL scripts are uploaded into S3 bucket during CDK application deployment. Lambda function downloads these scripts during execution.

Security considerations

Lambda function has the following permissions:

  • Managed policies

    • AWSLambdaBasicExecutionRole for CloudWatch logs
    • AWSLambdaVPCAccessExecutionRole for VPC access
  • Inline policy

    • secretsmanager:GetSecretValue for RDS credentials secret
    • s3:GetObject*, s3:GetBucket*, s3:List* for S3 bucket with SQL scripts

Acknowledgements

The whole project inspired by aws-cdk-dynamodb-seeder. I though it would be very helpful to have a similar way to seed initial schema to more traditional SQL Server databases.

Metadata

Release files for cdk-sqlserver-seeder 0.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cdk-sqlserver-seeder 0.2.3
File Size Uploaded
cdk-sqlserver-seeder-0.2.3.tar.gz 46.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for cdk-sqlserver-seeder 0.2.3
File Interpreter ABI Platform
cdk_sqlserver_seeder-0.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 92.4 MB

Release files / cdk-sqlserver-seeder-0.2.3.tar.gz

Download URL cdk-sqlserver-seeder-0.2.3.tar.gz
Size 46.2 MB
Tags Source
SHA-256 checksum
How to use checksums
249e3a89c88a6077424c24d0cc1e603ebf8437f70d5cf1484e54edd6fc8f2242
BLAKE2b-256 checksum
How to use checksums
346989aac21953cc3b1ec6d00f52062f900bb67e8d579c2e5a8cee4fdd9bda6a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

Release files / cdk_sqlserver_seeder-0.2.3-py3-none-any.whl

Download URL cdk_sqlserver_seeder-0.2.3-py3-none-any.whl
Size 46.2 MB
Tags Python 3
SHA-256 checksum
How to use checksums
5f36a89222a7d215e99840f52b3ccdcb10cbd441271948597508c0d206a527f5
BLAKE2b-256 checksum
How to use checksums
e3eb960b071d479f6999a7d53920bc00affaf36d7a3aad65a0dd224aa269e80b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.6

Release history Release notifications | RSS feed

This release

0.2.3 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page