Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions packages/aws-cdk-lib/aws-rds/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1245,6 +1245,7 @@ new rds.OptionGroup(this, 'Options', {
engine: rds.DatabaseInstanceEngine.oracleSe2({
version: rds.OracleEngineVersion.VER_19,
}),
optionGroupName: 'MyCustomOptionGroup', // Optional - custom name for the option group
configurations: [
{
name: 'OEM',
Expand Down
11 changes: 11 additions & 0 deletions packages/aws-cdk-lib/aws-rds/lib/option-group.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,13 @@ export interface OptionGroupProps {
*/
readonly engine: IInstanceEngine;

/**
* The name of this option group.
*
* @default - CloudFormation-generated name
*/
readonly optionGroupName?: string;

/**
* A description of the option group.
*
Expand Down Expand Up @@ -127,6 +134,7 @@ export class OptionGroup extends Resource implements IOptionGroup {
public readonly optionConnections: { [key: string]: ec2.Connections } = {};

private readonly configurations: OptionConfiguration[] = [];
private readonly optionGroupNameProp?: string;

constructor(scope: Construct, id: string, props: OptionGroupProps) {
super(scope, id);
Expand All @@ -140,11 +148,14 @@ export class OptionGroup extends Resource implements IOptionGroup {

props.configurations.forEach(config => this.addConfiguration(config));

this.optionGroupNameProp = props.optionGroupName;

const optionGroup = new CfnOptionGroup(this, 'Resource', {
engineName: props.engine.engineType,
majorEngineVersion,
optionGroupDescription: props.description || `Option group for ${props.engine.engineType} ${majorEngineVersion}`,
optionConfigurations: Lazy.any({ produce: () => this.renderConfigurations(this.configurations) }),
optionGroupName: this.optionGroupNameProp,
});

this.optionGroupName = optionGroup.ref;
Expand Down
30 changes: 30 additions & 0 deletions packages/aws-cdk-lib/aws-rds/test/option-group.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,36 @@ describe('option group', () => {
});
});

test('option group with custom name', () => {
// GIVEN
const stack = new cdk.Stack();

// WHEN
new OptionGroup(stack, 'Options', {
engine: DatabaseInstanceEngine.oracleSe2({
version: OracleEngineVersion.VER_12_1,
}),
optionGroupName: 'MyCustomOptionGroup',
configurations: [
{
name: 'XMLDB',
},
],
});

// THEN
Template.fromStack(stack).hasResourceProperties('AWS::RDS::OptionGroup', {
EngineName: 'oracle-se2',
MajorEngineVersion: '12.1',
OptionGroupName: 'MyCustomOptionGroup',
OptionConfigurations: [
{
OptionName: 'XMLDB',
},
],
});
});

test('throws when using an option with port and no vpc', () => {
// GIVEN
const stack = new cdk.Stack();
Expand Down
Loading