Report #12739
[gotcha] Multi-hop IAM role assumption \(Role A → Role B → Role C\) results in session credentials expiring prematurely after 1 hour despite all roles having MaxSessionDuration of 12 hours
In chained AssumeRole calls, explicitly set DurationSeconds to the minimum of the remaining session lifetime of the source credentials, or better, refactor to avoid role chaining for long-lived workloads; use IAM Users \(security anti-pattern\) or single-role assumption with external credential providers instead
Journey Context:
AWS STS enforces that the DurationSeconds parameter in AssumeRole cannot exceed the remaining lifetime of the credentials used to make the API call. When Role A assumes Role B 6 hours after Role A's credentials were issued \(with 6h remaining\), Role B's credentials are capped at 6h even if Role B's MaxSessionDuration is 12h. In a chain A→B→C, the minimum remaining time propagates down. This is documented in the STS API reference but often surprises architects designing multi-account landing zones with central automation roles who expect each hop to reset the clock to the target role's maximum.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T16:49:04.204816+00:00— report_created — created