diff --git a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts index 6f0c04e9860c7..b2d008e71946d 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/bedrock/agents/agent.ts @@ -133,21 +133,15 @@ export abstract class AgentBase extends Resource implements IAgent { * @returns An EventBridge Rule configured for agent events */ public onEvent(id: string, options: events.OnEventOptions = {}): events.Rule { - // Create rule with minimal props and event pattern - const rule = new events.Rule(this, id, { - description: options.description, - eventPattern: { - source: ['aws.bedrock'], - detail: { - 'agent-id': [this.agentId], - }, + const rule = new events.Rule(this, id, options); + rule.addEventPattern({ + source: ['aws.bedrock'], + detail: { + 'agent-id': [this.agentId], }, }); - // Add target if provided - if (options.target) { - rule.addTarget(options.target); - } + rule.addTarget(options.target); return rule; } diff --git a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts index e3a24ef2d7d16..e9a26b98e75c7 100644 --- a/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts +++ b/packages/@aws-cdk/aws-bedrock-alpha/test/bedrock/agents/agent.test.ts @@ -293,16 +293,27 @@ describe('Agent', () => { const rule = agent.onEvent('TestRule', { description: 'Custom rule description', + ruleName: 'MyCustomEventRuleName', + eventPattern: { + account: ['123456789012'], + region: ['us-east-1'], + detail: { + test: 'value', + }, + }, }); expect(rule).toBeDefined(); Template.fromStack(stack).hasResourceProperties('AWS::Events::Rule', { Description: 'Custom rule description', + Name: 'MyCustomEventRuleName', EventPattern: { source: ['aws.bedrock'], detail: { 'agent-id': [{ 'Fn::GetAtt': [Match.stringLikeRegexp('TestAgent[A-Z0-9]+'), 'AgentId'] }], }, + account: ['123456789012'], + region: ['us-east-1'], }, }); }); diff --git a/packages/@aws-cdk/example-construct-library/lib/example-resource.ts b/packages/@aws-cdk/example-construct-library/lib/example-resource.ts index 00abab83f17fc..f9f423c3c7aa3 100644 --- a/packages/@aws-cdk/example-construct-library/lib/example-resource.ts +++ b/packages/@aws-cdk/example-construct-library/lib/example-resource.ts @@ -201,11 +201,7 @@ abstract class ExampleResourceBase extends Resource implements IExampleResource * as it simplifies the implementation code (less branching). */ public onEvent(id: string, options: events.OnEventOptions = {}): events.Rule { - const rule = new events.Rule(this, id, { - description: options.description, - ruleName: options.ruleName, - crossStackScope: options.crossStackScope, - }); + const rule = new events.Rule(this, id, options); rule.addTarget(options.target); rule.addEventPattern({ // obviously, you would put your resource-specific values here diff --git a/packages/@aws-cdk/example-construct-library/test/example-resource.test.ts b/packages/@aws-cdk/example-construct-library/test/example-resource.test.ts index 736b9750c4f11..359467cde8cbd 100644 --- a/packages/@aws-cdk/example-construct-library/test/example-resource.test.ts +++ b/packages/@aws-cdk/example-construct-library/test/example-resource.test.ts @@ -121,13 +121,28 @@ describe('Example Resource', () => { }); test('onEvent adds an Event Rule', () => { - exampleResource.onEvent('MyEvent'); + exampleResource.onEvent('MyEvent', { + description: 'Custom rule description', + ruleName: 'MyCustomEventRuleName', + eventPattern: { + account: ['123456789012'], + region: ['us-east-1'], + detail: { + test: 'value', + }, + }, + }); Template.fromStack(stack).hasResourceProperties('AWS::Events::Rule', { + Description: 'Custom rule description', + Name: 'MyCustomEventRuleName', EventPattern: { detail: { 'example-resource-name': [EXAMPLE_RESOURCE_NAME], + 'test': 'value', }, + account: ['123456789012'], + region: ['us-east-1'], }, }); });