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 DocumentDB is a MongoDB-compatible document database service.
const cluster = new aws.docdb.Cluster("docdb", {
masterUsername: "admin",
masterPassword: adminPassword,
backupRetentionPeriod: 7,
storageEncrypted: true,
});const cluster = new aws.docdb.Cluster("docdb", {
clusterIdentifier: "docdb-cluster",
masterUsername: "admin",
masterPassword: adminPassword,
backupRetentionPeriod: 14,
storageEncrypted: true,
});
const instance = new aws.docdb.ClusterInstance("docdb-instance", {
clusterIdentifier: cluster.id,
instanceClass: "db.r5.large",
});const globalCluster = new aws.docdb.GlobalCluster("global-docdb", {
globalClusterIdentifier: "global-docdb",
engine: "docdb",
engineVersion: "4.0.0",
});
const primaryCluster = new aws.docdb.Cluster("primary", {
globalClusterIdentifier: globalCluster.id,
masterUsername: "admin",
masterPassword: adminPassword,
});DocumentDB clusters provide MongoDB-compatible database capabilities.
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>;
readonly clusterResourceId: pulumi.Output<string>;
}
interface ClusterArgs {
clusterIdentifier?: pulumi.Input<string>;
engine?: pulumi.Input<"docdb">;
engineVersion?: pulumi.Input<string>;
masterUsername: pulumi.Input<string>;
masterPassword: pulumi.Input<string>;
backupRetentionPeriod?: pulumi.Input<number>;
preferredBackupWindow?: pulumi.Input<string>;
storageEncrypted?: pulumi.Input<boolean>;
dbSubnetGroupName?: pulumi.Input<string>;
vpcSecurityGroupIds?: pulumi.Input<pulumi.Input<string>[]>;
tags?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}Example: Production DocumentDB cluster
import * as aws from "@pulumi/aws";
const subnetGroup = new aws.docdb.SubnetGroup("docdb-subnet", {
subnetIds: [privateSubnet1.id, privateSubnet2.id],
tags: { Name: "docdb-subnet-group" },
});
const cluster = new aws.docdb.Cluster("document-db", {
clusterIdentifier: "docdb-cluster",
engine: "docdb",
engineVersion: "5.0.0",
masterUsername: "admin",
masterPassword: adminPassword,
backupRetentionPeriod: 14,
preferredBackupWindow: "03:00-04:00",
storageEncrypted: true,
dbSubnetGroupName: subnetGroup.name,
vpcSecurityGroupIds: [docdbSecurityGroup.id],
enabledCloudwatchLogsExports: ["audit", "profiler"],
tags: { Environment: "production" },
});
// Add instances to the cluster
const primaryInstance = new aws.docdb.ClusterInstance("primary", {
clusterIdentifier: cluster.id,
instanceClass: "db.r5.xlarge",
});
const replicaInstance = new aws.docdb.ClusterInstance("replica", {
clusterIdentifier: cluster.id,
instanceClass: "db.r5.xlarge",
});
export const writeEndpoint = cluster.endpoint;
export const readEndpoint = cluster.readerEndpoint;
export const clusterArn = cluster.arn;Individual instances within a DocumentDB cluster.
class ClusterInstance extends pulumi.CustomResource {
constructor(name: string, args: ClusterInstanceArgs, opts?: pulumi.CustomResourceOptions);
readonly endpoint: pulumi.Output<string>;
readonly arn: pulumi.Output<string>;
}
interface ClusterInstanceArgs {
clusterIdentifier: pulumi.Input<string>;
instanceClass: pulumi.Input<string>;
engine?: pulumi.Input<"docdb">;
availabilityZone?: pulumi.Input<string>;
preferredMaintenanceWindow?: pulumi.Input<string>;
autoMinorVersionUpgrade?: pulumi.Input<boolean>;
tags?: pulumi.Input<{[key: string]: pulumi.Input<string>}>;
}Example: Multi-AZ cluster with read replicas
const cluster = new aws.docdb.Cluster("docdb", {
clusterIdentifier: "multi-az-cluster",
masterUsername: "admin",
masterPassword: adminPassword,
backupRetentionPeriod: 30,
storageEncrypted: true,
dbSubnetGroupName: subnetGroup.name,
vpcSecurityGroupIds: [securityGroup.id],
});
// Primary instance in AZ-A
const primary = new aws.docdb.ClusterInstance("primary", {
clusterIdentifier: cluster.id,
instanceClass: "db.r5.large",
availabilityZone: "us-east-1a",
});
// Replica in AZ-B for high availability
const replica1 = new aws.docdb.ClusterInstance("replica-1", {
clusterIdentifier: cluster.id,
instanceClass: "db.r5.large",
availabilityZone: "us-east-1b",
});
// Replica in AZ-C for additional read capacity
const replica2 = new aws.docdb.ClusterInstance("replica-2", {
clusterIdentifier: cluster.id,
instanceClass: "db.r5.large",
availabilityZone: "us-east-1c",
});For complete DocumentDB API, see All Services.
Install with Tessl CLI
npx tessl i tessl/npm-pulumi--aws@7.16.0