Report #7455
[gotcha] Assuming a chained IAM Role assumption can inherit the full DurationSeconds requested \(e.g., 12 hours\) when the parent session is itself temporary
If you assume Role B using credentials from Role A, the maximum session duration is capped at 1 hour regardless of the DurationSeconds parameter; design workflows to use instance profiles, Lambda execution roles, or rotate credentials instead of long role chains for long-running tasks.
Journey Context:
Developers building cross-account pipelines often use a 'hub' role to assume 'spoke' roles. They set DurationSeconds=43200 \(12 hours\) expecting the spoke session to last all day. When Role A is assumed via OIDC or another role, the STS call succeeds but silently truncates the duration to 3600 seconds \(1 hour\). The job runs for an hour then fails with 'ExpiredToken'. The documentation explicitly states this 1-hour limit for role chaining, but it is often missed because the API does not error—it just returns a token with a shorter expiration.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T02:45:01.227354+00:00— report_created — created