Overview and basic concepts
Event bus makes it easier to build event-driven applications at scale. An event bus is fully serverless. There are no servers to provision, patch, and manage. It automatically scales based on the number of events ingested, and you pay only for events published into your event bus. Events can be published from your custom apps. It is also possible for event bus to receive events from SaaS partner applications and services.
When to use
Event buses make it easier to connect applications. In Stacktape, you can seamlessly integrate a batch-job or a function with event bus, which enables triggering them in a reaction to published events.
- Pay-per-use - You are NOT paying for event-bus being deployed. You are only paying for the events published to the event-bus. AWS charges $1.00 per million events published.
- Scaling - Event buses are able to digest thousands of events per second. Exact limits differ based on the region and can be found in AWS docs. Most of these limits are soft and can be increased. There are virtually almost no limits.
- Security - Event buses are robustly secured by default. Events can be published from your functions, batch-jobs or container-workloads.
- Integrating with workloads - Thanks to event-bus integration, you can easily trigger your function or batchJob as a reaction to specific event.
Type: string "event-bus"
Specifies the partner event source that the new event bus will be matched with.
- Required only if you are using a partner event bus (3rd party)
Enables event archivation and sets retention to provided value
- Archivation can be used to safely store and re-process past events
Overrides one or more properties of the specified child resource.
- Child resources are specified using their cloudformation logical id (e.g.
- To see all configurable child resources for given Stacktape resource, use
stacktape stack-info --detailedcommand.
- To see the list of properties that can be overridden, refer to AWS Cloudformation docs.
No properties need to be specified when creating event-bus.
Integrating with workloads
Events published into event-bus can easily trigger:
Following example shows:
- myEventBus - event-bus, which is used as a bridge between myPublisherFunction and myConsumerBatchJob
- myHttpApi - http-api-gateway, which is integrated with and triggers myPublisherFunction
- myPublisherFunction - function, which receives events (requests) from myHttpApi and decides whether to publish BUDGET_ANALISYS event to myEventBus
- myConsumerBatchJob - batch-job, which is integrated with myEventBus and is triggered by BUDGET_ANALISYS event (published by myPublisherFunction)
Copyvariables:eventName: 'BUDGET_ANALYSIS'resources:myEventBus:type: 'event-bus'myPublisherFunction:type: 'function'properties:packaging:type: stacktape-lambda-buildpackproperties:entryfilePath: 'lambdas/event-bus-publisher.ts'environment:- name: EVENT_NAMEvalue: $Var().eventName- name: EVENT_BUS_NAMEvalue: $Param('myEventBus', 'EventBus::Name')# granting access for function to publish events into myEventBusaccessControl:allowAccessTo:- 'myEventBus'events:- type: http-api-gatewayproperties:httpApiGatewayName: 'myHttpApi'method: 'GET'path: '/budget-analysis'myConsumerBatchJob:type: batch-jobproperties:container:packaging:type: stacktape-image-buildpackproperties:entryfilePath: 'batch-jobs/event-bus-consumer'resources:cpu: 1memory: 200# batch-job is triggered if myEventBus receives event that matches the specified eventPatternevents:- type: event-busproperties:eventBusName: myEventBuseventPattern:detail:EventName:- '$Var().eventName'myHttpApi:type: 'http-api-gateway'
- Event buses support event archiving.
- The archive can be at any time replayed into the event-bus.
- This can be helpful when a problem occurs in the system and you want to replay events after the problem is fixed.
Copyresources:myBus:type: event-busproperties:archivation:enabled: true
Enables event archivation
- Disabling of archive results in deletion of the archive
Configures retention period for events in this event bus
- By default event are retained indefinitely
The following parameters can be easily referenced using $ResourceParam directive directive.
To learn more about referencing parameters, refer to referencing parameters.
Arn of the event bus
Arn of the event bus archive (available only if the archivation is enabled)