S3 Storage Configuration
Connect your own S3 or S3-compatible storage bucket to store session replay data. This feature is available on the Growth plan ($199/month) and gives you complete control over your data storage location.
Why Use Your Own S3 Bucket?
- Data Sovereignty: Keep all data within your own infrastructure
- Compliance: Meet GDPR, HIPAA, and data residency requirements
- Control: Manage retention, encryption, and access policies yourself
- Cost Optimization: Use your existing storage infrastructure or preferred provider
Supported Providers
Monoscope works with AWS S3 and any S3-compatible object storage:
- AWS S3 (native support)
- MinIO (self-hosted)
- DigitalOcean Spaces
- Cloudflare R2
- Backblaze B2
- Any S3-compatible storage
Required IAM Permissions
Create an IAM policy with the following permissions for your S3 bucket:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:PutObject",
"s3:CreateBucket"
],
"Resource": [
"arn:aws:s3:::your-bucket-name",
"arn:aws:s3:::your-bucket-name/*"
]
}
]
}
Replace your-bucket-name with your actual bucket name.
Configuration Fields
Navigate to Settings → S3 Storage in your project dashboard.
| Field | Required | Description |
|---|---|---|
| Access Key ID | Yes | Your AWS/S3 access key |
| Secret Access Key | Yes | Your AWS/S3 secret key |
| Region | Yes | S3 region (e.g., us-east-1, eu-west-1) |
| Bucket Name | Yes | Name of your S3 bucket |
| Custom Endpoint | No | Endpoint URL for S3-compatible providers |
The Custom Endpoint field is only needed for non-AWS S3-compatible providers like MinIO or DigitalOcean Spaces.
Setup Guide for AWS S3
Step 1: Create an S3 Bucket
- Go to the AWS S3 Console
- Click Create bucket
- Enter a unique bucket name
- Select your preferred region
- Keep other settings as default or configure as needed
- Click Create bucket
Step 2: Create an IAM User
- Go to the IAM Console
- Click Users → Create user
-
Enter a username (e.g.,
monoscope-s3-user) - Click Next
- Select Attach policies directly
- Click Create policy and paste the JSON policy above
- Attach the policy to the user
- Click Create user
Step 3: Generate Access Keys
- Select your newly created user
- Go to Security credentials tab
- Click Create access key
- Select Third-party service
- Copy the Access Key ID and Secret Access Key
Important: Store your secret access key securely. You won't be able to view it again after this step.
Step 4: Configure in Monoscope
- Go to your project in Monoscope
- Navigate to Settings → S3 Storage
-
Enter your credentials:
- Access Key ID
- Secret Access Key
- Region (e.g.,
us-east-1) - Bucket Name - Click Save
Monoscope will validate the connection. If successful, you’ll see a Connected status.
Setup for Other Providers
MinIO
For MinIO, use the Custom Endpoint field:
-
Endpoint: Your MinIO server URL (e.g.,
https://minio.example.com) -
Region: Usually
us-east-1(or as configured) - Access Key / Secret Key: Your MinIO credentials
DigitalOcean Spaces
-
Endpoint:
https://<region>.digitaloceanspaces.com(e.g.,https://nyc3.digitaloceanspaces.com) -
Region: Your Spaces region (e.g.,
nyc3) - Access Key / Secret Key: Generate from DigitalOcean API settings
Cloudflare R2
-
Endpoint:
https://<account-id>.r2.cloudflarestorage.com -
Region:
auto - Access Key / Secret Key: Generate R2 API tokens in Cloudflare dashboard
Data Storage Format
Session replay data is stored as JSON files in your bucket:
-
File naming:
{session-id}.json - Content: Array of rrweb events for session replay
- Format: Standard JSON, easily readable and exportable
Connection Status
After saving your configuration, Monoscope validates the connection by checking if the bucket exists. The status indicator shows:
- Connected: Bucket is accessible and ready to use
- Not connected: Check your credentials or bucket permissions
Removing S3 Configuration
To revert to Monoscope’s default storage:
- Go to Settings → S3 Storage
- Click Remove S3 Configuration
- Confirm the removal
Your existing data in your S3 bucket will remain intact but Monoscope will stop writing new data there.
Next: Integrations