Шаблоны CloudFormation для Глобальной базы данных Аврора - PullRequest
0 голосов
/ 30 апреля 2019

Я пытаюсь написать шаблон Cloudformation, чтобы получить AWS Global Aurora Database. Однако я не могу понять, где и как добавить глобальный идентификатор базы данных. Может ли кто-нибудь помочь фрагменту Cloudformation?

ниже мой код:

Description: RDS Aurora MySQL cluster.
Parameters:
    DatabaseName:
      Default: "testglobalaurora"
      Description: The database name 
      Type: String

    DatabaseInstanceType:
        Default: db.r4.large
        AllowedValues:
            - db.r4.large
            - db.r4.xlarge
            - db.r4.2xlarge
            - db.r4.4xlarge
            - db.r4.8xlarge
            - db.r4.16xlarge
        Description: "The instance type to use for the database."
        Type: String

    DatabasePassword:
        Default: "testglobalaurora"
        AllowedPattern: "[a-zA-Z0-9]+"
        ConstraintDescription: must contain only alphanumeric characters. Must have length 8-41.
        Description: The database admin account password. 
        MaxLength: '41'
        MinLength: '8'
        NoEcho: 'true'
        Type: String

    DatabaseUsername:
        Default: "testglobalaurora"
        AllowedPattern: "[a-zA-Z0-9]+"
        ConstraintDescription: must contain only alphanumeric characters. Must have length 1-16
        Description: The database admin account user name. 
        MaxLength: '16'
        MinLength: '1'
        Type: String

Metadata:
    AWS::CloudFormation::Interface:
        ParameterGroups:
            - Label:
                default: Database Configuration
              Parameters:
                - DatabaseInstanceType
                - DatabaseName
                - DatabaseUsername
                - DatabasePassword
        ParameterLabels:
            DatabaseName:
              default: Database name
            DatabaseInstanceType:
                default: Database Instance Type
            DatabasePassword:
                default: Database Password
            DatabaseUsername:
                default: Database Username

Resources:
    ParameterGroup:
        Type: "AWS::RDS::DBParameterGroup"
        Properties: 
            Description: testglobalaurora DB parameter group 
            Family: aurora5.6
            Parameters:
                max_connections: 300

    DatabaseCluster:
        Type: AWS::RDS::DBCluster
        Properties:
            Engine: aurora
            EngineMode: global

            MasterUsername:
              Ref: DatabaseUsername
            MasterUserPassword:
              Ref: DatabasePassword
            BackupRetentionPeriod: 35
            PreferredBackupWindow: 02:00-03:00
            PreferredMaintenanceWindow: mon:03:00-mon:04:00
            VpcSecurityGroupIds:
              - Ref: DatabaseSecurityGroup

    DatabaseInstance:
        Type: AWS::RDS::DBInstance
        Properties:
            Engine: aurora
            EngineVersion : 5.6.10a
            DBClusterIdentifier:
                Ref: DatabaseCluster
            DBInstanceClass:
                Ref: DatabaseInstanceType 
            DBParameterGroupName: !Ref ParameterGroup
            PubliclyAccessible: "true"
            DBInstanceIdentifier: !Ref DatabaseName

    DatabaseSecurityGroup:
        Type: AWS::EC2::SecurityGroup
        Properties: 
            VpcId: vpc-55378f2f
            GroupDescription: Access to database
            SecurityGroupIngress:
                - CidrIp: 0.0.0.0/0
                  FromPort: 3306
                  ToPort: 3306
                  IpProtocol: tcp
            Tags: 
                - Key: Name
                  Value: !Sub ${DatabaseName}-security-group

Outputs:
    DatabaseEndpoint: 
        Description: The database endpoint
        Value: !GetAtt DatabaseCluster.Endpoint.Address

    DatabasePort:
        Description: The database port
        Value: !GetAtt DatabaseCluster.Endpoint.Port

Мой вывод «
global-database-1-cluster-1 Региональное сияние MySQL 5.6.10a
global-database-1-instance-1 Writer Aurora MySQL 5.6.10a «

Фактический выход «
тест-глобал Аврора MySQL 5.6.10a global-database-1-cluster-1 Первичная Aurora MySQL 5.6.10a
global-database-1-instance-1 Writer Aurora MySQL 5.6.10a «

1 Ответ

0 голосов
/ 26 мая 2019

Вам необходимо создать глобальный кластер с идентификатором и использовать этот идентификатор в своем кластере БД.Эта часть отсутствует в вашем шаблоне CFN.

Что-то вроде:

GlobalCluster:
        Type: AWS::RDS::GlobalCluster
        Properties:
            Engine: aurora
            EngineVersion: 5.6.10a
            Region: us-east-1

, а затем использовать его в своих DatabaseCluster свойствах, используя GlobalClusterIdentifier: <id>

Однако, посмотрите официальные документы для типов CFN [1] для RDS, это не перечисляет GlobalCluster.Так что либо это просто не задокументировано, либо этот тип ресурса не зарегистрирован в Cloudformation.Если последнее имеет место, то вы можете открыть службу поддержки и добавить запрос о функции.

[1] https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/AWS_RDS.html

...