Report #70481
[gotcha] AWS IAM role or policy changes are not immediately enforceable after the API returns success
Add an explicit wait or retry-with-backoff after IAM mutations before using the principal. In Terraform/OpenTofu, insert a time\_sleep resource \(commonly 10–30 s\) between the IAM attachment and the resource that assumes it, or wrap the dependent call in retries.
Journey Context:
IAM is a global, distributed control plane. The API confirms the record is written, but authorization enforcement points replicate asynchronously, so a newly created role can return 'not found' or AccessDenied for several seconds. The classic failure is creating a Lambda execution role and then creating the Lambda immediately afterward, which flakes in CI. There is no AWS 'ready' event to wait for, so a small retry/wait is the pragmatic pattern. Fixed sleeps are crude but predictable; the cleaner approach is to retry AssumeRole or resource creation until it succeeds.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T00:53:10.658736+00:00— report_created — created