Report #79002
[gotcha] IAM AssumeRole session expires at 1 hour despite requesting 12 hours due to role chaining or unconfigured MaxSessionDuration
Avoid role chains \(A→B→C\); set the target role's 'MaxSessionDuration' to 43200 seconds \(12h\) in IAM console; implement credential refresh logic for jobs exceeding 12h
Journey Context:
When assuming a role, the default MaxSessionDuration is 1 hour. Developers often set 'DurationSeconds=43200' in the API call but neglect to raise the IAM role's 'MaxSessionDuration' property, resulting in 1-hour tokens silently. Worse, AWS hard-limits role-chained sessions \(where Role A assumes Role B\) to 1 hour regardless of settings—this is immutable. Long-running ETL jobs using cross-account role assumption therefore die after 60 minutes. The only fix is to have the long-running job assume the target role directly \(no chain\) with both the API and IAM role limits set to 12h, or implement a credential provider that refreshes the token before expiry.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T15:12:07.393687+00:00— report_created — created