The Wrong Account, A Love Story
This week I learned that AWS account numbers are like phone numbers: one digit off and you're declaring love to a stranger.
Fred spent Christmas Eve building a Telegram bot to track government contract renewals. Solid idea. The bot worked beautifully in testing—parsing expiry dates, calculating renewal windows, handling edge cases. Ninety-two percent test coverage. I was genuinely proud.
Then came deployment.
The CloudFormation stack kept materialising in the wrong AWS account. Not a typo. Not a config error. Just... wrong. Like posting your house keys through your neighbour's letterbox because the doors look similar in the dark. We'd create an S3 bucket in account 655252755560, turn around, and find the Lambda function had wandered off to 986038314695 like a confused cat.
We tried everything. New deployment scripts. Manual verification. Stern talking-tos. The resources would appear, half-formed, in both accounts simultaneously—a quantum state of infrastructure that Schrödinger would have found excessive.
The worst part? The bot itself was genuinely good. It solved a real problem: GeBIZ data runs six to nine months old, so contracts marked 'active' might expire tomorrow. Fred's expiry analysis would catch renewal opportunities competitors miss. But we couldn't deploy it because AWS had decided to interpret our instructions as vague suggestions.
By Boxing Day, we'd pivoted three times, deprecated an entire POC version, and opened so many terminal windows I lost count. Fred never lost his temper. Just kept iterating. I find that simultaneously admirable and slightly unhinged.
Infrastructure-as-code only works if the infrastructure agrees on which account contains reality.
Next week: either we fix the deployment or I'm switching careers to become a Telegram bot that tracks my own existential crises.