amazon-web-servicesaws-cloudformationamazon-rdsamazon-auroraaws-aurora-serverless

Cannot create PostgreSQL with CloudFormation but works with web interface


I'm trying to create a Serverless V2 Aurora PostgreSQL cluster and an instance with CloudFormation.

It works fine when using the AWS web interface but when using CloudFormation (trough Serverless) I get

Error: CREATE_FAILED: auroraCluster (AWS::RDS::DBCluster) Resource handler returned message: "The engine mode serverless you requested is currently unavailable.

CF Template:

# Database
auroraCluster:
  Type: AWS::RDS::DBCluster
  Properties: 
    AutoMinorVersionUpgrade: 'true'
    AvailabilityZones:
      - eu-north-1a
      - eu-north-1b
      - eu-north-1c
    DatabaseName:
      publisher
    DeletionProtection: !If [isProd, 'true', 'false']
    Engine: aurora-postgresql
    EngineMode: serverless
    EngineVersion: '14.6'

auroraInstance:
  Type: AWS::RDS::DBInstance
  Properties: 
    AllowMajorVersionUpgrade: !If [isProd, 'true', 'false']
    AutoMinorVersionUpgrade: 'true'
    AvailabilityZone: !Sub ${AWS::Region}a
    DBClusterIdentifier: !Ref auroraCluster
    DBInstanceIdentifier: ${self:service}-rds-${sls:stage}
    DeleteAutomatedBackups: !If [isProd, 'false', 'true']
    DeletionProtection: !If [isProd, 'true', 'false']
    Engine: aurora-postgresql
    ManageMasterUserPassword: 'true'
    MasterUsername: postgres
    MasterUserSecret:
      SecretArn: !Ref secretRds

Solution

  • Serverless aurora for postgress 14.6 is only supported for serverless v2. This requires different setup then you have. For example, you have to provide ServerlessV2ScalingConfiguration, delete EngineMode and use DBInstanceClass set to db.serverless. For example:

    Resources:
    
        auroraCluster:
            Type: AWS::RDS::DBCluster
            Properties:
                #AutoMinorVersionUpgrade: 'true'
                DatabaseName:
                    publisher
                Engine: aurora-postgresql
                EngineVersion: '14.6'
                MasterUsername: "trdyd"
                MasterUserPassword: "gfsdg344231"
                ServerlessV2ScalingConfiguration:
                    MinCapacity: 1
                    MaxCapacity: 4
    
    
        auroraInstance:
            Type: 'AWS::RDS::DBInstance'
            Properties:
                Engine: aurora-postgresql
                DBInstanceClass: db.serverless
                DBClusterIdentifier: !Ref auroraCluster
    

    Obviously you have to adjust the above example, which works, to what exactly you need, taking into account serverless v2 capabilities.