'Create Aurora Cluster with Babelfish enables using Cloud Formation

Is there any way we can create an Aurora RDS Cluster Multi-AZ with Babelfish enabled using cloud formation. We can create it using [console or cli][1]. However, I want to create it using Cloudformation. I am not finding the options in the below available options.

DBCluster:
Type: AWS::RDS::DBCluster
Properties:
  AssociatedRoles:
    AssociatedRoles
  AvailabilityZones:
    AvailabilityZones
  BacktrackWindow: Number
  BackupRetentionPeriod: Number
  CopyTagsToSnapshot: false
  DBClusterIdentifier: "String"
  DBClusterParameterGroupName: "String"
  DBSubnetGroupName: "String"
  DatabaseName: "String"
  DeletionProtection: false
  EnableCloudwatchLogsExports:
    EnableCloudwatchLogsExports
  EnableHttpEndpoint: false
  EnableIAMDatabaseAuthentication: false
  Engine: "String" # Required
  EngineMode: "String"
  EngineVersion: "String"
  GlobalClusterIdentifier: "String"
  KmsKeyId: "String"
  MasterUserPassword: "String"
  MasterUsername: "String"
  Port: Number
  PreferredBackupWindow: "String"
  PreferredMaintenanceWindow: "String"
  ReplicationSourceIdentifier: "String"
  RestoreType: "String"
  ScalingConfiguration:
    AutoPause: false
    MaxCapacity: Number
    MinCapacity: Number
    SecondsUntilAutoPause: Number
  SnapshotIdentifier: "Number"
  SourceDBClusterIdentifier: "Number"
  SourceRegion: "Number"
  StorageEncrypted: false
  Tags:
    Tags
  UseLatestRestorableTime: false
  VpcSecurityGroupIds:
    VpcSecurityGroupIds

Not even at instance level

DBInstance:
Type: AWS::RDS::DBInstance
Properties:
  AllocatedStorage: "String"
  AllowMajorVersionUpgrade: false
  AssociatedRoles:
    AssociatedRoles
  AutoMinorVersionUpgrade: false
  AvailabilityZone: "String"
  BackupRetentionPeriod: Number
  CACertificateIdentifier: "String"
  CharacterSetName: "String"
  CopyTagsToSnapshot: false
  DBClusterIdentifier: "String"
  DBInstanceClass: "String" # Required
  DBInstanceIdentifier: "String"
  DBName: "String"
  DBParameterGroupName: "String"
  DBSecurityGroups:
    DBSecurityGroups
  DBSnapshotIdentifier: "String"
  DBSubnetGroupName: "String"
  DeleteAutomatedBackups: false
  DeletionProtection: false
  Domain: "String"
  DomainIAMRoleName: "String"
  EnableCloudwatchLogsExports:
    EnableCloudwatchLogsExports
  EnableIAMDatabaseAuthentication: false
  EnablePerformanceInsights: false
  Engine: "String"
  EngineVersion: "String"
  Iops: Number
  KmsKeyId: "String"
  LicenseModel: "String"
  MasterUserPassword: "String"
  MasterUsername: "String"
  MaxAllocatedStorage: Number
  MonitoringInterval: Number
  MonitoringRoleArn: "String"
  MultiAZ: false
  OptionGroupName: "String"
  PerformanceInsightsKMSKeyId: "String"
  PerformanceInsightsRetentionPeriod: Number
  Port: "String"
  PreferredBackupWindow: "String"
  PreferredMaintenanceWindow: "String"
  ProcessorFeatures:
    ProcessorFeatures
  PromotionTier: Number
  PubliclyAccessible: false
  SourceDBInstanceIdentifier: "String"
  SourceRegion: "String"
  StorageEncrypted: false
  StorageType: "String"
  Tags:
    Tags
  Timezone: "String"
  UseDefaultProcessorFeatures: false
  VPCSecurityGroups:
    VPCSecurityGroups

Thank you guys for your time and help. [1]: https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/babelfish-create.html



Solution 1:[1]

Well, I got the answer to this question from somewhere else and it is the same as @SilentSteel mentioned in his comment. You have to create a new DB Cluster Parameter group with babel fish option 'on' and assign that parameter group to the cluster. However, babel fish is only supported in postgresql13 and later versions.

RDSClusterParameterGroupforBF:
Type: AWS::RDS::DBClusterParameterGroup
Properties:
  Description: "Parameter Group for adding BableFish support in Aurora PostgreSQL" # Required
  Family: "aurora-postgresql13" # Required
  Parameters:
    rds.babelfish_status: 'on'

Then in the cluster you will assign this using

RDSCluster:
Type: 'AWS::RDS::DBCluster'
Properties:
  MasterUsername: !Join ['', ['{{resolve:secretsmanager:', !Ref MyRDSSecret, ':SecretString:username}}' ]]
  MasterUserPassword: !Join ['', ['{{resolve:secretsmanager:', !Ref MyRDSSecret, ':SecretString:password}}' ]]
  DBClusterIdentifier: aurora-postgresql-cluster
  Engine: aurora-postgresql
  EngineVersion: '13.6'
  EngineMode: provisioned
  **DBClusterParameterGroupName: !Ref RDSClusterParameterGroupforBF**
  DBSubnetGroupName: !Ref AuroraDBSubnetGroup1
  DatabaseName: Sample
  Port: '5432'
  VpcSecurityGroupIds:
    - Ref: DatabaseSecurityGroup
  EnableCloudwatchLogsExports:
    - postgresql
  Tags: 
    - Key: Name
      Value: !Sub ${EnvironmentName} Aurora DB Cluster1

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Ali Mohsan