CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/npm-pulumi--aws

A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources with infrastructure-as-code.

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

rds.mddocs/database/

RDS - Relational Database Service

Amazon RDS makes it easy to set up, operate, and scale relational databases in the cloud. Supports PostgreSQL, MySQL, MariaDB, Oracle, SQL Server, and Aurora.

Common Tasks

Create a basic PostgreSQL database

const db = new aws.rds.Instance("postgres", {
    allocatedStorage: 20,
    engine: "postgres",
    instanceClass: "db.t3.micro",
    username: "admin",
    password: dbPassword,
});

Create a multi-AZ production database

const productionDb = new aws.rds.Instance("prod-db", {
    allocatedStorage: 100,
    engine: "postgres",
    instanceClass: "db.r5.large",
    username: "admin",
    password: dbPassword,
    multiAz: true,
    storageEncrypted: true,
    backupRetentionPeriod: 30,
});

Create an Aurora serverless cluster

const auroraCluster = new aws.rds.Cluster("aurora", {
    engine: "aurora-postgresql",
    masterUsername: "admin",
    masterPassword: dbPassword,
    serverlessv2ScalingConfiguration: {
        minCapacity: 0.5,
        maxCapacity: 1,
    },
});

Core Resources

Instance

Create RDS database instances.

class Instance extends pulumi.CustomResource {
    constructor(name: string, args: InstanceArgs, opts?: pulumi.CustomResourceOptions);

    readonly arn: pulumi.Output<string>;
    readonly endpoint: pulumi.Output<string>;
    readonly address: pulumi.Output<string>;
    readonly port: pulumi.Output<number>;
}

interface InstanceArgs {
    allocatedStorage: pulumi.Input<number>;
    engine: pulumi.Input<string>;
    engineVersion?: pulumi.Input<string>;
    instanceClass: pulumi.Input<string>;
    dbName?: pulumi.Input<string>;
    username: pulumi.Input<string>;
    password: pulumi.Input<string>;
    dbSubnetGroupName?: pulumi.Input<string>;
    vpcSecurityGroupIds?: pulumi.Input<pulumi.Input<string>[]>;
    storageEncrypted?: pulumi.Input<boolean>;
    backupRetentionPeriod?: pulumi.Input<number>;
    multiAz?: pulumi.Input<boolean>;
    publiclyAccessible?: pulumi.Input<boolean>;
    tags?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}

Example: Complete PostgreSQL setup with VPC

import * as aws from "@pulumi/aws";

// Create subnet group
const subnetGroup = new aws.rds.SubnetGroup("db-subnet", {
    subnetIds: [subnet1.id, subnet2.id],
    tags: { Name: "db-subnet-group" },
});

// Create PostgreSQL instance
const db = new aws.rds.Instance("postgres", {
    allocatedStorage: 20,
    engine: "postgres",
    engineVersion: "15.3",
    instanceClass: "db.t3.micro",
    dbName: "mydb",
    username: "admin",
    password: dbPassword,
    dbSubnetGroupName: subnetGroup.name,
    vpcSecurityGroupIds: [dbSecurityGroup.id],
    storageEncrypted: true,
    backupRetentionPeriod: 7,
    skipFinalSnapshot: true,
    publiclyAccessible: false,
});

export const dbEndpoint = db.endpoint;
export const dbAddress = db.address;
export const dbPort = db.port;

Cluster

Create Aurora database clusters.

class Cluster extends pulumi.CustomResource {
    constructor(name: string, args: ClusterArgs, opts?: pulumi.CustomResourceOptions);

    readonly arn: pulumi.Output<string>;
    readonly endpoint: pulumi.Output<string>;
    readonly readerEndpoint: pulumi.Output<string>;
}

interface ClusterArgs {
    engine: pulumi.Input<string>;
    engineVersion?: pulumi.Input<string>;
    databaseName?: pulumi.Input<string>;
    masterUsername: pulumi.Input<string>;
    masterPassword: pulumi.Input<string>;
    dbSubnetGroupName?: pulumi.Input<string>;
    vpcSecurityGroupIds?: pulumi.Input<pulumi.Input<string>[]>;
    storageEncrypted?: pulumi.Input<boolean>;
    backupRetentionPeriod?: pulumi.Input<number>;
}

Example: Aurora cluster with read replicas

const cluster = new aws.rds.Cluster("aurora", {
    engine: "aurora-postgresql",
    engineVersion: "15.3",
    databaseName: "mydb",
    masterUsername: "admin",
    masterPassword: dbPassword,
    dbSubnetGroupName: subnetGroup.name,
    vpcSecurityGroupIds: [dbSecurityGroup.id],
    storageEncrypted: true,
    backupRetentionPeriod: 14,
});

// Write endpoint for primary
export const writerEndpoint = cluster.endpoint;
// Read endpoint for replicas
export const readerEndpoint = cluster.readerEndpoint;

SubnetGroup

Database subnet groups for VPC configuration.

class SubnetGroup extends pulumi.CustomResource {
    constructor(name: string, args: SubnetGroupArgs, opts?: pulumi.CustomResourceOptions);
}

interface SubnetGroupArgs {
    subnetIds: pulumi.Input<pulumi.Input<string>[]>;
    description?: pulumi.Input<string>;
    tags?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}

Example: Multi-AZ subnet group

const subnetGroup = new aws.rds.SubnetGroup("db-subnet", {
    subnetIds: [
        privateSubnetA.id,
        privateSubnetB.id,
        privateSubnetC.id,
    ],
    description: "Database subnet group across multiple AZs",
    tags: {
        Name: "production-db-subnet-group",
        Environment: "production",
    },
});

Related Services

  • Secrets Manager - Store and rotate database credentials securely
  • VPC - Configure network isolation for databases
  • CloudWatch - Monitor database metrics and logs
  • Lambda - Connect serverless functions to RDS databases
  • Backup - Centralized backup management for RDS instances

RDS module includes 29 resources. See All Services for complete list.

Install with Tessl CLI

npx tessl i tessl/npm-pulumi--aws

docs

index.md

quickstart.md

README.md

tile.json