A Pulumi package for creating and managing Amazon Web Services (AWS) cloud resources with infrastructure-as-code.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
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.
const db = new aws.rds.Instance("postgres", {
allocatedStorage: 20,
engine: "postgres",
instanceClass: "db.t3.micro",
username: "admin",
password: dbPassword,
});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,
});const auroraCluster = new aws.rds.Cluster("aurora", {
engine: "aurora-postgresql",
masterUsername: "admin",
masterPassword: dbPassword,
serverlessv2ScalingConfiguration: {
minCapacity: 0.5,
maxCapacity: 1,
},
});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;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;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",
},
});RDS module includes 29 resources. See All Services for complete list.
Install with Tessl CLI
npx tessl i tessl/npm-pulumi--aws