Skip to main content
Cloud & Security · Developer Error Resolution Lab

Fix AWS S3 'Access Denied (403 Forbidden)' — IAM Policies & Bucket ACLs

Resolve S3 authorization rejections caused by IAM permissions, bucket policies, KMS encryption, or Block Public Access.

Triggered Error Message:

AccessDenied: Access Denied (Status Code: 403; Error Code: AccessDenied)

Customize Solution for Your Environment
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowS3ObjectAccess",
      "Effect": "Allow",
      "Principal": "*",
      "Action": ["s3:GetObject"],
      "Resource": "arn:aws:s3:::my-production-bucket/*"
    }
  ]
}

Root Cause & Mechanism Analysis

Why does this error occur?

IAM user/role lacks `s3:GetObject` or `s3:PutObject` action permissions, S3 Block Public Access is active, or KMS decryption permission is missing.

Frequently Asked Questions

Why is Resource: 'arn:aws:s3:::bucket' not enough for PutObject?
Object-level actions (`GetObject`, `PutObject`) require the trailing wildcard `/*`, whereas bucket-level actions (`ListBucket`) require the bucket ARN itself.
Browse All 35 Guides