---
# System prepended metadata

title: AWS Event Driven Architecture Workshop

---

# AWS Event Driven Architecture Workshop

## Admin

https://dashboard.eventengine.run/login

## Intro to Events Drive Architecture

- Events are observerd, not created. A signal for a change of state 
- Can be considered as a contract between event publishers/subscribers
- Important to define clear domain boundaries

*Marketing attempt #1:* Step functions!! for organising business process within a domain

- Coordinating events across domains using Pub/Sub
- EDA are async in nature

**Key Components**
- Event routers - abstract producers and consumbers
- Async events - reduce dependencies
- Event stores - Enhance reliability, persist events

*Marketing attempt #2:* EventBridge is our our event router

**Event structure**

- Event source + Event detail-type = Event indentification
- Detail is whatever payload you want
- Use EventBridge filters to orchestrate which events to subscribe to. Can add additional logic for this

*Marketing attempt #3:* EventBridge can directly integrate with 3rd party services to directly handle events from partners, without any webhook architecture

*Marketing attempt #4:* Over 9000! APIs to integrate with
![](https://i.imgur.com/a7C16jJ.png)

**Schema Registry**
- Discover event schema for event types
- Create strong type bindings based on schema definition (including Go). But no C# support yet :crying_cat_face: 


**SNS**
- For simple Pub/Sub architecture
- Push messages, 1-Many consumers
- Can map event topics to SNS topics. Use event filters for routing

**Event Stores**
- Buffer the messages before processing
- Events are immutable by nature
- 

# Event bus and targets
Our event bus publishes to target log group /aws/events/orders
![](https://i.imgur.com/ReggAg0.png)




# Lambda destinations
![](https://i.imgur.com/0a0jvJY.png)



## Error handling - onFailure
![](https://i.imgur.com/Hh6NF7r.png)



# SNS

## Pub/sub
![](https://i.imgur.com/N0xSh6O.png)

## Example subscription filter policies

```
{
  "quantity": [
    {
      "numeric": [ ">=", 100 ]
    }
  ]
}
```

```
{
  "location": [
    { "prefix": "eu" }
  ],
  "quantity": [
    {
      "numeric": [ ">=", 100 ]
    }
  ]
}
```

