Supported Providers
- AWS S3: Amazon Simple Storage Service
- Azure Blob Storage: Microsoft Azure Blob Storage
- Google Cloud Storage: Google Cloud object storage
Prerequisites
Before starting, ensure you have:- Access to your chosen cloud provider (AWS, Azure, or Google Cloud)
- Appropriate permissions to create storage resources
- SuprSend deployment environment ready
AWS S3 Setup
Step 1: Create S3 Buckets
Create Private Bucket
Log into AWS Console, navigate to S3 service and create a private bucket with the following settings:
- Region: Choose your preferred region
- Versioning: Enable versioning
- Encryption: Enable server-side encryption (SSE-S3 or SSE-KMS)
- Access: Block all public access
- CORS: Configure CORS to allow PUT operations from your domain
Step 2: Configure CORS
Configure CORS for both buckets to allow PUT operations: CORS Configuration for Both Buckets:Step 3: Configure IAM Policies
Create an IAM user with the following policy:Step 4: Configure Bucket Policies
Private Bucket Policy: For the private bucket, ensure “Block all public access” is enabled. No additional bucket policy is needed as access is controlled via IAM credentials. Public Bucket Policy:Azure Blob Storage Setup
Step 1: Create Storage Account
Log into Azure Portal, navigate to Storage Accounts and create a storage account with the following settings:- Name:
suprsend{environment}storage - Region: Choose your preferred region
- Performance: Standard (recommended)
- Replication: LRS (Locally Redundant Storage) (recommended)
- Access Tier: Hot (recommended)
Step 2: Create Containers
-
Create Private Container:
- Name:
suprsend-private - Access Level: Private
- Versioning: Enable
- Name:
-
Create Public Container:
- Name:
suprsend-public - Access Level: Blob (public read access for blobs only)
- Versioning: Enable
- Name:
Step 3: Configure Access Keys
- Navigate to Access Keys in your Storage Account
- Copy the Account Key (key1 or key2) - this will be used in your SuprSend configuration
Step 4: Configure CORS
- Navigate to your Storage Account → Resource sharing (CORS) → Blob service
- Add the following CORS rule:
- Allowed origins:
https://your-domain.com - Allowed methods:
GET, PUT - Allowed headers:
* - Exposed headers:
* - Max age:
3600
- Allowed origins:
Google Cloud Storage Setup
Step 1: Create GCS Buckets
Create Private Bucket
Log into Google Cloud Console, navigate to Cloud Storage and create a private bucket with the following settings:
- Region: Choose your preferred region
- Storage Class: Standard
- Access Control: Uniform (recommended)
- Versioning: Enable versioning
- Encryption: Google-managed encryption keys
Step 2: Configure Service Account
Create Service Account
- Name:
suprsend-blob-storage - Description: Service account for SuprSend blob storage access
Assign Roles
- Storage Object Admin: For full bucket access
- Storage Object Viewer: For read-only access to public bucket
Step 3: Configure Bucket Permissions
Private Bucket IAM Policy:Step 4: Configure CORS
SuprSend Helm Configuration
This section shows only the Blob Storage-specific configuration. You must also configure other required secrets and values for SuprSend to work properly. See the complete configuration guide: SuprSend Installation Guide
Kubernetes Secret Configuration
First, add the Blob Storage-specific secrets to yoursuprsend-secrets.yaml:
Helm Values Configuration
Then add the following to yoursuprsend-values.yaml (along with other required configuration):
The above configuration goes under
suprsendapi.config section in your suprsend-values.yaml. Configure only the section that matches your chosen blob store provider (S3, Azure, or GCS).Security Best Practices
- Access Control:
- Private Bucket: Restrict access to SuprSend services only
- Public Bucket: Allow public read access for media files
- IAM Policies: Use least privilege principle
- Rotation: Regularly rotate access keys
- Bucket Policies: Implement strict bucket policies
- CORS: Configure CORS only for required origins
- Encryption:
- Server-Side Encryption: Enable for both buckets
- Key Management: Use KMS for additional security (AWS)
- TLS: Ensure all connections use HTTPS
Testing Configuration
AWS S3 Testing
Test Public Bucket Access:Azure Blob Storage Testing
Test Public Container Access:Next Steps
Once your blob store is configured:- Verify Configuration: Test both private and public access
- Update SuprSend: Configure SuprSend to use your blob store
FAQ
AWS S3: Access Denied
AWS S3: Access Denied
- Verify IAM user has correct permissions
- Check bucket policies for public bucket
- Ensure “Block all public access” is enabled for private bucket
AWS S3: CORS or Rate Limiting Issues
AWS S3: CORS or Rate Limiting Issues
- Verify CORS configuration matches your domain
- Monitor API rate limits and consider using CloudFront
Azure Blob Storage: Access Denied
Azure Blob Storage: Access Denied
- Verify the account key is correct
- Check container access levels (private vs blob)
- Ensure the storage account name is correct in the endpoint URL
Azure Blob Storage: CORS or Connection Issues
Azure Blob Storage: CORS or Connection Issues
- Configure CORS in the storage account’s Resource sharing settings
- Verify the endpoint URL format:
https://<accountname>.blob.core.windows.net
General: Configuration, Secret, or Network Issues
General: Configuration, Secret, or Network Issues
- Double-check Helm values match your actual bucket/container names
- Ensure Kubernetes secrets are created in the correct namespace
- Verify egress rules allow connections to cloud storage endpoints