diff --git a/packages/@aws-cdk/core/lib/stack.ts b/packages/@aws-cdk/core/lib/stack.ts index 953587a40dec3..f913377b54a20 100644 --- a/packages/@aws-cdk/core/lib/stack.ts +++ b/packages/@aws-cdk/core/lib/stack.ts @@ -966,16 +966,8 @@ function mergeSection(section: string, val1: any, val2: any): any { return val1 ?? val2; case 'Transform': return mergeSets(val1, val2); - case 'Resources': - case 'Conditions': - case 'Parameters': - case 'Outputs': - case 'Mappings': - case 'Metadata': - return mergeObjectsWithoutDuplicates(section, val1, val2); default: - throw new Error(`CDK doesn't know how to merge two instances of the CFN template section '${section}' - ` + - 'please remove one of them from your code'); + return mergeObjectsWithoutDuplicates(section, val1, val2); } } diff --git a/packages/@aws-cdk/core/test/test.rule.ts b/packages/@aws-cdk/core/test/test.rule.ts index 34a3915daf152..8fa7ae9920fc7 100644 --- a/packages/@aws-cdk/core/test/test.rule.ts +++ b/packages/@aws-cdk/core/test/test.rule.ts @@ -29,4 +29,20 @@ export = { test.done(); }, + + 'a template can contain multiple Rules'(test: Test) { + const stack = new Stack(); + + new CfnRule(stack, 'Rule1'); + new CfnRule(stack, 'Rule2'); + + test.deepEqual(toCloudFormation(stack), { + Rules: { + Rule1: {}, + Rule2: {}, + }, + }); + + test.done(); + }, };