Overview
AWS S3 (Simple Storage Service) is Amazon’s industry-standard object storage service, offering high durability, availability, and scalability. It’s one of the most popular choices for cloud storage due to its reliability and extensive feature set. Key features:- High durability - 99.999999999% (11 9’s) durability
- Global availability - Multiple regions worldwide
- Scalable storage - Virtually unlimited storage capacity
- Security features - Encryption, access controls, and compliance
- Integration ecosystem - Works with thousands of AWS services
- S3-compatible API - Easy integration with existing tools
Prerequisites
Before configuring AWS S3:- AWS Account - Create an account at aws.amazon.com
- S3 Bucket - Create a bucket for your files
- IAM User - Create a user with S3 permissions
- API Credentials - Generate access key and secret key
- Domain - Optional custom domain for CloudFront CDN
Configuration Steps
1
Create S3 Bucket
In your AWS Console:
- Go to S3 service
- Select your preferred region from the region selector in the top-right corner
- Click Create bucket
- Choose a unique bucket name (e.g.,
your-app-storage
) - Use default configuration (sufficient for most use cases)
- Click Create bucket
Bucket names must be globally unique across all AWS accounts. Names must be 3-63 characters long, contain only lowercase letters, numbers, dots, and hyphens, and cannot start or end with a dot or hyphen.
2
Configure IAM User
Create an IAM user with S3 permissions:
- Go to IAM > Users > Create user
- Enter username (e.g.,
aikeedo-storage
) - Leave “Provide user access to the AWS Management Console” unchecked (programmatic access only)
- Click Next
- Select “Attach policies directly”
- Search for and select AmazonS3FullAccess policy
- Click Next to review, then Create user
- Go to the user’s Security credentials tab
- Click Create access key
- Select “Application running outside AWS” as the use case
- Click Next to proceed
- Copy the Access key ID and Secret access key
- Save credentials securely
3
Configure CORS
Set up CORS for your domain:
- Go to your S3 bucket
- Click Permissions tab
- Scroll to Cross-origin resource sharing (CORS)
- Click Edit and add this configuration:
- Click Save changes
Replace
yourdomain.com
with your actual domain. For development, you can use *
for AllowedOrigins, but this is not recommended for production.4
Configure in Aikeedo
In your admin panel:
- Go to Settings > Cloud storage > AWS S3
- Toggle Status to Enabled
- Enter Endpoint:
- Go to your S3 bucket in AWS Console
- Copy the Bucket website endpoint or use format:
https://your-bucket.s3.region.amazonaws.com/
- For example:
https://my-app-storage.s3.us-east-1.amazonaws.com/
- Select Region from dropdown (must match your bucket’s region)
- Enter Custom domain (optional CloudFront CDN domain)
- Enter Bucket name: Your S3 bucket name
- Enter Path prefix (optional subfolder)
- Enter Access key: Your IAM access key ID
- Enter Secret key: Your IAM secret access key
- Click Save changes
5
Activate AWS S3
Enable AWS S3 as your storage provider:
- Go to Settings > Storage settings
- In the Adapter dropdown, select AWS S3
- Configure Group files and Secure URLs as needed
- Click Save changes
Configuration Fields
Required fields:- Endpoint - S3 bucket endpoint URL (e.g.,
https://your-bucket.s3.region.amazonaws.com/
) - Region - AWS region where your bucket is located
- Bucket name - Name of your S3 bucket
- Access key - IAM user access key ID for authentication
- Secret key - IAM user secret access key for authentication
- Custom domain - Custom domain for CloudFront CDN (if you have CloudFront distribution set up)
- Path prefix - Optional subfolder within your bucket for organizing files
Troubleshooting
Access denied errors:- Verify IAM user has correct permissions for the specific bucket
- Check bucket policy settings and public access settings
- Ensure access keys are valid and not expired
- Verify bucket name matches exactly (case-sensitive)
- Check CORS configuration in S3 bucket permissions
- Verify allowed origins include your domain (with https://)
- Ensure allowed methods include GET (sufficient for Aikeedo)
- Wait a few minutes for CORS changes to propagate
- Verify bucket name and region are correct
- Check network connectivity to AWS
- Ensure bucket exists and is accessible
- Verify endpoint URL format is correct
- Check if bucket has any restrictions or policies blocking uploads
- Consider using CloudFront CDN for better global performance
- Check if you’re using the correct region for your users
- Monitor AWS CloudWatch for any service issues