--- AWSTemplateFormatVersion: '2010-09-09' Description: MongoDB Atlas AWS Partner Solution with Private Endpoint. (qs-1tq8f0hrt) Metadata: cfn-lint: { config: { ignore_checks: [ W9002, W9003, W9006, E3001, E1010 ] } } AWS::CloudFormation::Interface: ParameterGroups: - Label: default: Network Configuration Parameters: - VPCCIDR - PrivateSubnetCIDR - VPCRegion - Label: default: MongoDB Atlas ApiKey Configuration Parameters: - Profile - OrgId - Label: default: MongoDB Atlas Configuration Parameters: - ProjectName - ClusterName - ClusterRegion - ClusterInstanceSize - DatabaseUserRoleDatabaseName - ActivateMongoDBResources - AvailabilityZone - DatabaseUserName - DatabasePassword - Label: default: AWS Quick Start configuration Parameters: - QSS3BucketName - QSS3KeyPrefix - QSS3BucketRegion ParameterLabels: Profile: default: A secret with the name cfn/atlas/profile/{Profile} OrgId: default: MongoDB Atlas API OrgId ProjectName: default: Name of new Atlas Project ClusterName: default: Name of new cluster ClusterRegion: default: The AWS Region for Atlas Cluster ClusterInstanceSize: default: MongoDB Atlas Instance Size DatabaseUserRoleDatabaseName: default: MongoDB Atlas Database Name ActivateMongoDBResources: default: Activate MongoDB Atlas CloudFormation resources VPCCIDR: default: VPC CIDR. PrivateSubnetCIDR: default: Private subnet CIDR AvailabilityZone: default: AZ fo subnet VPCRegion: default: The AWS Region for VPC private endpoint. DatabaseUserName: default: MongoDB Atlas Database User Name DatabasePassword: default: MongoDB Atlas Database User Password Parameters: Profile: Description: "A secret with the cfn/atlas/profile/{Profile}" Type: String Default: "default" OrgId: Description: "Your MongoDB Cloud Organization Id" Type: String Default: "OrgId" ProjectName: Description: "The name of the project." Type: String Default: "aws-quickstart-pvt" ClusterName: Description: Name of the cluster as it appears in Atlas. Once the cluster is created, its name cannot be changed. Type: String Default: "Cluster-1" ClusterInstanceSize: Default: "M10" Description: Atlas provides different cluster tiers, each with a default storage capacity and RAM size. The cluster you select is used for all the data-bearing hosts in your cluster tier. See https://docs.atlas.mongodb.com/reference/amazon-aws/#amazon-aws. Type: String AllowedValues: - "M10" - "M20" - "M30" - "M40" - "R40" - "M40_NVME" - "M50" - "R50" - "M50_NVME" - "M60" - "R60" - "M60_NVME" - "M80" - "R80" - "M80_NVME" - "M140" - "M200" - "R200" - "M200_NVME" - "M300" - "R300" - "R400" - "M400_NVME" - "R700" ClusterRegion: Default: US_EAST_1 Description: AWS Region where the Atlas database runs. Type: String AllowedValues: - "US_EAST_1" - "US_EAST_2" - "CA_CENTRAL_1" - "US_WEST_1" - "US_WEST_2" - "SA_EAST_1" - "AP_SOUTH_1" - "AP_EAST_1" - "AP_SOUTHEAST_1" - "AP_SOUTHEAST_2" - "AP_SOUTHEAST_3" - "AP_NORTHEAST_1" - "AP_NORTHEAST_2" - "AP_NORTHEAST_3" - "EU_CENTRAL_1" - "EU_WEST_1" - "EU_NORTH_1" - "EU_WEST_2" - "EU_WEST_3" - "EU_SOUTH_1" - "ME_SOUTH_1" - "AF_SOUTH_1" ClusterMongoDBMajorVersion: Description: The version of MongoDB Type: String Default: "5.0" AllowedValues: - "4.4" - "5.0" - "6.0" DatabaseUserRoleDatabaseName: Description: Database User Role Database Name Type: String Default: "test" VPCRegion: Default: "us-east-1" Description: The AWS Region where the Atlas DB Cluster will run. Type: String AllowedValues: - "us-east-1" - "us-east-2" - "ca-central-1" - "us-west-1" - "us-west-2" - "sa-east-1" - "ap-south-1" - "ap-east-2" - "ap-southeast-1" - "ap-southeast-2" - "ap-southeast-3" - "ap-northeast-1" - "ap-northeast-2" - "ap-northeast-3" - "eu-central-1" - "eu-west-1" - "eu-north-1" - "eu-west-1" - "eu-west-2" - "eu-west-3" - "eu-south-1" - "me-south-1" - "af-south-1" VPCCIDR: AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$ ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16–28. Default: 10.0.0.0/16 Description: CIDR block for the VPC. Type: String ActivateMongoDBResources: Description: 'Enter "Yes" to activate MongoDB Atlas CloudFormation resource types. If you already activated resources in your AWS Region, enter "No."' Type: String Default: "Yes" AllowedValues: - "No" - "Yes" QSS3BucketName: AllowedPattern: ^[0-9a-zA-Z]+([0-9a-zA-Z-]*[0-9a-zA-Z])*$ ConstraintDescription: Quick Start bucket name can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-). Default: aws-quickstart Description: S3 bucket name for the Quick Start assets. This string can include numbers, lowercase letters, uppercase letters, and hyphens (-). It cannot start or end with a hyphen (-). Type: String QSS3KeyPrefix: AllowedPattern: ^[0-9a-zA-Z-/.]*$ ConstraintDescription: Quick Start key prefix can include numbers, lowercase letters, uppercase letters, hyphens (-), and forward slashes (/). Default: quickstart-mongodb-atlas/ Description: S3 key prefix for the Quick Start assets. Quick Start key prefix can include numbers, lowercase letters, uppercase letters, hyphens (-), and forward slashes (/). Type: String QSS3BucketRegion: Default: 'us-east-1' Description: AWS Region where the Quick Start S3 bucket (QSS3BucketName) is hosted. If you use your own bucket, you must specify this value. Type: String PrivateSubnetCIDR: AllowedPattern: ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(1[6-9]|2[0-8]))$ ConstraintDescription: CIDR block parameter must be in the form x.x.x.x/16–28. Default: 10.0.0.0/19 Description: CIDR block for the private subnet, located in Availability Zone 1. Type: String AvailabilityZone: Description: AZ for subnet creation Type: String Default: "us-east-1a" DatabaseUserName: Description: MongoDB Atlas Database User Name. Type: String Default: "testUser" DatabasePassword: Description: MongoDB Atlas Database User Password. Type: String NoEcho: true Conditions: UsingDefaultBucket: !Equals [!Ref QSS3BucketName, 'aws-quickstart'] ActivateResources: !Equals [!Ref ActivateMongoDBResources, 'Yes'] Resources: AtlasCluster: Type: AWS::CloudFormation::Stack Metadata: PseudoDependsOn: !If - ActivateResources - - !Ref ActivateAtlasResources - '' Properties: TemplateURL: !Sub - 'https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/mongodb-atlas.base.template.yaml' - S3Region: !If [ UsingDefaultBucket, !Ref 'AWS::Region', !Ref QSS3BucketRegion ] S3Bucket: !If [ UsingDefaultBucket, !Sub '${QSS3BucketName}-${AWS::Region}', !Ref QSS3BucketName ] Parameters: ClusterInstanceSize: !Ref ClusterInstanceSize ClusterMongoDBMajorVersion: !Ref ClusterMongoDBMajorVersion ProjectName: !Ref ProjectName ClusterName: !Ref ClusterName ClusterRegion: !Ref ClusterRegion OrgId: !Ref OrgId Profile: !Ref Profile PrivateSubnetCIDR: !Ref PrivateSubnetCIDR VPCCIDR: !Ref VPCCIDR AvailabilityZone: !Ref AvailabilityZone VPCRegion: !Ref VPCRegion DatabaseUserRoleDatabaseName: !Ref DatabaseUserRoleDatabaseName DatabaseUserName: !Ref DatabaseUserName DatabasePassword: !Ref DatabasePassword ActivateAtlasResources: Condition: ActivateResources Type: AWS::CloudFormation::Stack Properties: TemplateURL: !Sub - 'https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/activate-mongodb-atlas-resources.template.yaml' - S3Region: !If [ UsingDefaultBucket, !Ref 'AWS::Region', !Ref QSS3BucketRegion ] S3Bucket: !If [ UsingDefaultBucket, !Sub '${QSS3BucketName}-${AWS::Region}', !Ref QSS3BucketName ] Parameters: Region: !Ref QSS3BucketRegion