Skip to content

Commit 166967f

Browse files
authored
fix(events): event bus fails with duplicate policy resource (#28521)
#27340 introduced the ability to create multiple event bus policies on a single event bus. To facilitate this, the logical Id was changed from `"Policy"` to the statementId. This triggers a replacement, which fails in CloudFormation because the statement ID does not change. The idea behind this PR is simple -- we are updating the statement ID of the policy to trigger a change for anyone who updates to the new version. I think we are okay with this change because no one should be depending on the statementIds of their policies. And since the policy is not a stateful resource, updating the policy should not harm anyone. I have checked the feasibility of this PR on my own, hence the lack of an integ test. closes #28520 ---- *By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
1 parent ca91626 commit 166967f

File tree

9 files changed

+57
-36
lines changed

9 files changed

+57
-36
lines changed

packages/@aws-cdk-testing/framework-integ/test/aws-events/test/integ.eventbus.js.snapshot/IntegTestEventBusStackDefaultTestDeployAssertE6DF8EA9.assets.json

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/@aws-cdk-testing/framework-integ/test/aws-events/test/integ.eventbus.js.snapshot/Stack.assets.json

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/@aws-cdk-testing/framework-integ/test/aws-events/test/integ.eventbus.js.snapshot/Stack.template.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"Name": "StackBusAA0A1E4B"
77
}
88
},
9-
"BusStatement1B4D0336C": {
9+
"BuscdkStatement1D7D87B9D": {
1010
"Type": "AWS::Events::EventBusPolicy",
1111
"Properties": {
1212
"EventBusName": {
@@ -39,12 +39,12 @@
3939
"Arn"
4040
]
4141
},
42-
"Sid": "Statement1"
42+
"Sid": "cdk-Statement1"
4343
},
44-
"StatementId": "Statement1"
44+
"StatementId": "cdk-Statement1"
4545
}
4646
},
47-
"BusStatement2B5FB314B": {
47+
"BuscdkStatement2341A5B58": {
4848
"Type": "AWS::Events::EventBusPolicy",
4949
"Properties": {
5050
"EventBusName": {
@@ -77,9 +77,9 @@
7777
"Arn"
7878
]
7979
},
80-
"Sid": "Statement2"
80+
"Sid": "cdk-Statement2"
8181
},
82-
"StatementId": "Statement2"
82+
"StatementId": "cdk-Statement2"
8383
}
8484
}
8585
},

packages/@aws-cdk-testing/framework-integ/test/aws-events/test/integ.eventbus.js.snapshot/cdk.out

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/@aws-cdk-testing/framework-integ/test/aws-events/test/integ.eventbus.js.snapshot/integ.json

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/@aws-cdk-testing/framework-integ/test/aws-events/test/integ.eventbus.js.snapshot/manifest.json

+24-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/@aws-cdk-testing/framework-integ/test/aws-events/test/integ.eventbus.js.snapshot/tree.json

+14-14
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/aws-cdk-lib/aws-events/lib/event-bus.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -341,10 +341,13 @@ export class EventBus extends EventBusBase {
341341
throw new Error('Event Bus policy statements must have a sid');
342342
}
343343

344-
const policy = new EventBusPolicy(this, statement.sid, {
344+
// In order to generate new statementIDs for the change in https://github.com/aws/aws-cdk/pull/27340
345+
const statementId = `cdk-${statement.sid}`.slice(0, 64);
346+
statement.sid = statementId;
347+
const policy = new EventBusPolicy(this, statementId, {
345348
eventBus: this,
346349
statement: statement.toJSON(),
347-
statementId: statement.sid,
350+
statementId,
348351
});
349352

350353
return { statementAdded: true, policyDependable: policy };

packages/aws-cdk-lib/aws-events/test/event-bus.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -548,7 +548,7 @@ describe('event bus', () => {
548548

549549
// THEN
550550
Template.fromStack(stack).hasResourceProperties('AWS::Events::EventBusPolicy', {
551-
StatementId: '123',
551+
StatementId: 'cdk-123',
552552
EventBusName: {
553553
Ref: 'BusEA82B648',
554554
},
@@ -569,7 +569,7 @@ describe('event bus', () => {
569569
],
570570
},
571571
},
572-
Sid: '123',
572+
Sid: 'cdk-123',
573573
Resource: {
574574
'Fn::GetAtt': [
575575
'BusEA82B648',

0 commit comments

Comments
 (0)