使用Clioupformation在AWS上创建Amazon DocumentDB(MongoDB)数据库

时间:2020-02-23 14:40:46  来源:igfitidea点击:

本文帮助用户使用CloudFormation模板使用单个主实例创建文档数据库群集。
当用户想要在AWS(Amazon Web服务)上运行Mongo数据库工作负载时,文档数据库很重要。
Amazon DocumentDB(具有MongoDB兼容性)是一个可扩展,完全托管,快速且高度可用的文档数据库服务,支持MongoDB工作负载。

此托管的非关系数据库服务使得存储,查询和索引JSON数据更容易。
此数据库服务是从上占设计的,以保证在规模上操作任务关键的MongoDB工作负载时所需的可伸缩性,性能和可用性。

使用CloudFormation模板

请找到下面的CloudFormation模板。
模板将创建:数据库实例安全组.Database子网组。
数据库参数组.Document数据库Cluster.database实例。

--
AWSTemplateFormatVersion: "2010-09-09"
Description: Template to Create a document DB parameter group, subnet group and cluster
Parameters:
  VPC:
    Type: String
    Description: The VPC to create the cluster
    Default: vpc-ID
  PrivateSubnet01:
    Type: String
    Description: The subnet for the DB cluster
    Default: subnet-ID
  PrivateSubnet02:
    Type: String
    Description: The subnet for the DB cluster
    Default: subnet-ID
  MasterUsername:
    Type: String
    Description: The username for our database.
  
  MasterUserPassword:
    Type: String
    Description: The password for the database.
    "NoEcho": true
Resources:
   DBSecurityGroup:
    Type: AWS::EC2::SecurityGroup
    Properties:
      GroupDescription: "DB instances security group"
      GroupName: "test-db-instance-SG"
      VpcId: !Ref VPC
      SecurityGroupIngress: 
        - 
          CidrIp: "*.*.*.*/32"
          FromPort: 22016
          IpProtocol: "tcp"
          ToPort: 22016
      SecurityGroupEgress: 
        - 
          CidrIp: "0.0.0.0/0"
          IpProtocol: "-1"
      
   DBSubnetGroup: 
    Type: AWS::DocDB::DBSubnetGroup
    Properties: 
      DBSubnetGroupDescription: "test document db subnet group"
      DBSubnetGroupName: "eu-central-1-test-db-subnet-group"
      SubnetIds: 
        - !Ref PrivateSubnet01
        - !Ref PrivateSubnet02
      Tags: 
        - Key: Name
          Value: eu-central-1-test-db-subnet-group
        - Key: createdBy
          Value: Maureen Barasa
        - Key: Project
          Value: test-blog
        - Key: Environment
          Value: test
   DBParameterGroup:
    Type: AWS::DocDB::DBClusterParameterGroup
    Properties:
      Description: "our test document db parameter group"
      Family: docdb3.6
      Name: test-db-parameter-group
      Parameters: 
        audit_logs: "disabled"
        tls: "enabled"
        ttl_monitor: "enabled"
      Tags: 
        - Key: Name
          Value: eu-central-1-test-db-cluster
        - Key: createdBy
          Value: Maureen Barasa
        - Key: Project
          Value: test-blog
        - Key: Environment
          Value: test
   DBCluster:
    Type: AWS::DocDB::DBCluster
    Properties: 
      BackupRetentionPeriod : 5
      DBClusterIdentifier : eu-central-1-test-db-cluster
      DBClusterParameterGroupName : !Ref DBParameterGroup
      DBSubnetGroupName : !Ref DBSubnetGroup
      MasterUsername : !Ref MasterUsername
      MasterUserPassword : !Ref MasterUserPassword
      Port : "27017"
      PreferredBackupWindow : "23:00-23:59"
      PreferredMaintenanceWindow : "sun:00:00-sun:05:00"
      VpcSecurityGroupIds:
        - !Ref DBSecurityGroup
      StorageEncrypted : true
      Tags: 
        - Key: Name
          Value: eu-central-1-test-db-cluster
        - Key: createdBy
          Value: Maureen Barasa
        - Key: Project
          Value: test-blog
        - Key: Environment
          Value: test
   DBInstance:
    Type: AWS::DocDB::DBInstance
    Properties:
      AutoMinorVersionUpgrade: true
      AvailabilityZone: "eu-west-1a"
      DBClusterIdentifier: !Ref DBCluster
      DBInstanceClass: "db.t3.medium"
      DBInstanceIdentifier: "test-cluster-instance-1"
      PreferredMaintenanceWindow: "sun:00:00-sun:05:00"
      Tags: 
        - Key: Name
          Value: eu-central-1-test-db-instance
        - Key: createdBy
          Value: Maureen Barasa
        - Key: Project
          Value: test-blog
        - Key: Environment
          Value: test
Outputs:
   Cluster:
    Description: The DB Cluster Name
    Value: !Ref DBCluster
    
   SubnetGroup:
    Description: The db subnet group name 
    Value: !Ref DBSubnetGroup
   ParameterGroup:
    Description: The db subnet group name 
    Value: !Ref DBParameterGroup

我们可以使用CloudFormation Stack部署CloudFormation模板。

模板解释说明

模板包含3个部分。
参数,资源和输出部分。

参数:

在"资源"部分中,我们要求用户输入其模板的动态变量。
对于我们的情况,用户应使用各自的VPC和子网ID替换VPC和子网ID。
此外,系统将提示用户输入其数据库主用户名和密码。
请确保我们不使用管理员作为主用户名。

资源:

其中用户定义了要创建的AWS资源。
对于我们的情况,我们首先创建数据库实例安全组。
用户应该更改安全组入口以反映他们希望访问数据库实例的CIDR IP块.Next,它创建了DB子网和参数组。
子网组定义了创建数据库群集和实例的子网。
参数组允许我们管理数据库引擎配置。
用户应该通过参数组属性并更改为特定要求。
此外,用户应注意根据需要进行自定义的名称和标记。
然后创建文档数据库群集。
就像上面一样,用户应该通过所有群集属性并更改它们以匹配它们的要求。
最后,创建数据库实例。
但是,用户应该通过模板,更改可用性区域,实例类以及首选维护需要匹配其特定需求。
此外,应自定义数据库实例标识符和标签以满足用户要求。

输出:

模板的输出部分指示CloudFormation输出所创建的资源的名称。
例如,在我们的情况下,我们指示模板输出群集,子网和参数组的名称。