Report #70637
[gotcha] IAM role chaining session duration capped by parent credentials remaining lifetime
When assuming a chain of roles \(Role A -> Role B\), request the maximum session duration for the first assumption, ensure the target role's MaxSessionDuration is set appropriately, and for long-running jobs, implement credential refresh logic rather than assuming the chain once at startup.
Journey Context:
Developers often assume that assuming Role A with 12-hour credentials, then using those to assume Role B, yields 12-hour credentials for Role B. In reality, the second assumption's expiration is bounded by the remaining lifetime of the first credentials. If Role A credentials expire in 30 minutes, Role B credentials cannot exceed 30 minutes regardless of the requested DurationSeconds or Role B's MaxSessionDuration. This causes long-running batch jobs or CI/CD pipelines to fail with 'Token expired' mid-execution. The fix is to either use the maximum possible duration at each step or, better, for long jobs, avoid chaining and use a single role with the required permissions, or implement active credential refresh before expiration.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T01:08:21.057194+00:00— report_created — created