--- AWSTemplateFormatVersion: '2010-09-09' Description: "MongoDB Atlas AWS CloudFormation Quick Start with VPC peering (qs-1rkorheg3)." Metadata: cfn-lint: config: ignore_checks: - W9006 # temporary to get rid of warnings QuickStartDocumentation: EntrypointName: Parameters for deploying MongoDB Atlas with VPC peering into a new VPC. Order: "2" AWS::CloudFormation::Interface: ParameterGroups: - Label: default: Network configuration Parameters: - AvailabilityZones - AtlasCidrBlock - PrivateSubnet1CIDR - PrivateSubnet2CIDR - PublicSubnet1CIDR - PublicSubnet2CIDR - RouteTableCIDRBlock - Label: default: MongoDB Atlas API key configuration Parameters: - Profile - OrgId - Label: default: MongoDB Atlas configuration Parameters: - ActivateMongoDBResources - ProjectName - ClusterMongoDBMajorVersion - ClusterName - ClusterRegion - ClusterInstanceSize - DatabaseUserName - DatabasePassword - Label: default: AWS Quick Start configuration Parameters: - QSS3BucketName - QSS3KeyPrefix - QSS3BucketRegion ParameterLabels: AvailabilityZones: default: Availability Zones VPCCIDR: default: VPC CIDR. AtlasCidrBlock: default: AtlasCidrBlock - IP addresses expressed in (CIDR) notation. PrivateSubnet1CIDR: default: Private subnet 1 CIDR PrivateSubnet2CIDR: default: Private subnet 2 CIDR PublicSubnet1CIDR: default: Public subnet 1 CIDR PublicSubnet2CIDR: default: Public subnet 2 CIDR QSS3BucketName: default: Quick Start S3 bucket name QSS3KeyPrefix: default: Quick Start S3 key prefix QSS3BucketRegion: default: Quick Start S3 bucket Region RouteTableCIDRBlock: default: VPC peering CIDR block Profile: default: A secret with name cfn/atlas/profile/{Profile} OrgId: default: MongoDB Atlas API organization ID ActivateMongoDBResources: default: Activate MongoDB Atlas CloudFormation resources ProjectName: default: Name of new Atlas project ClusterMongoDBMajorVersion: default: MongoDB version ClusterName: default: Name of new cluster ClusterRegion: default: AWS Region for Atlas cluster ClusterInstanceSize: default: MongoDB Atlas instance size DatabaseUserName: default: MongoDB Atlas Database User Name DatabasePassword: default: MongoDB Atlas Database User Password Parameters: AvailabilityZones: Description: List of Availability Zones to use for the VPC subnets. You can specify two Availability Zones. Type: List PrivateSubnet1CIDR: 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 PrivateSubnet2CIDR: 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.32.0/19 Description: CIDR block for the private subnet, located in Availability Zone 2. Type: String PublicSubnet1CIDR: 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.128.0/20 Description: CIDR block for public (DMZ) subnet 1, located in Availability Zone 1. Type: String PublicSubnet2CIDR: 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.144.0/20 Description: CIDR block for public (DMZ) subnet 2, located in Availability Zone 2. Type: String 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 AtlasCidrBlock: Type: String Description: AtlasCidrBlock - IP addresses expressed in (CIDR) notation. Default: 10.8.0.0/21 Profile: Description: "A secret with name cfn/atlas/profile/{Profile}" Type: String Default: "default" OrgId: Description: "Your MongoDB cloud organization ID." Type: String Default: "OrgId" ProjectName: Description: "Name of the project." Type: String Default: "aws-quickstart-newvpc" ClusterName: Description: Name of the cluster as it appears in Atlas. This name cannot be changed after the cluster is created. 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 choose is used for all 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: MongoDB version Type: String Default: "5.0" AllowedValues: - "4.4" - "5.0" - "6.0" 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" RouteTableCIDRBlock: Type: String Description: CIDR block for VPC peering. 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 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'] Resources: VPCStack: Type: AWS::CloudFormation::Stack Properties: TemplateURL: Fn::Sub: - https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}submodules/quickstart-aws-vpc/templates/aws-vpc.template.yaml - S3Region: !If [UsingDefaultBucket, !Ref 'AWS::Region', !Ref QSS3BucketRegion] S3Bucket: !If [UsingDefaultBucket, !Sub '${QSS3BucketName}-${AWS::Region}', !Ref QSS3BucketName] Parameters: AvailabilityZones: Fn::Join: - ',' - !Ref AvailabilityZones NumberOfAZs: '2' PrivateSubnet1ACIDR: !Ref PrivateSubnet1CIDR PrivateSubnet2ACIDR: !Ref PrivateSubnet2CIDR PublicSubnet1CIDR: !Ref PublicSubnet1CIDR PublicSubnet2CIDR: !Ref PublicSubnet2CIDR VPCCIDR: !Ref VPCCIDR Atlas: Type: AWS::CloudFormation::Stack Properties: TemplateURL: !Sub - 'https://${S3Bucket}.s3.${S3Region}.${AWS::URLSuffix}/${QSS3KeyPrefix}templates/mongodb-atlas-peering-existingvpc.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 RouteTableCIDRBlock: !Ref RouteTableCIDRBlock VPC: !GetAtt VPCStack.Outputs.VPCID ActivateMongoDBResources: !Ref ActivateMongoDBResources QSS3BucketName: !Ref QSS3BucketName QSS3BucketRegion: !Ref QSS3BucketRegion QSS3KeyPrefix: !Ref QSS3KeyPrefix DatabaseUserName: !Ref DatabaseUserName DatabasePassword: !Ref DatabasePassword AtlasCidrBlock: !Ref AtlasCidrBlock Outputs: AtlasIAMRole: Description: "ARN for AWS IAM role database cluster access." Value: !GetAtt "Atlas.Outputs.AtlasIAMRole" AtlasDatabaseUser: Description: "Atlas database user, configured for AWS IAM role access." Value: !GetAtt "Atlas.Outputs.AtlasDatabaseUser" AtlasProject: Description: "Information about your Atlas deployment." Value: !GetAtt "Atlas.Outputs.AtlasProject" AtlasCluster: Description: "Information about your Atlas cluster." Value: !GetAtt "Atlas.Outputs.AtlasCluster" ClusterState: Description: "State of your MongoDB cluster." Value: !GetAtt "Atlas.Outputs.ClusterState" ClusterSrvAddress: Description: "Hostname for the mongodb+srv:// connection string." Value: !GetAtt "Atlas.Outputs.ClusterSrvAddress" AtlasNetworkPeering: Description: "Information about the network peering connection." Value: !GetAtt "Atlas.Outputs.AtlasNetworkPeering"