Examples / AWS

How does one EventBridge event feed both a pipeline and an archive?

Updated

Put the chain in parentheses: EventBridge -> {(SQS -> Lambda -> DynamoDB), S3}. The braces send the event to two branches at once, and the parentheses make the first branch a three-hop chain rather than a single box. S3 gets the raw copy. In the animation both copies leave EventBridge in the same instant; the S3 copy has landed while the other is still on its way to DynamoDB.
Event Pipeline Diagram: EventBridge to SQS, Lambda and S3. The same event goes down a three-hop chain and straight into S3 at the same time. Services drawn: EventBridge, SQS, Lambda, DynamoDB, S3.
A still of the animation above. Every export embeds the diagram source.

THE TEXT THAT DRAWS IT

EventBridge -> {(SQS -> Lambda -> DynamoDB), S3}

Edit it in the box above and the diagram redraws as you type. Export it as an animated GIF, WebM, WebP or MP4 video, or a still PNG or PDF, every format free. WebM and PNG export here; the rest are in the app after a free sign-up. Every format embeds this text, so the file can be read back into the editor.

WHAT IT SHOWS

EventBridge gets the event and sends it two ways at once. One branch is a pipeline of its own, SQS buffering, a Lambda transforming, DynamoDB storing the result. Its sibling is a single hop into S3 with the event untouched.

Parentheses do the work. Inside { } each comma-separated entry is one box, so without them SQS -> Lambda -> DynamoDB would be read as a single service with that entire string as its name (the parser splits the group on commas and leaves the arrows alone). Wrap it in ( ) and it counts as one entry that happens to be a chain. It takes one row and runs across three columns; S3 sits on the row below, under SQS, and stops there.

Watch the animation. Both copies leave the bus in the same instant, and by the time the S3 copy has landed the other one is still sitting in the queue with two hops to go.

I would keep the raw branch even when nobody has asked for it. That table on the top row holds whatever this version of the Lambda made of each event, and if that version had a bug you cannot get the input back out of the output. The S3 copy is the input. Re-drive it through the fixed function and the table is correct again.

QUESTIONS

What do the parentheses in the DSL do?
They turn one branch into a chain. Each comma-separated entry inside braces is normally a single box, and without the parentheses SQS -> Lambda -> DynamoDB would be drawn as one box with that whole string as its name. Wrapped in parentheses it is three boxes on one row, and the message keeps travelling hop by hop after the broadcast.
Why archive raw events next to the processing chain?
So you can replay. The DynamoDB table holds whatever this version of the Lambda made of each event, and if that version had a bug you cannot get the input back out of the output. The S3 copy is the input, untouched, and you can re-drive it through the fixed function.

MORE AWS PATTERNS

Also on this site: RAG pipeline diagram, Multi-agent router diagram, ReAct tool-calling diagram, Human-in-the-loop diagram, MCP architecture diagram and Cloudflare Workers diagram. See all 10 patterns.

Chartado is a text-to-diagram tool: you type lines like A -> B, it draws the architecture and animates the flow.