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

docdb.mddocs/database/

DocumentDB

Amazon DocumentDB is a MongoDB-compatible document database service.

Common Tasks

Create a basic DocumentDB cluster

const cluster = new aws.docdb.Cluster("docdb", {
    masterUsername: "admin",
    masterPassword: adminPassword,
    backupRetentionPeriod: 7,
    storageEncrypted: true,
});

Create a cluster with instances

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",
});

Create a global cluster

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,
});

Core Resources

Cluster

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;

ClusterInstance

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",
});

Related Services

  • VPC - Configure network isolation for DocumentDB clusters
  • Secrets Manager - Store and rotate database credentials
  • Lambda - Connect serverless applications to DocumentDB
  • CloudWatch - Monitor cluster metrics and logs
  • DMS - Migrate from MongoDB to DocumentDB
  • S3 - Export cluster snapshots for backup

For complete DocumentDB API, see All Services.

Install with Tessl CLI

npx tessl i tessl/npm-pulumi--aws@7.16.0

docs

index.md

quickstart.md

README.md

tile.json