Skip to main content

AWS S3 Bucket Policy Generator

Build AWS S3 bucket policy JSON visually. Choose a template or configure principal, actions, resource, and conditions manually — then copy the ready-to-use JSON for the AWS Console or Terraform.

✓ 60K+ developers trust DevPlaybook ✓ Runs 100% in your browser ✓ Common templates included

Quick Templates

Policy Builder

 

Paste this into the S3 bucket policy editor in the AWS Console, or use aws s3api put-bucket-policy.

Frequently Asked Questions

What is an S3 bucket policy?▼

An S3 bucket policy is a resource-based IAM policy attached directly to an S3 bucket. It controls who can access the bucket and what actions they can perform — without needing to configure per-user IAM roles. Use it for public read access, cross-account sharing, CloudFront OAI, and IP-based restrictions.

What is the difference between s3:GetObject and s3:ListBucket?▼

s3:GetObject allows downloading individual objects. s3:ListBucket allows listing the contents of the bucket. For a public static website you typically need both. They apply to different resources: ListBucket applies to the bucket ARN, GetObject applies to the bucket's objects (arn:aws:s3:::my-bucket/*).

How do I restrict access to a specific IP range?▼

Add a condition with key aws:SourceIp and a list of CIDR blocks as the value. For example: {"aws:SourceIp": ["203.0.113.0/24", "198.51.100.5/32"]}. Use IpAddress to allow those IPs, or NotIpAddress with Effect: Deny to block everything else.

What is a CloudFront Origin Access Identity (OAI)?▼

An OAI is a special CloudFront identity that lets you restrict S3 bucket access so objects can only be served through CloudFront, not accessed directly. The policy allows s3:GetObject for the principal arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <OAI-ID>.

What is the Principal field?▼

Principal defines who the policy applies to. Use "*" for everyone (public). Use an AWS account ID for cross-account access. Use a specific IAM user, role, or service ARN for scoped access. The format is {"AWS": "arn:aws:iam::account-id:role/role-name"} or {"Service": "cloudfront.amazonaws.com"} for services.

Should I use Allow or Deny?▼

In most S3 bucket policies you use Effect: Allow with your intended principals and actions. Only add explicit Deny statements when you need to override an Allow — for example, to block HTTP (require HTTPS) or deny access from outside a VPC. An explicit Deny always wins over any Allow.

Share this tool: X / Twitter LinkedIn
✓ 60,000+ developers use DevPlaybook ★★★★★ 4.8 / 5 on Gumroad ✓ MIT licensed · Instant download ✓ No login required

Related Products

on Gumroad

You Might Also Need

More Free Tools

Enjoying this tool? Get more like it.

Weekly developer tool guides, productivity playbooks & AI tricks. Free. No spam.

DevPlaybook Pro 7 days free

Unlock AI-Powered Dev Tools

  • ⚡ AI Code Review, Doc Generator & SQL Builder
  • ⚡ All premium templates & early access
  • ⚡ Member discounts on Gumroad products
Start Free Trial →

$9/mo after trial · Cancel anytime

Want the full toolkit?

Get DevPlaybook Pro

Every template, guide, boilerplate, and automation script in one bundle. 13 premium products — grab them all at once and save big.

$79
$241 separately Save $162 (67% off)
Get DevPlaybook Pro — $79 →

MIT licensed · Instant download · No subscription

See what's included → Browse all deals →