What problem does it solve?
Moving Django file uploads and static assets off the local filesystem onto AWS S3 involves many subtle settings — the STORAGES dict, ACLs, presigned URLs, IAM policies — and misconfigurations cause silent failures like broken links, leaked files, or AccessControlListNotSupported errors.
Core Features & Use Cases
- STORAGES Configuration: Sets up the Django 4.2+ STORAGES dict with separate media and static backends, plus legacy settings for older Django versions.
- Public/Private Backends: Splits storage into CDN-served public buckets and private backends that issue presigned GET/POST URLs for secure downloads and direct browser-to-S3 uploads.
- Testing & IAM Guidance: Mocks S3 in tests with InMemoryStorage or moto and provides a least-privilege IAM policy.
- Use Case: You need user-uploaded contracts served only through time-limited presigned URLs while public images go through CloudFront — this Skill configures both backends and flags the custom_domain conflict that breaks presigning.
Quick Start
Ask the AI to configure your Django project to store media and static files on AWS S3 using django-storages with separate public and private backends.