Skip to main content

Manage MongoDB Atlas Deployments with AWS CDK

Manage MongoDB Atlas Deployments with AWS CDK

Manage MongoDB Atlas Deployments with AWS CDK

MongoDB Atlas is a fully-managed cloud-based database service offered by MongoDB. It offers a variety of features such as automatic…

Manage MongoDB Atlas Deployments with AWS CDK

MongoDB Atlas is a fully-managed cloud-based database service offered by MongoDB. It offers a variety of features such as automatic backups, automatic scaling, and easy integration with other cloud services. AWS Cloud Development Kit(CDK) is a tool provided by Amazon Web Services (AWS) that allows you to define infrastructure as code using familiar programming languages such as TypeScript, JavaScript, Python, and others.

MongoDB recently announced general availability for Atlas Integrations for AWS CloudFormation and CDK. In this article, we will go through the process of deploying MongoDB Atlas with AWS CDK.

Prerequisites

Before we start, you will need the following:

  • An AWS account
  • AWS CDK installed on your local machine
  • A MongoDB Atlas account

Step 1: Create a new AWS CDK project

To create a new AWS CDK project, open a terminal or command prompt and run the following command:

cdk init --language=typescript

This command will create a new AWS CDK project in TypeScript language.

Step 2: Install the MongoDB Atlas AWS CDK library

To install the MongoDB Atlas AWS CDK library, run the following command:

npm install @aws-cdk/aws-mongodb-atlas

Step 3: Create a new MongoDB Atlas cluster

To create a new MongoDB Atlas cluster, go to the MongoDB Atlas website and log in to your account. From the dashboard, click the "Build a New Cluster" button. Follow the prompts to set up your new cluster.

Step 4: Retrieve your MongoDB Atlas API keys

To retrieve your MongoDB Atlas API keys, go to the MongoDB Atlas website and log in to your account. From the dashboard, click the "Security" tab, and then click the "API Keys" option. Create a new API key and copy the Public and Private keys.

Step 5: Define the MongoDB Atlas stack in AWS CDK

In your AWS CDK project, create a new file called index.ts. Add the following code to define the MongoDB Atlas stack:

// index.ts
import * as cdk from "aws-cdk-lib";
import * as atlas from "@mongodbatlas-awscdk/atlas-basic";
import { config } from "dotenv";
import { Construct } from "constructs";
config();

const apiKeys = {
privateKey: process.env.MONGODB_ATLAS_PRIVATE_KEY as string,
publicKey: process.env.MONGODB_ATLAS_PUBLIC_KEY as string,
};
const orgId = process.env.MONGODB_ATLAS_ORGID as string;
const dbPassword = process.env.MONGODB_ATLAS_PASSWORD as string;
const dbUsername = process.env.MONGODB_ATLAS_USERNAME as string;

export class MongoAtlasStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);

const mongo = new atlas.AtlasBasic(this, "atlas-basic", {
dbUserProps: {
username: dbUsername,
databaseName: "staging",
password: dbPassword,
roles: [
{
roleName: "atlasAdmin",
databaseName: "admin",
},
],
},
clusterProps: {
replicationSpecs: [
{
advancedRegionConfigs: [
{
regionName: "us-east-1",
electableSpecs: {
ebsVolumeType: "STANDARD",
instanceSize: "M10",
nodeCount: 3,
},
},
],
},
],
clusterType: "REPLICASET",
name: "staging-cluster",
},
projectProps: {
name: "staging-project",
orgId,
projectApiKeys: [
{
key: apiKeys.privateKey,
},
{
key: apiKeys.publicKey,
},
],
},
});
}
}

const app = new cdk.App();
new MongoAtlasStack(app, "MongoStack", {
env: {
account: process.env.AWS_ACCOUNT_ID,
region: process.env.AWS_REGION,
},
});
# .env
AWS_ACCOUNT_ID=""
AWS_REGION="us-east-1"
MONGODB_ATLAS_PRIVATE_KEY=""
MONGODB_ATLAS_PUBLIC_KEY=""
MONGODB_ATLAS_ORGID=""
MONGODB_ATLAS_USERNAME""
MONGODB_ATLAS_PASSWORD=""

This code creates a new MongoDB Atlas cluster with the following settings:

  • Name: staging-cluster
  • Provider settings: M10 instance size in the US_EAST_1 region
  • Admin user with the password provided in the .env file
  • Project: my-mongo-project
cdk deploy

You can check the MongoDB Atlas Dashboard after the deployment has finished. Don’t forget to remove resources created in this tutorial.

cdk destroy

Are you ready to enhance your AWS Cloud journey? Head over to our website and book a free consultation call.

Popular posts from this blog

Concurrency With Boto3

Concurrency with Boto3 Concurrency with Boto3 Asyncio provides set of tools for concurrent programming in Python. In a very simple sense it does this by having an event loop execute a… Concurrency in Boto3 Asyncio provides a set of tools for concurrent programming in Python . In a very simple sense, it does this by having an event loop execute a collection of tasks, with a key difference being that each task chooses when to yield control back to the event loop. Asyncio is a good fit for IO-bound and high-level structured network code. Boto3 (AWS Python SDK) falls into this category. A lot of existing libraries are not ready to be used with asyncio out of the box. They may block, or depend on concurrency features not available through the module. It’s still possible to use those libraries in an application based on asyncio by using an executor from concurrent.futures to run the code either in a separate thread or a separate process. The run_in_executor() method of the event...

AWS Lambda Function URLs

AWS Lambda Function URLs AWS Lambda Function URLs AWS Lambda is a Serverless computing service offered by Amazon Web Services (AWS) that allows developers to run code without provisioning… AWS Lambda Function URLs AWS Lambda AWS Lambda is a Serverless computing service offered by Amazon Web Services ( AWS ) that allows developers to run code without provisioning or managing servers. In this tutorial, we will explore AWS Lambda Function URLs , which are the endpoints that allow you to invoke your Lambda functions. AWS Lambda Function URLs are unique HTTP endpoints that you can create using AWS Console, SDK or any other IaC tool. These URLs are used to trigger your Lambda function, and they can be integrated with a variety of workloads. Function URLs are dual stack-enabled, supporting IPv4 and IPv6. After you configure a function URL for your function, you can invoke your function through its HTTP(S) endpoint via a web browser, curl, Postman, or any HTTP client. Once you create ...