awscdk-resources-mongodbatlas
Version:
MongoDB Atlas CDK Construct Library for AWS CloudFormation Resources
101 lines • 12.1 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AtlasBasic = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
// Copyright 2023 MongoDB Inc
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
const constructs_1 = require("constructs");
const atlas = require("../../index");
/** @type {*} */
const projectDefaults = {
projectName: "atlas-project-",
};
/** @type {*} */
const dbDefaults = {
dbName: "admin",
username: "atlas-user",
password: "atlas-pwd",
roles: [
{
roleName: "atlasAdmin",
databaseName: "admin",
},
],
};
/** @type {*} */
const clusterDefaults = {
clusterName: "atlas-cluster-",
clusterType: "REPLICASET",
};
/**
* @description
* @export
* @class AtlasBasic
* @extends {Construct}
*/
class AtlasBasic extends constructs_1.Construct {
/**
* Creates an instance of AtlasBasic.
* @param {Construct} scope
* @param {string} id
* @param {AtlasBasicProps} props
* @memberof AtlasBasic
*/
constructor(scope, id, props) {
super(scope, id);
//Create a new MongoDB Atlas Project
this.mProject = new atlas.CfnProject(this, "project-".concat(id), {
profile: props.profile,
name: props.projectProps.name ||
projectDefaults.projectName.concat(String(randomNumber())),
projectOwnerId: props.projectProps.projectOwnerId,
...props.projectProps,
});
// Create a new MongoDB Atlas Cluster and pass project ID
this.mCluster = new atlas.CfnCluster(this, "cluster-".concat(id), {
profile: props.profile,
name: props.clusterProps.name ||
clusterDefaults.clusterName.concat(String(randomNumber())),
projectId: this.mProject.attrId,
clusterType: clusterDefaults.clusterType,
...props.clusterProps,
});
// Create a new MongoDB Atlas Database User
this.mDBUser = new atlas.CfnDatabaseUser(this, "db-user-".concat(id), {
profile: props.profile,
databaseName: props.dbUserProps?.databaseName || dbDefaults.dbName,
projectId: this.mProject.attrId,
username: props.dbUserProps?.username || dbDefaults.username,
roles: props.dbUserProps?.roles || dbDefaults.roles,
password: props.dbUserProps?.password || dbDefaults.password,
...props.dbUserProps,
});
// Create a new MongoDB Atlas Project IP Access List
this.ipAccessList = new atlas.CfnProjectIpAccessList(this, "ip-access-list-".concat(id), {
profile: props.profile,
projectId: this.mProject.attrId,
...props.ipAccessListProps,
});
}
}
exports.AtlasBasic = AtlasBasic;
_a = JSII_RTTI_SYMBOL_1;
AtlasBasic[_a] = { fqn: "awscdk-resources-mongodbatlas.AtlasBasic", version: "3.13.1" };
function randomNumber() {
const min = 10;
const max = 9999999;
return Math.floor(Math.random() * (max - min + 1) + min);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbDMtcmVzb3VyY2VzL2F0bGFzLWJhc2ljL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBQzdCLEVBQUU7QUFDRixrRUFBa0U7QUFDbEUsbUVBQW1FO0FBQ25FLDBDQUEwQztBQUMxQyxFQUFFO0FBQ0Ysa0RBQWtEO0FBQ2xELEVBQUU7QUFDRixzRUFBc0U7QUFDdEUsb0VBQW9FO0FBQ3BFLDJFQUEyRTtBQUMzRSxzRUFBc0U7QUFDdEUsaUNBQWlDO0FBRWpDLDJDQUF1QztBQUN2QyxxQ0FBcUM7QUFHckMsZ0JBQWdCO0FBQ2hCLE1BQU0sZUFBZSxHQUFHO0lBQ3RCLFdBQVcsRUFBRSxnQkFBZ0I7Q0FDOUIsQ0FBQztBQUNGLGdCQUFnQjtBQUNoQixNQUFNLFVBQVUsR0FBRztJQUNqQixNQUFNLEVBQUUsT0FBTztJQUNmLFFBQVEsRUFBRSxZQUFZO0lBQ3RCLFFBQVEsRUFBRSxXQUFXO0lBQ3JCLEtBQUssRUFBRTtRQUNMO1lBQ0UsUUFBUSxFQUFFLFlBQVk7WUFDdEIsWUFBWSxFQUFFLE9BQU87U0FDdEI7S0FDRjtDQUNGLENBQUM7QUFDRixnQkFBZ0I7QUFDaEIsTUFBTSxlQUFlLEdBQUc7SUFDdEIsV0FBVyxFQUFFLGdCQUFnQjtJQUM3QixXQUFXLEVBQUUsWUFBWTtDQUMxQixDQUFDO0FBRUY7Ozs7O0dBS0c7QUFDSCxNQUFhLFVBQVcsU0FBUSxzQkFBUztJQTBCdkM7Ozs7OztPQU1HO0lBQ0gsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLG9DQUFvQztRQUNwQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNoRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsSUFBSSxFQUNGLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSTtnQkFDdkIsZUFBZSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDNUQsY0FBYyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsY0FBYztZQUNqRCxHQUFHLEtBQUssQ0FBQyxZQUFZO1NBQ3RCLENBQUMsQ0FBQztRQUNILHlEQUF5RDtRQUN6RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUNoRSxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87WUFDdEIsSUFBSSxFQUNGLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBSTtnQkFDdkIsZUFBZSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDNUQsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUMvQixXQUFXLEVBQUUsZUFBZSxDQUFDLFdBQVc7WUFDeEMsR0FBRyxLQUFLLENBQUMsWUFBWTtTQUN0QixDQUFDLENBQUM7UUFDSCwyQ0FBMkM7UUFDM0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUU7WUFDcEUsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLFlBQVksRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLFlBQVksSUFBSSxVQUFVLENBQUMsTUFBTTtZQUNsRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNO1lBQy9CLFFBQVEsRUFBRSxLQUFLLENBQUMsV0FBVyxFQUFFLFFBQVEsSUFBSSxVQUFVLENBQUMsUUFBUTtZQUM1RCxLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxLQUFLLElBQUksVUFBVSxDQUFDLEtBQUs7WUFDbkQsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsUUFBUSxJQUFJLFVBQVUsQ0FBQyxRQUFRO1lBQzVELEdBQUcsS0FBSyxDQUFDLFdBQVc7U0FDckIsQ0FBQyxDQUFDO1FBQ0gsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxLQUFLLENBQUMsc0JBQXNCLENBQ2xELElBQUksRUFDSixpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQzVCO1lBQ0UsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU07WUFDL0IsR0FBRyxLQUFLLENBQUMsaUJBQWlCO1NBQzNCLENBQ0YsQ0FBQztJQUNKLENBQUM7O0FBMUVILGdDQTJFQzs7O0FBRUQsU0FBUyxZQUFZO0lBQ25CLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNmLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQztJQUNwQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUMzRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29weXJpZ2h0IDIwMjMgTW9uZ29EQiBJbmNcbi8vXG4vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4vL1xuLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbi8vXG4vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4vLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4vLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbi8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgYXRsYXMgZnJvbSBcIi4uLy4uL2luZGV4XCI7XG5pbXBvcnQgeyBBdGxhc0Jhc2ljUHJvcHMgfSBmcm9tIFwiLi4vY29tbW9uL3Byb3BzXCI7XG5cbi8qKiBAdHlwZSB7Kn0gKi9cbmNvbnN0IHByb2plY3REZWZhdWx0cyA9IHtcbiAgcHJvamVjdE5hbWU6IFwiYXRsYXMtcHJvamVjdC1cIixcbn07XG4vKiogQHR5cGUgeyp9ICovXG5jb25zdCBkYkRlZmF1bHRzID0ge1xuICBkYk5hbWU6IFwiYWRtaW5cIixcbiAgdXNlcm5hbWU6IFwiYXRsYXMtdXNlclwiLFxuICBwYXNzd29yZDogXCJhdGxhcy1wd2RcIixcbiAgcm9sZXM6IFtcbiAgICB7XG4gICAgICByb2xlTmFtZTogXCJhdGxhc0FkbWluXCIsXG4gICAgICBkYXRhYmFzZU5hbWU6IFwiYWRtaW5cIixcbiAgICB9LFxuICBdLFxufTtcbi8qKiBAdHlwZSB7Kn0gKi9cbmNvbnN0IGNsdXN0ZXJEZWZhdWx0cyA9IHtcbiAgY2x1c3Rlck5hbWU6IFwiYXRsYXMtY2x1c3Rlci1cIixcbiAgY2x1c3RlclR5cGU6IFwiUkVQTElDQVNFVFwiLFxufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEBleHBvcnRcbiAqIEBjbGFzcyBBdGxhc0Jhc2ljXG4gKiBAZXh0ZW5kcyB7Q29uc3RydWN0fVxuICovXG5leHBvcnQgY2xhc3MgQXRsYXNCYXNpYyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQHR5cGUge3Byb2plY3QuQ2ZuUHJvamVjdH1cbiAgICogQG1lbWJlcm9mIEF0bGFzQmFzaWNcbiAgICovXG4gIHJlYWRvbmx5IG1Qcm9qZWN0OiBhdGxhcy5DZm5Qcm9qZWN0O1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEB0eXBlIHthdGxhcy5DZm5DbHVzdGVyfVxuICAgKiBAbWVtYmVyb2YgQXRsYXNCYXNpY1xuICAgKi9cbiAgcmVhZG9ubHkgbUNsdXN0ZXI6IGF0bGFzLkNmbkNsdXN0ZXI7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQHR5cGUge3VzZXIuQ2ZuRGF0YWJhc2VVc2VyfVxuICAgKiBAbWVtYmVyb2YgQXRsYXNCYXNpY1xuICAgKi9cbiAgcmVhZG9ubHkgbURCVXNlcjogYXRsYXMuQ2ZuRGF0YWJhc2VVc2VyO1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEB0eXBlIHtpcEFjY2Vzc0xpc3QuQ2ZuUHJvamVjdElwQWNjZXNzTGlzdH1cbiAgICogQG1lbWJlcm9mIEF0bGFzQmFzaWNcbiAgICovXG4gIHJlYWRvbmx5IGlwQWNjZXNzTGlzdDogYXRsYXMuQ2ZuUHJvamVjdElwQWNjZXNzTGlzdDtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBBdGxhc0Jhc2ljLlxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdH0gc2NvcGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkXG4gICAqIEBwYXJhbSB7QXRsYXNCYXNpY1Byb3BzfSBwcm9wc1xuICAgKiBAbWVtYmVyb2YgQXRsYXNCYXNpY1xuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEF0bGFzQmFzaWNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgLy9DcmVhdGUgYSBuZXcgTW9uZ29EQiBBdGxhcyBQcm9qZWN0XG4gICAgdGhpcy5tUHJvamVjdCA9IG5ldyBhdGxhcy5DZm5Qcm9qZWN0KHRoaXMsIFwicHJvamVjdC1cIi5jb25jYXQoaWQpLCB7XG4gICAgICBwcm9maWxlOiBwcm9wcy5wcm9maWxlLFxuICAgICAgbmFtZTpcbiAgICAgICAgcHJvcHMucHJvamVjdFByb3BzLm5hbWUgfHxcbiAgICAgICAgcHJvamVjdERlZmF1bHRzLnByb2plY3ROYW1lLmNvbmNhdChTdHJpbmcocmFuZG9tTnVtYmVyKCkpKSxcbiAgICAgIHByb2plY3RPd25lcklkOiBwcm9wcy5wcm9qZWN0UHJvcHMucHJvamVjdE93bmVySWQsXG4gICAgICAuLi5wcm9wcy5wcm9qZWN0UHJvcHMsXG4gICAgfSk7XG4gICAgLy8gQ3JlYXRlIGEgbmV3IE1vbmdvREIgQXRsYXMgQ2x1c3RlciBhbmQgcGFzcyBwcm9qZWN0IElEXG4gICAgdGhpcy5tQ2x1c3RlciA9IG5ldyBhdGxhcy5DZm5DbHVzdGVyKHRoaXMsIFwiY2x1c3Rlci1cIi5jb25jYXQoaWQpLCB7XG4gICAgICBwcm9maWxlOiBwcm9wcy5wcm9maWxlLFxuICAgICAgbmFtZTpcbiAgICAgICAgcHJvcHMuY2x1c3RlclByb3BzLm5hbWUgfHxcbiAgICAgICAgY2x1c3RlckRlZmF1bHRzLmNsdXN0ZXJOYW1lLmNvbmNhdChTdHJpbmcocmFuZG9tTnVtYmVyKCkpKSxcbiAgICAgIHByb2plY3RJZDogdGhpcy5tUHJvamVjdC5hdHRySWQsXG4gICAgICBjbHVzdGVyVHlwZTogY2x1c3RlckRlZmF1bHRzLmNsdXN0ZXJUeXBlLFxuICAgICAgLi4ucHJvcHMuY2x1c3RlclByb3BzLFxuICAgIH0pO1xuICAgIC8vIENyZWF0ZSBhIG5ldyBNb25nb0RCIEF0bGFzIERhdGFiYXNlIFVzZXJcbiAgICB0aGlzLm1EQlVzZXIgPSBuZXcgYXRsYXMuQ2ZuRGF0YWJhc2VVc2VyKHRoaXMsIFwiZGItdXNlci1cIi5jb25jYXQoaWQpLCB7XG4gICAgICBwcm9maWxlOiBwcm9wcy5wcm9maWxlLFxuICAgICAgZGF0YWJhc2VOYW1lOiBwcm9wcy5kYlVzZXJQcm9wcz8uZGF0YWJhc2VOYW1lIHx8IGRiRGVmYXVsdHMuZGJOYW1lLFxuICAgICAgcHJvamVjdElkOiB0aGlzLm1Qcm9qZWN0LmF0dHJJZCxcbiAgICAgIHVzZXJuYW1lOiBwcm9wcy5kYlVzZXJQcm9wcz8udXNlcm5hbWUgfHwgZGJEZWZhdWx0cy51c2VybmFtZSxcbiAgICAgIHJvbGVzOiBwcm9wcy5kYlVzZXJQcm9wcz8ucm9sZXMgfHwgZGJEZWZhdWx0cy5yb2xlcyxcbiAgICAgIHBhc3N3b3JkOiBwcm9wcy5kYlVzZXJQcm9wcz8ucGFzc3dvcmQgfHwgZGJEZWZhdWx0cy5wYXNzd29yZCxcbiAgICAgIC4uLnByb3BzLmRiVXNlclByb3BzLFxuICAgIH0pO1xuICAgIC8vIENyZWF0ZSBhIG5ldyBNb25nb0RCIEF0bGFzIFByb2plY3QgSVAgQWNjZXNzIExpc3RcbiAgICB0aGlzLmlwQWNjZXNzTGlzdCA9IG5ldyBhdGxhcy5DZm5Qcm9qZWN0SXBBY2Nlc3NMaXN0KFxuICAgICAgdGhpcyxcbiAgICAgIFwiaXAtYWNjZXNzLWxpc3QtXCIuY29uY2F0KGlkKSxcbiAgICAgIHtcbiAgICAgICAgcHJvZmlsZTogcHJvcHMucHJvZmlsZSxcbiAgICAgICAgcHJvamVjdElkOiB0aGlzLm1Qcm9qZWN0LmF0dHJJZCxcbiAgICAgICAgLi4ucHJvcHMuaXBBY2Nlc3NMaXN0UHJvcHMsXG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByYW5kb21OdW1iZXIoKSB7XG4gIGNvbnN0IG1pbiA9IDEwO1xuICBjb25zdCBtYXggPSA5OTk5OTk5O1xuICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbiArIDEpICsgbWluKTtcbn1cbiJdfQ==