Report #9091
[gotcha] Cross-account S3 access denied despite bucket policy allowing the external account
Grant the IAM identity in the external account permission in its own IAM policy, or use a role in the bucket's account instead of direct cross-account access.
Journey Context:
Developers often assume a bucket policy granting access to another account is sufficient. However, AWS requires 'double authorization': the resource policy \(bucket policy\) AND the identity policy \(IAM policy of the requester\) must both allow the action. If the external account's IAM user lacks s3:GetObject, the request fails even with a permissive bucket policy. Using a role in the target account \(resource-based role assumption\) bypasses this because the role's trust policy and the bucket policy align, avoiding the need for the external identity to have S3 permissions in its own account.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T07:16:36.840376+00:00— report_created — created