Je had messaging begroot op veertig cent per miljoen requests, en toen kwam de AWS-factuur binnen die drie keer hoger was dan je berichtenaantal suggereerde. De boosdoener is geen prijsverhoging. Het is de 64 KB-chunkregel: AWS factureert geen logisch bericht, maar elk 64 KB-chunk van de payload bij elke API-aanroep die het raakt. Een orderevent van 200 KB is vier factureerbare requests wanneer je het verstuurt, nog eens vier wanneer een worker het ontvangt, en nog eens vier wanneer de worker het verwijdert. Twaalf kostenposten voor één bericht, nog voordat SNS fan-out het weer vermenigvuldigt.
Dit artikel legt uit hoe SQS en SNS requests daadwerkelijk tellen, wat dat kost bij realistische volumes, waarom productieberichtgeving thuishoort in de kostprijs van verkopen in plaats van in overhead, en hoe je het boekt zodat je brutomarge de waarheid vertelt.
Hoe SQS één bericht omzet in veel factureerbare requests
De SQS-prijstelling lijkt bedrieglijk eenvoudig: Standard-queues kosten ongeveer veertig cent per miljoen requests, FIFO-queues ongeveer vijftig cent per miljoen, waarbij de eerste miljoen Standard-requests per maand gratis zijn. De complexiteit schuilt in de definitie van een request.
Elk 64 KB-chunk is een request
Elk begonnen 64 KB-chunk van de payload telt als een eigen request. Een bericht van 30 KB is één request. Een bericht van 64 KB is één request. Een bericht van 65 KB is twee. Een bericht van 200 KB is vier, een bericht van 256 KB is vier, en een payload van 1 MB is zestien.
Dat laatste getal is belangrijker dan vroeger. In augustus 2025 verhoogde AWS de maximale SQS-berichtgrootte van 256 KB naar 1 MB voor zowel Standard- als FIFO-queues. De extra ruimte is handig voor het incidentele grote event, maar alles wat je boven 64 KB parkeert, betaalt de chunkvermenigvuldiger bij elke aanraking. Een team dat van gemiddeld 50 KB naar 200 KB payloads gaat, verviervoudigt zijn SQS-requestaantal zonder ook maar één extra bericht te versturen.
Elke API-actie telt afzonderlijk
Elke API-actie op een queue is een request, en de chunkvermenigvuldiger geldt voor elk daarvan. Versturen, ontvangen, verwijderen en het wijzigen van de zichtbaarheid van een bericht worden elk afzonderlijk gemeten.
Loop de volledige levenscyclus door van één bericht van 200 KB op een Standard-queue. Het versturen is vier factureerbare requests. Het ontvangen door de worker is nog eens vier. Het verwijderen na succesvolle verwerking is nog eens vier. Eén logisch bericht, twaalf factureerbare requests, ruwweg een halve cent per duizend tegen listprijzen. Dezelfde levenscyclus voor een bericht van 30 KB is drie requests in totaal. Payloadgrootte is de dominante variabele in de meeste SQS-facturen, niet het berichtenaantal.
Twee andere meters verrassen beginnende operators. Lege ontvangsten zijn factureerbaar: elke poll die geen berichten oplevert telt nog steeds als een request, dus een agressieve short-poll-lus op een inactieve queue verbrandt geld voor niets. En FIFO-queues dragen een premie van ongeveer 25 procent boven Standard in elke volumelaag, wat snel oploopt wanneer de chunkvermenigvuldiger al tegen je werkt. Gebruik FIFO waar ordening en exactly-once-verwerking echte vereisten zijn, en Standard overal elders.
Hoe SNS het een tweede keer vermenigvuldigt
SNS voegt een tweede facturatiedimensie toe, omdat een gepubliceerd bericht één keer wordt gemeten bij aankomst en nog eens bij elke levering.
Publicaties en leveringen zijn afzonderlijke meters
Publiceren naar een topic kost ongeveer vijftig cent per miljoen requests, op dezelfde manier gechunkt: een publicatie van 256 KB telt als vier. Elke levering aan elke subscriber wordt vervolgens ook per 64 KB-chunk gemeten, met een tarief dat afhangt van het leveringsprotocol.
Niet alle leveringen kosten hetzelfde. Leveringen aan SQS-queues, Lambda-functies en Firehose-streams dragen geen leveringskosten, waardoor SNS-naar-SQS fan-out aan de leveringskant vrijwel gratis is. HTTP- en HTTPS-leveringen, e-mail en mobiele push worden gemeten, en sms wordt apart geprijsd per berichtsegment. Een event van 256 KB dat wordt uitgefand naar drie SQS-queues en één HTTP-webhook kost dus vier publicatierequests, nul voor de drie SQS-leveringen, en vier HTTP-leveringen. Verklein dat event tot onder 64 KB en dezelfde fan-out kost één publicatie plus één HTTP-levering.
SNS volgde SQS in september 2026 naar grotere payloads, met berichten tot 1 MB achter een maximum-grootte-instelling op topicniveau. Topics die boven 256 KB zijn geconfigureerd, kunnen alleen leveren aan SQS, Lambda en Firehose, met maximaal honderd subscriptions. Die beperking is een hint over het bedoelde patroon: grote events horen in een queue-backed pipeline, niet naar elk protocol geblast.
Waarom fan-out toch wint
De leveringsmeter verleidt teams om SNS over te slaan en dubbele SQS-berichten rechtstreeks naar elke consumer te sturen. Weersta dat. Dubbele verzendingen vermenigvuldigen het duurste deel van de cyclus, de verzending plus ontvangst plus verwijdering per consumer, terwijl SNS-naar-SQS fan-out één publicatie en nul SQS-leveringskosten per subscriber betaalt. Wanneer meerdere consumers hetzelfde event nodig hebben, is fan-out zowel de schonere architectuur als de goedkopere factuur.
Wat dit kost bij echt volume
Listprijzen zijn per-miljoen-getallen die alleen zin hebben als je ze doorrekent, dus hier zijn drie realistische vormen.
Een hobbyproject dat 2 miljoen kleine berichten per maand via één Standard-queue verstuurt, betaalt vrijwel niets. Elk bericht onder 64 KB kost één verzending, één ontvangst en één verwijdering, ofwel 6 miljoen requests. Het eerste miljoen is gratis, waardoor 5 miljoen overblijft tegen veertig cent per miljoen: ongeveer twee dollar.
Een middelgroot SaaS-platform dat 5 miljoen notificaties van 10 KB per maand publiceert naar een Standard-topic met drie SQS-subscribers en één HTTP-webhook, betaalt een getal met één cijfer voor het SNS-deel. Publicaties kosten ongeveer twee dollar en vijftig cent. De drie SQS-leveringen zijn gratis. HTTP-leveringen kosten ongeveer drie dollar tegen zes cent per honderdduizend. De downstream SQS-API-acties verdubbelen het totaal ruwweg, waardoor de hele notificatiepipeline onder de vijftien dollar per maand blijft. Dit is de vorm waarin messaging echt verwaarloosbaar is.
Speel nu diezelfde SaaS-workload opnieuw af met payloads van 200 KB, omdat elk event een volledig orderdocument bevat. Elke meter verviervoudigt. Publicaties springen naar tien dollar, HTTP-leveringen naar twaalf, en de downstream SQS-ontvangsten en -verwijderingen verviervoudigen ook. De pipeline komt uit op bijna zestig dollar per maand, nog steeds klein in absolute termen, maar vier keer de kosten van dezelfde workload met lean events, en het verschil wordt groter naarmate het volume groeit. Bij 500 miljoen gechunkte requests per maand is het verschil tussen lean en opgeblazen events een jaarlijkse kostenpost van vier cijfers.
Volumelagen bestaan, maar zijn zelden relevant voor kleine bedrijven: Standard-requests dalen in prijs voorbij 100 miljard en 200 miljard requests per maand. Je realistische hefboom is niet de laag, maar de gemiddelde chunkfactor.
Waarom productieberichtgeving variabele COGS is, geen overhead
Berichtgeving die je product aan betalende klanten levert, is een directe kostprijs van omzet. Het schaalt met gebruik, het verdwijnt wanneer er niets verkocht wordt, en investeerders verwachten het boven de brutomargelijn te zien, samen met compute, database, opslag en bandbreedte voor productie.
Boekhoudstandaarden laten hier ruimte: algemeen aanvaarde principes definiëren de kostprijs van verkopen niet precies, en de SaaS-brutomargepraktijk vult die leemte met een directe-kostentoets. Vraag of de uitgave bestaat om klanten in productie te bedienen. Productie-queues met orderevents, notificatietopics die uitfannen naar klantgerichte workers, en webhookleveringen aan klanteindpunten slagen allemaal. Staging-queues, load-test-topics, developer-sandbox-subscriptions en de dead-letter-queue die de loadtest van vorig kwartaal leegmaakt, niet. Die horen bij onderzoek en ontwikkeling of algemene overhead.
De productiegrens is het hele spel. Eén AWS-factuur gooit elke queue en elk topic op één hoop, dus tag productieresources en splits de factuur elke maand. Teams die de splitsing overslaan, vergissen zich meestal in de flatterende richting, begraven infrastructuur in overhead en rapporteren een brutomarge die hun unit economics niet kunnen verdedigen. Een due-diligence-onderzoek herclassificeert het in een middag, en de herziene marge is nooit de hogere.
Boek het netto bedrag dat je daadwerkelijk betaalt. De gratis laag is een factureringskorting, geen omzet, dus er valt niets op te hogen. Als je inzicht wilt in hoeveel van de workload de gratis laag absorbeert, volg factureerbare requests dan apart in je metrics en houd de journaalpost op contante kostprijs.
Hoe je het boekt zodat je marge de waarheid vertelt
Geef messaging een eigen kostprijs-van-omzet-rekening in plaats van het te mengen in een generieke cloud- of softwarelijn. Een toegewijde rekening zoals cloud messaging laat je de maanduitgave delen door de factureerbare requests van de maand en je werkelijke kosten per gechunkt request zien, het getal dat je vertelt of payloadgroei je marge opeet.
De AWS-kosten worden na maandeinde afgerekend, dus accrueer ze. Schat het messaging-deel bij afsluiting op basis van je requestmetrics, corrigeer naar de factuur wanneer die binnenkomt, en houd het sandbox-deel buiten de kostprijs van omzet. Hier is een volledige cyclus voor een maand waarin productieberichtgeving achttien dollar en veertig cent kostte en de sandbox twee dollar en tien cent toevoegde:
2026-01-01 open Assets:Cash:Operating USD
2026-01-01 open Expenses:CostOfSales:Cloud-Messaging USD
2026-01-01 open Expenses:Research:Cloud-Sandbox USD
2026-01-01 open Liabilities:Accrued:AWS USD
2026-01-31 * "AWS" "January SQS prod 8.2M chunked requests plus SNS publishes and HTTP deliveries"
Expenses:CostOfSales:Cloud-Messaging 18.40 USD
Liabilities:Accrued:AWS -18.40 USD
2026-02-03 * "AWS" "January AWS charge settles, prod messaging plus 2.10 sandbox"
Liabilities:Accrued:AWS 18.40 USD
Expenses:Research:Cloud-Sandbox 2.10 USD
Assets:Cash:Operating -20.50 USDStem het geaccrueerde bedrag minstens maandelijks af met je cost explorer, gegroepeerd per service en gebruikstype. SQS en SNS moeten als afzonderlijke lijnen verschijnen, zodat een piek in de ene zich niet verbergt in de vlakke trend van de andere. Als je je boeken in platte tekst bijhoudt, sluiten de kostentracking-patronen in de docs naadloos aan op een opsplitsing per service voor messaging.
Eén classificatievalkuil om te vermijden: FIFO-premies en opslag voor verlengde retentie zijn nog steeds messaging-kosten, maar verlengde retentie buiten je echte redrive-venster is een opslagkeuze, geen leveringskosten. Verkort de retentie of verplaats het opslagdeel naar waar het hoort, in plaats van een retentiebeleid van veertien dagen stilletjes je kostprijs van omzet te laten opblazen.
Vijf maatregelen die de factuur doorgaans met 30 tot 50 procent verlagen
Begin met long polling en batching. Samen snijden ze de SQS-uitgave routinematig bijna doormidden en kosten ze een middag om te implementeren.
1. Zet long polling overal aan
Stel de receive-wachttijd in op twintig seconden op elke queue. Workers houden dan de verbinding open in plaats van lege polls te hameren, wat de regel voor lege ontvangsten die inactieve-queuefacturen domineert ineen laat storten en CPU-pieken bij consumers afvlakt.
2. Batch elke API-aanroep die het toestaat
Versturen, ontvangen en verwijderen ondersteunen allemaal batches van maximaal tien berichten. Een worker die één bericht per aanroep verwerkt, betaalt tien keer het requestaantal van een worker die er tien tegelijk verwerkt. Batchverwijderingen worden het meest gemist: teams die zorgvuldig batches versturen, verwijderen vaak één voor één.
3. Zet de payload op dieet
Houd elk event onder één 64 KB-chunk. Sla het volledige document op in objectopslag en stuur een verwijzing met de identifiers die de consumer nodig heeft, het claim-check-patroon. Comprimeer waar verwijzingen onpraktisch zijn, en verwijder ingebedde blobs, gedupliceerde klantrecords en uitgebreide debug-context uit het hot path. Elk chunk dat je verwijdert, vermenigvuldigt zich over verzendingen, ontvangsten, verwijderingen, publicaties en leveringen.
4. Filter op het topic
Voeg filter policies toe zodat elke subscriber alleen de events ontvangt die hij verwerkt. Ongefilterde fan-out betaalt levering en downstream verwerking voor berichten die de consumer bij aankomst laat vallen. Dat is pure verspilling met een oplossing van één regel per subscription.
5. Reserveer FIFO voor waar ordening echt is
Audit welke queues echt ordening en deduplicatie nodig hebben. De FIFO-premie geldt voor elk gechunkt request op de queue, dus een FIFO-queue met events die niemand ordent, is een permanente toeslag van 25 procent. Stel tijdens de audit korte retentie in met een dead-letter-queue voor fouten, in plaats van poison messages te laten herhalen tot een groot requestaantal.
Monitor de twee metrics die de factuur voorspellen: het geschatte aantal verzonden berichten en het aantal lege ontvangsten. Alarmeer wanneer lege ontvangsten een klein aandeel van de totale ontvangsten overschrijden, en beoordeel de gemiddelde payloadgrootte per queue per kwartaal. Payloadgroei is geleidelijk genoeg om maand op maand te missen en groot genoeg om jaar op jaar uit te maken.
Maandeinde-checklist voor messaging-kosten
Sluit de cirkel elke maand op dezelfde manier, zodat de cijfers betrouwbaar blijven:
- Haal gechunkte requestaantallen voor SQS en SNS uit je factureringsspecificatie, niet de logische berichtenaantallen uit applicatielogs.
- Deel de uitgave van elke service door zijn gechunkte requests om de werkelijke kostprijs per eenheid te krijgen, en vergelijk die met de listbenchmarks van veertig en vijftig cent.
- Bereken de gemiddelde chunkfactor per queue door factureerbare requests te delen door logische berichten; alles boven 1,2 verdient een payloadreview.
- Splits productie- van staging- en sandbox-uitgaven met behulp van resourcetags, en bevestig dat alleen productie in de kostprijs van omzet terechtkwam.
- Corrigeer de accrual van vorige maand naar de afgerekende factuur en neem het verschil mee in je schatting.
- Controleer lege ontvangsten als aandeel van de totale ontvangsten, en bevestig dat long polling na elke infrastructuurwijziging nog steeds aan staat.
- Bevestig dat elke nieuwe queue en elk nieuw topic dat tijdens de maand is aangemaakt, de productietags en filter policies heeft geërfd.
Haal de SQS- en SNS-lijnen van deze maand vandaag uit je factureringsconsole en bereken de gemiddelde chunkfactor. Als die boven 1,2 ligt, is je goedkoopste margewinst een kleinere payload, niet een groter plan.





