DOC: phronis-im
STATUS: ● PUBLISHED
SYSTEM PHRONIS

The IMDS Saga: Five Bugs, One Wrong Parameter Name

A multi-session debugging story that came down to s3.access.key.id vs s3.access.key.

Cover image — The IMDS Saga: Five Bugs, One Wrong Parameter Name

The Iceberg sink, RisingWave writing Parquet to MinIO, took more debugging than any other part of Phronis. Multiple sessions, six related bugs, and the same misleading error the whole way down. The root cause was a parameter name with one extra word.

// 01 — THE SYMPTOM

The sink kept failing with a request to a URL I never configured:

error sending request for url (http://169.254.169.254/latest/api/token)

169.254.169.254 is the AWS EC2 instance metadata service (IMDS), the address a cloud SDK hits to find credentials when none are supplied. But this was MinIO, on my own machine. Why was it asking AWS for credentials?

// 02 — THE FALSE TRAILS

Because the error pointed at credentials, I chased credentials and fixed several real problems that weren’t the root cause:

Each was a genuine bug. None made the IMDS error go away.

// 03 — THE ROOT CAUSE

The credentials were in the config the whole time. They were being silently discarded, because the parameter names were wrong:

s3.access.key.id      →   s3.access.key
s3.secret.access.key  →   s3.secret.key

RisingWave v2.2+ uses the shorter names. The longer ones (which look correct, and match other tools) were simply unrecognized keys, so RisingWave ignored them, found no credentials, and fell through to IMDS. The misleading error was a symptom; the cause was two unrecognized config keys throwing my values on the floor.

// 04 — THE LESSON

Once the names were right, every other fix clicked into place and the sink worked. The whole saga was an exercise in a hard truth: a misleading error sends you debugging the symptom. “Can’t reach IMDS” screamed credentials missing, when the real story was credentials supplied under names nothing was reading.

TAKEAWAYS

NEXT

@frogwebp brand mark
ANTHONY PENA · @FROGWEBP
I build data systems and write about everything around them, the architecture, the failures, what each one teaches me. Documenting in public since 2021: the process, not just the result.

// NEWSLETTER — THE BUILD LOG SIGNAL

When I ship something or learn something worth keeping, it lands here first — build logs, concepts, and the honest process behind them. Come along; no spam, leave anytime.