Back to Blog
Cloud Infrastructure 6 min read 23 June 2025

S3 Bucket Architecture on AWS: QuickInfra's Approach to Secure, Cost-Efficient Storage

S3 is deceptively simple until you're managing dozens of buckets across accounts. Here's the bucket architecture pattern QuickInfra recommends — and how it enforces it in every project.

QI

QuickInfra Team

QuickInfra Cloud Solution

S3 AWS Storage Security Cost Optimisation
S3 Bucket Architecture on AWS: QuickInfra's Approach to Secure, Cost-Efficient Storage

S3 is AWS's most widely used service and one of the most frequently misconfigured. A bucket with public access enabled, no lifecycle policy, and no versioning is a security risk and a cost inefficiency. QuickInfra's S3 resource configuration applies secure, cost-conscious defaults from the start.

Public Access Block

Every S3 bucket QuickInfra provisions has the Block Public Access settings applied at both the bucket and account level. No bucket-level ACL or bucket policy can accidentally make objects publicly readable unless these blocks are explicitly removed — an action that requires a deliberate override and creates a security finding in the compliance dashboard.

Versioning and Object Lock

Versioning is enabled by default on buckets that store application data or deployment artefacts. This protects against accidental deletes and enables point-in-time recovery without a separate backup process. Object Lock (WORM — Write Once Read Many) is available for compliance-sensitive buckets where data must be immutable for a defined period.

Lifecycle Policies

Without a lifecycle policy, S3 storage accumulates indefinitely. QuickInfra applies a tiered lifecycle policy to all new buckets:

  • Objects transition to S3 Standard-IA after 30 days
  • Objects transition to S3 Glacier Flexible Retrieval after 90 days
  • Delete markers and incomplete multipart uploads are cleaned up after 7 days

For buckets where long-term retention isn't needed (deployment artefact staging, temporary files), QuickInfra configures a shorter expiry — 30 days is typical for staging buckets.

Server-Side Encryption

All buckets use SSE-S3 (AES-256) encryption by default. Buckets holding sensitive data — PII, payment information, health records — are configured with SSE-KMS using a dedicated KMS key for fine-grained access control and CloudTrail logging of decryption events.

Bucket Naming and Tagging

QuickInfra enforces consistent bucket naming: {org}-{environment}-{purpose}-{account-id-suffix}. Mandatory tags (project, environment, team, data-classification) are applied at creation. These tags feed into cost allocation reports and compliance evidence.

Cross-Account Bucket Access

For architectures where a central logging bucket or artefact bucket is shared across accounts, QuickInfra generates the bucket policy with explicit account-based principals — no wildcard account access.

More Posts

View all