diff --git a/aurora-mysql.cfhighlander.rb b/aurora-mysql.cfhighlander.rb index 4aa57b2..98c5905 100644 --- a/aurora-mysql.cfhighlander.rb +++ b/aurora-mysql.cfhighlander.rb @@ -17,6 +17,7 @@ ComponentParam 'StorageType', 'aurora', allowedValues: ['aurora', 'aurora-iopt1'] ComponentParam 'EnableHttpEndpoint', 'false', allowedValues: ['true', 'false'] ComponentParam 'EnableReader', 'false' + ComponentParam 'ReaderOwnParameterGroup', 'false' ComponentParam 'ReaderPromotionTier', 1, allowedValues: [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] ComponentParam 'BacktrackWindow', 0 diff --git a/aurora-mysql.cfndsl.rb b/aurora-mysql.cfndsl.rb index 172dbf4..06cdc00 100644 --- a/aurora-mysql.cfndsl.rb +++ b/aurora-mysql.cfndsl.rb @@ -11,6 +11,7 @@ Condition("EnableCloudwatchLogsExports", FnNot(FnEquals(Ref(:EnableCloudwatchLogsExports), ''))) Condition("EnableLocalWriteForwarding", FnEquals(Ref(:EnableLocalWriteForwarding), 'true')) Condition("EnableReader", FnEquals(Ref(:EnableReader), 'true')) + Condition("EnableReaderOwnParameterGroup", FnAnd([FnEquals(Ref(:ReaderOwnParameterGroup), 'true'), FnEquals(Ref(:EnableReader), 'true')])) Condition("IsWriterServerless", FnEquals(Ref(:WriterInstanceType), 'db.serverless')) Output('IsWriterServerless') { @@ -92,11 +93,17 @@ RDS_DBParameterGroup(:DBInstanceParameterGroup) { Description FnJoin(' ', [ Ref(:EnvironmentName), external_parameters[:component_name], 'instance parameter group' ]) Family external_parameters[:family] - Parameters external_parameters[:instance_parameters] + Parameters external_parameters.fetch(:instance_parameters, {}) Tags tags + [{ Key: 'Name', Value: FnJoin('-', [ Ref(:EnvironmentName), external_parameters[:component_name], 'instance-parameter-group' ])}] } - + RDS_DBParameterGroup(:DBReaderInstanceParameterGroup) { + Condition(:EnableReaderOwnParameterGroup) + Description FnJoin(' ', [ Ref(:EnvironmentName), external_parameters[:component_name], 'reader instance parameter group' ]) + Family external_parameters[:family] + Parameters external_parameters.fetch(:reader_instance_parameters, {}) + Tags tags + [{ Key: 'Name', Value: FnJoin('-', [ Ref(:EnvironmentName), external_parameters[:component_name], 'reader-instance-parameter-group' ])}] + } RDS_DBCluster(:DBCluster) { Engine external_parameters[:engine] @@ -153,7 +160,7 @@ RDS_DBInstance(:ServerlessDBInstanceReader) { Condition(:EnableReader) DBSubnetGroupName Ref(:DBClusterSubnetGroup) - DBParameterGroupName Ref(:DBInstanceParameterGroup) + DBParameterGroupName FnIf(:EnableReaderOwnParameterGroup, Ref(:DBReaderInstanceParameterGroup), Ref(:DBInstanceParameterGroup)) Engine external_parameters[:engine] DBClusterIdentifier Ref(:DBCluster) AutoMinorVersionUpgrade minor_upgrade unless minor_upgrade.nil? @@ -181,7 +188,7 @@ RDS_DBInstance(:DBClusterInstanceReader) { Condition(:EnableReader) DBSubnetGroupName Ref(:DBClusterSubnetGroup) - DBParameterGroupName Ref(:DBInstanceParameterGroup) + DBParameterGroupName FnIf(:EnableReaderOwnParameterGroup, Ref(:DBReaderInstanceParameterGroup), Ref(:DBInstanceParameterGroup)) Engine external_parameters[:engine] DBClusterIdentifier Ref(:DBCluster) AutoMinorVersionUpgrade minor_upgrade unless minor_upgrade.nil?